Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
aa13e0b
CPack: Proof of concept for making Apple installers
tresf May 12, 2024
fefa368
Formatting, wording
tresf May 12, 2024
349a13f
Remove appdmg dependency
tresf May 12, 2024
3a8174e
Shellcheck
tresf May 12, 2024
08143b4
Shellcheck2
tresf May 12, 2024
87590ae
Document .DS_Store better
tresf May 12, 2024
a6f50ff
Try to fix tiff file
tresf May 12, 2024
615927c
Initial refactoring
tresf May 12, 2024
5c4a986
Minor changes
tresf May 12, 2024
2289655
Convert apple package script to cmake
tresf May 13, 2024
ae049e5
Fix appdmg
tresf May 13, 2024
8443819
Order of operations: Fix broken DMG
tresf May 13, 2024
d95d126
Initial Linux support:
tresf May 14, 2024
89949d5
Minor changes
tresf May 14, 2024
7310f0b
Fix cmake < 3.2.1
tresf May 14, 2024
56d57b7
Switch CI :)
tresf May 14, 2024
6956f4a
Debug builds: Fix macOS qt linking
tresf May 14, 2024
3137ef9
Spaces -> Tabs
tresf May 14, 2024
b695a25
Minor AppImage changes
tresf May 14, 2024
6b87f2a
Add CMake version warning
tresf May 15, 2024
bca9544
Upgrade cmake; fix typo
tresf May 15, 2024
4c18ac6
Lessen [linux|mac]deployqt verbosity
tresf May 15, 2024
8d6aa20
Remove sudo, rename CPack scripts
tresf May 15, 2024
50b5903
Bundle libjack; try to fix cmake again :/
tresf May 15, 2024
e2dadba
Switch from linuxdeployqt to linuxdeploy
tresf May 16, 2024
33fdf4e
Typo
tresf May 16, 2024
7747dfc
Document double-configure for appdmg.json.in
tresf May 16, 2024
09e255b
Minor formatting
tresf May 16, 2024
2f962e8
Minor formatting 2
tresf May 16, 2024
643f53b
Try the new runners 🎉
tresf May 16, 2024
4220d24
Enable CPack debugging, fix Apple
tresf May 16, 2024
f25624d
Try to fix verbosity for broken downloads
tresf May 17, 2024
1282515
Fix relative symlinks
tresf May 17, 2024
8dfb3a9
Shim --appimage-extract into DownloadBinary.cmake for CI support
tresf May 17, 2024
a1ee840
Fix comment
tresf May 17, 2024
c2c94ae
Wine guessing
tresf May 17, 2024
9ff5e44
Finally fix linux 🤞
tresf May 17, 2024
3bf662b
Try to fix appimage plugin :/
tresf May 17, 2024
b4d347e
Quiet down there, CPack
tresf May 17, 2024
82a3aa6
Even quieter.
tresf May 17, 2024
513b0ae
Qt6: Fix @rpath bug on macOS
tresf May 18, 2024
cbd9c1a
Simplify include(...) statements
tresf May 18, 2024
6f438bd
Remove support for LinuxDeployQt. This is the commit we revert if th…
tresf May 30, 2024
177cd21
Add very basic support for makeself .run installers
tresf May 31, 2024
9f567ad
Merge branch 'master' into cpack
tresf May 31, 2024
d753258
Always sort globs for reproducibility
tresf May 31, 2024
7cc3c52
Fix typo
tresf May 31, 2024
38869f3
Attempt to repair retina tiff file
tresf May 31, 2024
9171f10
Remove dangling folder
tresf May 31, 2024
0769ad4
Fix makeself installer script
tresf Jun 1, 2024
ddca4e7
Prefer back to appdmg over CMake's DMG generator
tresf Jun 2, 2024
fcb8e1e
Misc cleanup
tresf Jun 2, 2024
5e3a088
Don't trust FUSE, ever. :D
tresf Jun 5, 2024
fce984f
Detect and bundle LV2 UI Suil modules
tresf Jun 6, 2024
b099c35
Pass Suil modules to macdeployqt, linuxdeploy
tresf Jun 6, 2024
7051ced
Merge branch 'master' into cpack
tresf Sep 16, 2024
fda485a
Remove unused CMAKE_INSTALL_PREFIX
tresf Oct 23, 2024
eb25a0d
true -> TRUE, false -> FALSE
tresf Oct 23, 2024
cc9cde2
Deobfuscate CPACK_DEBUG
tresf Oct 23, 2024
7f217d8
Don't strip Windows libs (for historic reasons)
tresf Oct 23, 2024
a9fe1b3
Remove lingering linuxdeployqt workaround
tresf Oct 23, 2024
aab4cc5
Fix Carla on Linux
tresf Oct 25, 2024
22f17e0
Make DownloadBinary reproducible
tresf Oct 25, 2024
508f430
Fix Carla, whitespace
tresf Oct 25, 2024
b8950f4
Revert back to appimagetool for finer control on what we bundle
tresf Dec 26, 2024
0c183b9
Workaround usr/lib relocation issues
tresf Jan 22, 2025
4f6a25c
Add Linux arm64 support (#8)
messmerd Jan 22, 2025
8a162ce
Merge branch 'master' into cpack
tresf Jan 22, 2025
d27f6d0
Toggle on WANT_DEBUG_CPACK to troubleshoot CI
tresf Jan 23, 2025
c72d26e
Fix appimages, zyn, carla
tresf Jan 23, 2025
bc905ef
Revert WANT_DEBUG_CPACK
tresf Jan 23, 2025
ae4859c
Formatting
tresf Jan 23, 2025
8ea001d
Fix carla glob removing needed libs
tresf Jan 23, 2025
227bf3e
Try to debug cpack (again)
tresf Jan 23, 2025
575d907
Try to resolve missing libgtk-x11-2.0.so.0 on ARM64
tresf Jan 23, 2025
bea57c0
Fix artifact upload
tresf Jan 23, 2025
3560033
Fix-up bash completions
tresf Jan 25, 2025
b830880
Fix minor typo in comment
tresf Jan 25, 2025
fbba635
Add experimental support for 64-bit Wine on ARM64
tresf Jan 25, 2025
f25708b
Revert "Add experimental support for 64-bit Wine on ARM64"
tresf Jan 25, 2025
33de57b
Move libgtk2.0-0 to deps file
tresf Jan 25, 2025
91aa37f
Add copyright, consolidate packaging codestyle
tresf Jan 25, 2025
779de42
Removing libwine.so.1 workaround; it hasn't been a requirement since …
tresf Jan 25, 2025
d673081
Allow remote plugins to honor LMMS_PLUGIN_DIR
tresf Jan 25, 2025
2081ed7
Attempt to fix RemoteVstPlugin discovery
tresf Jan 26, 2025
78288a9
Attempt 2 to fix RemoteVstPlugin discovery
tresf Jan 26, 2025
499084d
Attempt 3 to fix RemoteVstPlugin discovery
tresf Jan 26, 2025
ac53dda
Fix rawwaves
tresf Jan 28, 2025
2bca86a
Update .github/workflows/deps-ubuntu-24.04-gcc.txt
tresf Jan 28, 2025
b95c7f1
Fix usr/share/icons
tresf Jan 28, 2025
bdfc63a
Switch .DirIcon from SVG to PNG
tresf Jan 29, 2025
4cbeaa9
Try to force PNG (again)
tresf Jan 30, 2025
be117e3
Try to force PNG (again 2)
tresf Jan 30, 2025
cc58362
Try to force PNG (again 3)
tresf Jan 30, 2025
36212a9
Downsize .DirIcon
tresf Jan 30, 2025
dac3bd3
Try to fix ARM64 failures
tresf Jan 30, 2025
e782e38
Downsize .DirIcon (again)
tresf Jan 30, 2025
302b873
Revert all icon workarounds
tresf Jan 30, 2025
c7d6c28
Icon test: Avoid double-symlinks
tresf Jan 30, 2025
e3f4669
Revert symlink workaround. Add 256x256 icons.
tresf Jan 30, 2025
be77275
Add back in --icon-file
tresf Jan 30, 2025
901175c
Directly deploy the 64x64 .DirIcon
tresf Jan 31, 2025
0918a5f
Give up
tresf Jan 31, 2025
2dfbf57
Try 64x64 one more time
tresf Jan 31, 2025
4e3e5f8
Revert 64x64 DirIcon; Try to disable SELinux
tresf Jan 31, 2025
d1bbd0d
Try to disable SELinux (again)
tresf Jan 31, 2025
de60afb
Revert broken commands
tresf Jan 31, 2025
07af0ee
Typo
tresf Jan 31, 2025
92001f0
Going insane
tresf Jan 31, 2025
8e7f554
Switch back to 256 PNGs, document Nemo size preference, delete SVG
tresf Jan 31, 2025
7c9c825
Fix waveforms FileDialog
tresf Feb 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 69 additions & 9 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
linux:
name: linux
linux-x86_64:
name: linux-x86_64
runs-on: ubuntu-latest
container: ghcr.io/lmms/linux.gcc:20.04
env:
Expand Down Expand Up @@ -39,7 +39,6 @@ jobs:
source /opt/qt5*/bin/qt5*-env.sh || true
cmake -S . \
-B build \
-DCMAKE_INSTALL_PREFIX=./install \
$CMAKE_OPTS
- name: Build
run: cmake --build build
Expand All @@ -49,8 +48,7 @@ jobs:
ctest --output-on-failure -j2
- name: Package
run: |
cmake --build build --target install
cmake --build build --target appimage
cmake --build build --target package
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
Expand All @@ -65,6 +63,71 @@ jobs:
ccache --show-stats
env:
CCACHE_MAXSIZE: 500M
linux-arm64:
name: linux-arm64
runs-on: ubuntu-24.04-arm
env:
CMAKE_OPTS: >-
-DUSE_WERROR=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
-DWANT_DEBUG_CPACK=ON
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
MAKEFLAGS: -j2
DEBIAN_FRONTEND: noninteractive
steps:
- name: Configure git
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Check out
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Install system packages
run: |
sudo apt-get update -y
sudo apt-get install -y --no-install-recommends \
$(xargs < .github/workflows/deps-ubuntu-24.04-gcc.txt)
- name: Cache ccache data
uses: actions/cache@v3
with:
key: ccache-${{ github.job }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
ccache-${{ github.job }}-${{ github.ref }}-
ccache-${{ github.job }}-
path: ~/.ccache
- name: Configure
run: |
ccache --zero-stats
cmake -S . \
-B build \
-DWANT_VST_32=OFF \
-DWANT_VST_64=OFF \
$CMAKE_OPTS
- name: Build
run: cmake --build build
- name: Run tests
run: |
cd build/tests
ctest --output-on-failure -j2
- name: Package
run: |
cmake --build build --target package
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: linux-arm64
path: build/lmms-*.AppImage
- name: Trim ccache and print statistics
run: |
ccache --cleanup
echo "[ccache config]"
ccache --show-config
echo "[ccache stats]"
ccache --show-stats
env:
CCACHE_MAXSIZE: 500M
macos:
strategy:
fail-fast: false
Expand Down Expand Up @@ -129,7 +192,6 @@ jobs:
mkdir build
cmake -S . \
-B build \
-DCMAKE_INSTALL_PREFIX="../target" \
-DCMAKE_PREFIX_PATH="$(brew --prefix qt@5)" \
-DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} \
$CMAKE_OPTS \
Expand All @@ -142,8 +204,7 @@ jobs:
ctest --output-on-failure -j3
- name: Package
run: |
cmake --build build --target install
cmake --build build --target dmg
cmake --build build --target package
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -208,7 +269,6 @@ jobs:
ccache --zero-stats
cmake -S . \
-B build \
-DCMAKE_INSTALL_PREFIX=./install \
-DCMAKE_TOOLCHAIN_FILE="./cmake/toolchains/MinGW-W64-64.cmake" \
$CMAKE_OPTS
- name: Build
Expand Down
52 changes: 52 additions & 0 deletions .github/workflows/deps-ubuntu-24.04-gcc.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
binutils
ca-certificates
ccache
cmake
file
fluid
gcc
git
gpg
g++
libasound2-dev
libc6-dev
libfftw3-dev
libfltk1.3-dev
libfluidsynth-dev
libgig-dev
libgtk2.0-0
libjack-jackd2-dev
liblilv-dev
liblist-moreutils-perl
libmp3lame-dev
libogg-dev
libqt5svg5-dev
libqt5x11extras5-dev
libsamplerate0-dev
libsdl2-dev
libsndfile1-dev
libsoundio-dev
libstk-dev
libsuil-dev
libvorbis-dev
libx11-xcb-dev
libxcb-keysyms1-dev
libxcb-util0-dev
libxft-dev
libxinerama-dev
libxml2-utils
libxml-perl
lsb-release
lv2-dev
make
perl
portaudio19-dev
qt5-qmake
qtbase5-dev
qtbase5-dev-tools
qtbase5-private-dev
qttools5-dev-tools
software-properties-common
ssh-client
stk
wget
19 changes: 17 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ option(WANT_DEBUG_MSAN "Enable MemorySanitizer" OFF)
option(WANT_DEBUG_UBSAN "Enable UndefinedBehaviorSanitizer" OFF)
option(WANT_DEBUG_GPROF "Enable gprof profiler" OFF)
OPTION(BUNDLE_QT_TRANSLATIONS "Install Qt translation files for LMMS" OFF)
option(WANT_DEBUG_CPACK "Show detailed logs for packaging commands" OFF)
option(WANT_CPACK_TARBALL "Request CPack to create a tarball instead of an installer" OFF)


IF(LMMS_BUILD_APPLE)
Expand Down Expand Up @@ -267,6 +269,7 @@ IF(WANT_SUIL)
IF(SUIL_FOUND)
SET(LMMS_HAVE_SUIL TRUE)
SET(STATUS_SUIL "OK")
find_package(SuilModules)
ELSE()
SET(STATUS_SUIL "not found, install it or set PKG_CONFIG_PATH appropriately")
ENDIF()
Expand Down Expand Up @@ -605,6 +608,17 @@ ELSE()
SET (STATUS_DEBUG_FPE "Disabled")
ENDIF(WANT_DEBUG_FPE)

if(WANT_DEBUG_CPACK)
if((LMMS_BUILD_WIN32 AND CMAKE_VERSION VERSION_LESS "3.19") OR WANT_CPACK_TARBALL)
set(STATUS_DEBUG_CPACK "Wanted but disabled due to unsupported configuration")
else()
set(CPACK_DEBUG TRUE)
set(STATUS_DEBUG_CPACK "Enabled")
endif()
else()
set(STATUS_DEBUG_CPACK "Disabled")
endif()

# check for libsamplerate
FIND_PACKAGE(Samplerate 0.1.8 MODULE REQUIRED)

Expand Down Expand Up @@ -678,7 +692,7 @@ if(WANT_DEBUG_GPROF)
add_link_options(-pg)
set(STATUS_GPROF "OK")
else()
set(STATUS_GPROF "DISABLED ${STATUS_GPROF}")
set(STATUS_GPROF "Disabled ${STATUS_GPROF}")
endif()

# add enabled sanitizers
Expand Down Expand Up @@ -744,7 +758,7 @@ IF(LMMS_BUILD_LINUX)
"${CMAKE_BINARY_DIR}/lmmsconfig.h"
"${CMAKE_BINARY_DIR}/lmmsversion.h"
"${CMAKE_SOURCE_DIR}/src/gui/embed.cpp"
DESTINATION "${CMAKE_INSTALL_PREFIX}/include/lmms/")
DESTINATION "include/lmms/")
ENDIF(LMMS_BUILD_LINUX)

#
Expand Down Expand Up @@ -848,6 +862,7 @@ MESSAGE(
"* Debug using ThreadSanitizer : ${STATUS_DEBUG_TSAN}\n"
"* Debug using MemorySanitizer : ${STATUS_DEBUG_MSAN}\n"
"* Debug using UBSanitizer : ${STATUS_DEBUG_UBSAN}\n"
"* Debug packaging commands : ${STATUS_DEBUG_CPACK}\n"
"* Profile using GNU profiler : ${STATUS_GPROF}\n"
)

Expand Down
12 changes: 8 additions & 4 deletions cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,14 @@ ENDIF()
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME_UCASE}")
SET(CPACK_SOURCE_GENERATOR "TBZ2")
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}")
IF(NOT DEFINED WIN32)
SET(CPACK_STRIP_FILES "bin/${CMAKE_PROJECT_NAME};${PLUGIN_DIR}/*.so")
SET(CPACK_PACKAGE_EXECUTABLES "${CMAKE_PROJECT_NAME}" "${PROJECT_NAME_UCASE} binary")
ENDIF()
SET(CPACK_PACKAGE_EXECUTABLES "${CMAKE_PROJECT_NAME}" "${PROJECT_NAME_UCASE} binary")

# Disable strip for Debug|RelWithDebInfo
if(CMAKE_BUILD_TYPE MATCHES "Deb")
unset(CPACK_STRIP_FILES)
else()
set(CPACK_STRIP_FILES TRUE)
endif()

IF(LMMS_BUILD_WIN32)
ADD_SUBDIRECTORY(nsis)
Expand Down
60 changes: 26 additions & 34 deletions cmake/apple/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,24 +1,3 @@
SET(MACOSX_BUNDLE_ICON_FILE "icon.icns")
SET(MACOSX_BUNDLE_GUI_IDENTIFIER "${PROJECT_NAME_UCASE}")
SET(MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION}")
SET(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME_UCASE}")
SET(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION}")
SET(MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION}")
SET(MACOSX_BUNDLE_COPYRIGHT "${PROJECT_COPYRIGHT}")
SET(MACOSX_BUNDLE_MIMETYPE "application/x-lmms-project")
SET(MACOSX_BUNDLE_MIMETYPE_ICON "project.icns")
SET(MACOSX_BUNDLE_MIMETYPE_ID "io.lmms")
SET(MACOSX_BUNDLE_PROJECT_URL "${PROJECT_URL}")
SET(MACOSX_BUNDLE_DMG_TITLE "${MACOSX_BUNDLE_BUNDLE_NAME} ${MACOSX_BUNDLE_LONG_VERSION_STRING}")

# FIXME: appdmg won't allow volume names > 27 char
# See also https://github.com/LinusU/node-appdmg/issues/48
STRING(SUBSTRING "${MACOSX_BUNDLE_DMG_TITLE}" 0 27 MACOSX_BUNDLE_DMG_TITLE)

CONFIGURE_FILE("lmms.plist.in" "${CMAKE_BINARY_DIR}/Info.plist")
CONFIGURE_FILE("install_apple.sh.in" "${CMAKE_BINARY_DIR}/install_apple.sh" @ONLY)
CONFIGURE_FILE("package_apple.json.in" "${CMAKE_BINARY_DIR}/package_apple.json" @ONLY)

IF(CMAKE_OSX_ARCHITECTURES)
SET(DMG_ARCH "${CMAKE_OSX_ARCHITECTURES}")
ELSEIF(IS_ARM64)
Expand All @@ -29,18 +8,31 @@ ELSE()
SET(DMG_ARCH "x86_64")
ENDIF()

# DMG creation target
SET(DMG_FILE "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}-mac${APPLE_OS_VER}-${DMG_ARCH}.dmg")

FILE(REMOVE "${DMG_FILE}")
ADD_CUSTOM_TARGET(removedmg
COMMAND touch "\"${DMG_FILE}\"" && rm "\"${DMG_FILE}\""
COMMENT "Removing old DMG")
ADD_CUSTOM_TARGET(dmg
COMMAND appdmg "\"${CMAKE_BINARY_DIR}/package_apple.json\"" "\"${DMG_FILE}\""
DEPENDS "${CMAKE_BINARY_DIR}/package_apple.json"
COMMENT "Generating DMG")
ADD_DEPENDENCIES(dmg removedmg)
# Standard CPack options
set(CPACK_GENERATOR "External" PARENT_SCOPE)
set(CPACK_EXTERNAL_ENABLE_STAGING TRUE PARENT_SCOPE)
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}-mac${APPLE_OS_VER}-${DMG_ARCH}")
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}" PARENT_SCOPE)
set(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_CURRENT_SOURCE_DIR}/MacDeployQt.cmake" PARENT_SCOPE)
# disable cpack's strip: causes missing symbols on macOS
set(CPACK_STRIP_FILES_ORIG "${CPACK_STRIP_FILES}" PARENT_SCOPE)
set(CPACK_STRIP_FILES FALSE PARENT_SCOPE)

# see also ../postinstall/CMakeLists.txt
# Custom vars to expose to Cpack
# must be prefixed with "CPACK_" per https://stackoverflow.com/a/46526757/3196753)
set(CPACK_CURRENT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE)
set(CPACK_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE)
set(CPACK_BINARY_DIR "${CMAKE_BINARY_DIR}" PARENT_SCOPE)
set(CPACK_SOURCE_DIR "${CMAKE_SOURCE_DIR}" PARENT_SCOPE)
set(CPACK_QMAKE_EXECUTABLE "${QT_QMAKE_EXECUTABLE}" PARENT_SCOPE)
set(CPACK_CARLA_LIBRARIES "${CARLA_LIBRARIES}" PARENT_SCOPE)
set(CPACK_PROJECT_NAME "${PROJECT_NAME}" PARENT_SCOPE)
set(CPACK_PROJECT_VERSION "${VERSION}" PARENT_SCOPE)
set(CPACK_PROJECT_NAME_UCASE "${PROJECT_NAME_UCASE}" PARENT_SCOPE)
set(CPACK_PROJECT_URL "${PROJECT_URL}" PARENT_SCOPE)
set(CPACK_SUIL_MODULES "${Suil_MODULES}" PARENT_SCOPE)
set(CPACK_SUIL_MODULES_PREFIX "${Suil_MODULES_PREFIX}" PARENT_SCOPE)

if(CMAKE_VERSION VERSION_LESS "3.19")
message(WARNING "DMG creation requires at least CMake 3.19")
endif()
Loading
Loading