From 10bdf122f89d6a3b5a01544d0d2d3169ed4cc17f Mon Sep 17 00:00:00 2001 From: Tres Finocchiaro Date: Sat, 1 Feb 2025 04:02:19 -0500 Subject: [PATCH] CPack: Refactor AppImage and Apple DMG Generation (#7252) * CPack: Refactor AppImage and Apple DMG Generation * Switch from linuxdeployqt to linuxdelpoy * Add ARM64 AppImage support * Add support for `.run` installers using `makeself`, an alternative to AppImage * Refactor BashCompletion.cmake * Enable CPack debugging via `WANT_DEBUG_CPACK` * Add `download_binary`, `create_symlink` macros * Qt6: Fix @rpath bug on macOS * Detect and bundle LV2 UI Suil modules (Related #7201) * Allow remote plugins to honor `LMMS_PLUGIN_DIR` * Add .github/workflows/deps-ubuntu-24.04-gcc.txt * Fix waveforms FileDialog Co-authored-by: Dalton Messmer --- .github/workflows/build.yml | 78 ++++- .github/workflows/deps-ubuntu-24.04-gcc.txt | 52 +++ CMakeLists.txt | 19 +- cmake/CMakeLists.txt | 12 +- cmake/apple/CMakeLists.txt | 60 ++-- cmake/apple/MacDeployQt.cmake | 172 ++++++++++ cmake/apple/appdmg.json.in | 9 + .../{dmg_branding.png => background.png} | Bin cmake/apple/background@2x.png | Bin 0 -> 116338 bytes cmake/apple/dmg_branding@2x.png | Bin 115793 -> 0 bytes cmake/apple/install_apple.sh.in | 104 ------ cmake/apple/lmms.plist.in | 50 +-- cmake/apple/package_apple.json.in | 9 - cmake/install/CMakeLists.txt | 9 +- cmake/linux/CMakeLists.txt | 66 +++- cmake/linux/LinuxDeploy.cmake | 295 ++++++++++++++++++ cmake/linux/icons/256x256/apps/lmms.png | Bin 0 -> 11360 bytes .../mimetypes/application-x-lmms-project.png | Bin 0 -> 7689 bytes cmake/linux/launch_lmms.sh | 8 +- cmake/linux/makeself_setup.sh.in | 35 +++ cmake/linux/package_linux.sh.in | 213 ------------- cmake/modules/BashCompletion.cmake | 143 ++++----- cmake/modules/CreateSymlink.cmake | 34 ++ cmake/modules/DownloadBinary.cmake | 143 +++++++++ cmake/modules/FindSuilModules.cmake | 40 +++ cmake/nsis/CMakeLists.txt | 9 + src/CMakeLists.txt | 4 +- src/core/RemotePlugin.cpp | 7 +- src/core/audio/AudioSoundIo.cpp | 6 +- src/gui/SampleLoader.cpp | 2 +- 30 files changed, 1069 insertions(+), 510 deletions(-) create mode 100644 .github/workflows/deps-ubuntu-24.04-gcc.txt create mode 100644 cmake/apple/MacDeployQt.cmake create mode 100644 cmake/apple/appdmg.json.in rename cmake/apple/{dmg_branding.png => background.png} (100%) create mode 100644 cmake/apple/background@2x.png delete mode 100644 cmake/apple/dmg_branding@2x.png delete mode 100644 cmake/apple/install_apple.sh.in delete mode 100644 cmake/apple/package_apple.json.in create mode 100644 cmake/linux/LinuxDeploy.cmake create mode 100644 cmake/linux/icons/256x256/apps/lmms.png create mode 100644 cmake/linux/icons/256x256/mimetypes/application-x-lmms-project.png create mode 100644 cmake/linux/makeself_setup.sh.in delete mode 100644 cmake/linux/package_linux.sh.in create mode 100644 cmake/modules/CreateSymlink.cmake create mode 100644 cmake/modules/DownloadBinary.cmake create mode 100644 cmake/modules/FindSuilModules.cmake diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9c3e6560f..293f5dab6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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: @@ -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 @@ -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: @@ -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 @@ -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 \ @@ -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: @@ -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 diff --git a/.github/workflows/deps-ubuntu-24.04-gcc.txt b/.github/workflows/deps-ubuntu-24.04-gcc.txt new file mode 100644 index 000000000..f1b705eeb --- /dev/null +++ b/.github/workflows/deps-ubuntu-24.04-gcc.txt @@ -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 diff --git a/CMakeLists.txt b/CMakeLists.txt index 66dc307e3..84089ede3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) @@ -268,6 +270,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() @@ -606,6 +609,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) @@ -679,7 +693,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 @@ -745,7 +759,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) # @@ -849,6 +863,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" ) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 833fad581..439a68852 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -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) diff --git a/cmake/apple/CMakeLists.txt b/cmake/apple/CMakeLists.txt index 3fd0a4da4..71be84f81 100644 --- a/cmake/apple/CMakeLists.txt +++ b/cmake/apple/CMakeLists.txt @@ -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) @@ -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") +# 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) -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) - -# 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() diff --git a/cmake/apple/MacDeployQt.cmake b/cmake/apple/MacDeployQt.cmake new file mode 100644 index 000000000..bee22cf42 --- /dev/null +++ b/cmake/apple/MacDeployQt.cmake @@ -0,0 +1,172 @@ +# Create a macOS .dmg desktop installer using macdeployqt +# +# Copyright (c) 2025, Tres Finocchiaro, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# Variables must be prefixed with "CPACK_" to be visible here +set(lmms "${CPACK_PROJECT_NAME}") +set(APP "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/${CPACK_PROJECT_NAME_UCASE}.app") + +# Toggle command echoing & verbosity +# 0 = no output, 1 = error/warning, 2 = normal, 3 = debug +if(NOT CPACK_DEBUG) + set(VERBOSITY 1) + set(COMMAND_ECHO NONE) +else() + set(VERBOSITY 2) + set(COMMAND_ECHO STDOUT) +endif() + +# Detect release|debug build +if(NOT CPACK_STRIP_FILES_ORIG) + # -use-debug-libs implies -no-strip + if(CPACK_QMAKE_EXECUTABLE MATCHES "/homebrew/|/usr/local") + message(STATUS "Homebrew does not provide debug qt libraries, replacing \"-use-debug-libs\" with \"-no-strip\" instead") + set(USE_DEBUG_LIBS -no-strip) + else() + set(USE_DEBUG_LIBS -use-debug-libs) + endif() +endif() + +# Cleanup CPack "External" json, txt files, old DMG files +file(GLOB cleanup "${CPACK_BINARY_DIR}/${lmms}-*.json" + "${CPACK_BINARY_DIR}/${lmms}-*.dmg" + "${CPACK_BINARY_DIR}/install_manifest.txt") +list(SORT cleanup) +file(REMOVE ${cleanup}) + +# Create bundle structure +file(MAKE_DIRECTORY "${APP}/Contents/MacOS") +file(MAKE_DIRECTORY "${APP}/Contents/Frameworks") +file(MAKE_DIRECTORY "${APP}/Contents/Resources") + +# Fix layout +file(RENAME "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/lib" "${APP}/Contents/lib") +file(RENAME "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/share" "${APP}/Contents/share") +file(RENAME "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/bin" "${APP}/Contents/bin") + +# Move binaries into Contents/MacOS +file(RENAME "${APP}/Contents/bin/${lmms}" "${APP}/Contents/MacOS/${lmms}") +file(RENAME "${APP}/Contents/lib/${lmms}/RemoteZynAddSubFx" "${APP}/Contents/MacOS/RemoteZynAddSubFx") +file(REMOVE_RECURSE "${APP}/Contents/bin") +file(REMOVE_RECURSE "${APP}/Contents/share/man1") +file(REMOVE_RECURSE "${APP}/Contents/include") + +# Copy missing files +# Convert https://lmms.io to io.lmms +string(REPLACE "." ";" mime_parts "${CPACK_PROJECT_URL}") +string(REPLACE ":" ";" mime_parts "${mime_parts}") +string(REPLACE "/" "" mime_parts "${mime_parts}") +list(REMOVE_AT mime_parts 0) +list(REVERSE mime_parts) +list(JOIN mime_parts "." MACOS_MIMETYPE_ID) +configure_file("${CPACK_CURRENT_SOURCE_DIR}/lmms.plist.in" "${APP}/Contents/Info.plist" @ONLY) +file(COPY "${CPACK_CURRENT_SOURCE_DIR}/project.icns" DESTINATION "${APP}/Contents/Resources") +file(COPY "${CPACK_CURRENT_SOURCE_DIR}/icon.icns" DESTINATION "${APP}/Contents/Resources") +file(RENAME "${APP}/Contents/Resources/icon.icns" "${APP}/Contents/Resources/${lmms}.icns") + +# Copy Suil modules +if(CPACK_SUIL_MODULES) + set(SUIL_MODULES_TARGET "${APP}/Contents/Frameworks/${CPACK_SUIL_MODULES_PREFIX}") + file(MAKE_DIRECTORY "${SUIL_MODULES_TARGET}") + file(COPY ${CPACK_SUIL_MODULES} DESTINATION "${SUIL_MODULES_TARGET}") +endif() + +# Make all libraries writable for macdeployqt +file(CHMOD_RECURSE "${APP}/Contents" PERMISSIONS + OWNER_EXECUTE OWNER_WRITE OWNER_READ + GROUP_EXECUTE GROUP_WRITE GROUP_READ + WORLD_READ) + +# Qt6: Fix @rpath bug https://github.com/orgs/Homebrew/discussions/2823 +include(CreateSymlink) +get_filename_component(QTBIN "${CPACK_QMAKE_EXECUTABLE}" DIRECTORY) +get_filename_component(QTDIR "${QTBIN}" DIRECTORY) +create_symlink("${QTDIR}/lib" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/lib") + +# Replace @rpath with @loader_path for Carla +execute_process(COMMAND install_name_tool -change + "@rpath/libcarlabase.dylib" + "@loader_path/libcarlabase.dylib" + "${APP}/Contents/lib/${lmms}/libcarlapatchbay.so" + COMMAND_ECHO ${COMMAND_ECHO} + COMMAND_ERROR_IS_FATAL ANY) +execute_process(COMMAND install_name_tool -change + "@rpath/libcarlabase.dylib" + "@loader_path/libcarlabase.dylib" + "${APP}/Contents/lib/${lmms}/libcarlarack.so" + COMMAND_ECHO ${COMMAND_ECHO} + COMMAND_ERROR_IS_FATAL ANY) + +# Build list of executables to inform macdeployqt about +# e.g. -executable=foo.dylib -executable=bar.dylib +file(GLOB LIBS "${APP}/Contents/lib/${lmms}/*.so") + +# Inform macdeployqt about LADSPA plugins; may depend on bundled fftw3f, etc. +file(GLOB LADSPA "${APP}/Contents/lib/${lmms}/ladspa/*.so") + +# Inform linuxdeploy about remote plugins +list(APPEND REMOTE_PLUGINS "${APP}/Contents/MacOS/*Remote*") + +# Collect, sort and dedupe all libraries +list(APPEND LIBS ${LADSPA}) +list(APPEND LIBS ${REMOTE_PLUGINS}) +list(APPEND LIBS ${CPACK_SUIL_MODULES}) +list(REMOVE_DUPLICATES LIBS) +list(SORT LIBS) + +# Construct macdeployqt parameters +foreach(_lib IN LISTS LIBS) + if(EXISTS "${_lib}") + list(APPEND EXECUTABLES "-executable=${_lib}") + endif() +endforeach() + +# Call macdeployqt +get_filename_component(QTBIN "${CPACK_QMAKE_EXECUTABLE}" DIRECTORY) +message(STATUS "Calling ${QTBIN}/macdeployqt ${APP} [... executables]") +execute_process(COMMAND "${QTBIN}/macdeployqt" "${APP}" ${EXECUTABLES} + -verbose=${VERBOSITY} + ${USE_DEBUG_LIBS} + COMMAND_ECHO ${COMMAND_ECHO} + COMMAND_ERROR_IS_FATAL ANY) + +# Cleanup symlink +file(REMOVE "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/lib") + +# Remove dummy carla libs, relink to a sane location (e.g. /Applications/Carla.app/...) +# (must be done after calling macdeployqt) +file(GLOB CARLALIBS "${APP}/Contents/lib/${lmms}/libcarla*") +foreach(_carlalib IN LISTS CARLALIBS) + foreach(_lib "${CPACK_CARLA_LIBRARIES}") + set(_oldpath "../../Frameworks/lib${_lib}.dylib") + set(_newpath "Carla.app/Contents/MacOS/lib${_lib}.dylib") + execute_process(COMMAND install_name_tool -change + "@loader_path/${_oldpath}" + "@executable_path/../../../${_newpath}" + "${_carlalib}" + COMMAND_ECHO ${COMMAND_ECHO} + COMMAND_ERROR_IS_FATAL ANY) + file(REMOVE "${APP}/Contents/Frameworks/lib${_lib}.dylib") + endforeach() +endforeach() + +# Call ad-hoc codesign manually (CMake offers this as well) +execute_process(COMMAND codesign --force --deep --sign - "${APP}" + COMMAND_ECHO ${COMMAND_ECHO} + COMMAND_ERROR_IS_FATAL ANY) + +# Create DMG +# appdmg won't allow volume names > 27 char https://github.com/LinusU/node-alias/issues/7 +find_program(APPDMG_BIN appdmg REQUIRED) +string(SUBSTRING "${CPACK_PROJECT_NAME_UCASE} ${CPACK_PROJECT_VERSION}" 0 27 APPDMG_VOLUME_NAME) +# We'll configure this file twice (again in MacDeployQt.cmake once we know CPACK_TEMPORARY_INSTALL_DIRECTORY) +configure_file("${CPACK_CURRENT_SOURCE_DIR}/appdmg.json.in" "${CPACK_CURRENT_BINARY_DIR}/appdmg.json" @ONLY) + +execute_process(COMMAND "${APPDMG_BIN}" + "${CPACK_CURRENT_BINARY_DIR}/appdmg.json" + "${CPACK_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME}.dmg" + COMMAND_ECHO ${COMMAND_ECHO} + COMMAND_ERROR_IS_FATAL ANY) \ No newline at end of file diff --git a/cmake/apple/appdmg.json.in b/cmake/apple/appdmg.json.in new file mode 100644 index 000000000..6e4f048a6 --- /dev/null +++ b/cmake/apple/appdmg.json.in @@ -0,0 +1,9 @@ +{ + "title": "@APPDMG_VOLUME_NAME@", + "background": "@CPACK_SOURCE_DIR@/cmake/apple/background.png", + "icon-size": 128, + "contents": [ + { "x": 139, "y": 200, "type": "file", "path": "@CPACK_TEMPORARY_INSTALL_DIRECTORY@/@CPACK_PROJECT_NAME_UCASE@.app" }, + { "x": 568, "y": 200, "type": "link", "path": "/Applications" } + ] +} diff --git a/cmake/apple/dmg_branding.png b/cmake/apple/background.png similarity index 100% rename from cmake/apple/dmg_branding.png rename to cmake/apple/background.png diff --git a/cmake/apple/background@2x.png b/cmake/apple/background@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..da44ceb8b63a8b941e341ce45afd7c3a32a5a822 GIT binary patch literal 116338 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
  • eG)kQ(RO7+nZ($EMxTi)BEUqfD9xyd`H8#%swTUxA5D{us@ zbdh*sgXpTxx8PWw)a8kqak3>n{DqZW;&;hoa}VK7#%+&Zs2!TC>HeswNY(;vx81PD zds0#V5Ybw=yG=ejWSEtSNP;z@`Mrzu7i*f%pMz$Ib;n#0xBp`P;p){-4l=v%zujY> zznW%RUGh1rcw3(B1qEH{ka_uGo|E~7_vX)5A`x=*txP<(R7cgtbzR@SPr-YhcE1Pd z@cbNMaZ*9^F3TO$6t0hn-Gtvazn1UUTazy%?AJ*N0LQVy~fK_9; z^U`j;=E>9d%aV6<8Oa8GBKoMG;nlb^*o1)?P4KFs%OR^NsS#7wZ>?b(i+jTxU@n-NQB zvH0!lj%5M0XlBXf7vog&kuC4Vd$h+?rLSGlen@GOYdXm0gQwqz@KYdOF;ps;Sl^8T z*PD_UvoK#LV5bPnioVA6>9|p|`UbDvg!Lnqq}`T=)B<83rm$Q+CDcPjrOxS1g2M2K zs`DpiTPyFpxUVO%@nrjlzd4@~q8TkN)T2!xFIxTj>VD3Q!4xqqAx~xlDB%PJCHS` znP^9{r7wO7hSkIpm0m$!6NsL3)~}8c-)uBYFR$4;UCYoszvET3*UiW{@nl9Gv_F1| z_c5z3{Lw^+b^cq!o~KefpSGFlVkynu)PjwP>|QaoxUfAZFG6R2of-%`9Zy}kK;cz9 zdW)gn_G4v>fWB?G(4>KLx&>p&q%`ZdLIRPKVE!j^I%Cd463OFtQ=da;g~iteQj^%` zJYVX`(>(4D7reze_p(l~AXxQQBU8C*J)TW{Y>?t<`Q!2(2>ZF}D?!7MWrtFVfhGDh z^GoBUcKt6r`dr7@vM3=fS+?n`b;cKd+zwbC0F~h%BoVIa+l{VV;ZyO)$2TsTvRF10 zi?Fz8#CS(hM*b0dJDv_4Gq1^GVu9V_{E_&rDDHgXo zyA=;9+aq#bT`!%!?@}vNpGaF!LtCu2eur>|=EW-6>_xxBF0WinzO9gb=(v&^9UI@l zOO-0!>+azNjLKHa?VKH)5@#Ep0dx%g_&{kDY z_^T)blw#5YeDoAK686C+|HdFo?4H*Z&6&v=^C=X9nWKCU01A`h-0v3Rd7>mvHEk|@UNcX$_sux+@Z^zW%HDUmGgoB3rqQ~nOlOc4!2Y?s z%{RKjw50s2^p6V)Qcm#HHBsV=-5kkr4@sB|61Br0-6+1q&8b_-y0div{duj{);+1E zr|bclzDg|XF;x)K;VT!{$82qKlBTKsZj$$97ewz@p9DJ2JfUqlCBKW{56+<+2zX}U zfQY~P%AWb%J7>hVE3UN!yV5Jq*rlFjau+hqH+ahzbbt zEBPS2g*jx%*lxPp+Cg*`Z~rC%{3XqC&(qTtA}EMNA_b5l0xs_Mf?z2rDM2A&L1AHj zULB1nu7y)&h{67POcgnf0K9i z_>BU9hoFzOs~}iFNYKei@Xt3qJe9lwBEK2>k8gPB1GPp$UATvfmpcruJ*)OizT}KVbcf zH{6r6?fl6I@cQ3$|26xsy`N16W@%_Z6kT9mIQCQ(r8#ixLu_4O2wTY6S2)a0RK!|R zlpky(X~!=LmICujNx-c6ZKXu)B&6UXB6fDLKS-%Mdw5zq!{9hl0C52XKnE;rZEIsE zDZwvkD+S{hl@x{ZOG;VW@!Lt*!C^MGB0}PJ)_;)Daz_ACY3=wYS2$9(04XUkArWCI zF*|-SxVQ+vs5tP=Mo3DG-^NB*LPQiS1hW-~pOLbKL2kRaJ6QwAiEy&EhYPwo+n+ta z0S=MZR+Z)u77+SpMBCBY(++q+nnS}H#-^qB&l7!w6I{>J8V4s>0{9V@l8}%R5)zgK zga4Ui2zU1YL=i_6EF>T-diDf&E)ZZh0J7FNK?Mk$jRTv3D7eF|Jzd=OU0fWcIdD9& z;odxxZ?>DiPDKUb0nG5liTrP&*MqzL`sMNeJKMtn1^+Eke~lyl!)aNISxbqCireyo?d-((MQz1|`E9JN#rehIBDPYZB7isu z|2pu$se8ECc_OXd;qvytPJ!J35_Gm3wi~~&-P{Tc%d3}CMW|29~^LBrwr|MB1N z!}$NW0zmq|i~O(f{V!bqh3kKX!2fFUf2HfcaQ&|k_+L%_uXO!CgNy8+ln3q%gh5Ck zp>gPnI}ap7L^gMn74c4SKd&0|5`Ym>R}~WvJiH6Exc}$yUZjJ7L1Ir;4JG2`^Q?p{ zoFBn;{djn6c&du>`abA&lu7dEx)Lk)XU}#9gG2Y43c_96Z1h-@9Zhl}W)$2`Um(cY zftZ*$CHyHuxmVwtPqC-xr{xoMZDQgxZ^)bq6S`rdJv48n97rnZs2CUw&q0?uOrb}< zl@pm&v9ek_C&@R58Fc9$CBmh?$Ji%Qhko#CyvGWHDRR@F_|L8LVozRY^n~_Q& zXg-JNGjCW@$k=T|SM)>_bV@FpkDpI@4z?4Nq?^`0j3%xue0*Tha1bVxn@D3om)6{U z_n9!a!m}#Fk8)f2fz76CovnGD)dt);kBPZ;Csloxt`RdjD2WA?yUd{5KTcFrU_y{_ z@P^N6Z07(@)QQ|*WKaPNk!+(1w_{a*EKEEEr|&-|?}%aR9AVP6a?BmO(#P?+vLXZ+ z_6^k{lOpiZS$iodrdg`#rkY`O1oLa85Q)zlqT8>z%$<abIm??J|0o(2CNO&lY6zGPcydEMWf%P75X;uqO%qYT)-h$fVp2y$lcYiN8UpW>A zMpzXImdUQINkUSu#88|Uc15rBq|YZjE}DK1sg@^WhN`poZpU6ahwxdFL>1W+X5h{w z1WA2%FeTTvG+)^02EEe(na$sHMNjKJc*i*tk$nN?(Rw)#MHz!A?%cI@{A$sH$a|dt zYt6gve-8B!88-*#`3D9-e#3Mns>l63zp;T=uY4r?ezOS;SpVpxY+RZ1mm8*`5jBHNi{Vx%81#BTPL#S51mrVo2=t@Kg_o6h(# zpc)|9bSoCiAl=8h=K;xnmGFUIg(k~*W}J0Fg4LIc@ZPk4cU*#R1aeKtp{fx0S%*%(Fw6*KX1Lx*y^h4tqi4`TMsKJc!y3fj{B4rsGYp1YPC)XA;qTOs>4Bf zCdk)VFr=91M}U%DBW1mSy*yATbt#g%tzuY@w^;u4yF`oe=%;kr9Eefn3q*-&K9w?6 z%=MxKOf=PkITwnSJE}E*fG{K0qv*uAnJ1D{_py_XS;?g#y-O z>;9(sIx%re)1ra4&7Ol8!`>8j%*QE40A8##BmNlVbb!6@K>UO}wWYE{f&g@jMAu+E zV*6f15gu#>x-oI?V6rcQZ3r#@;Oh58i@3~ju30nel3awbfd+9`dex`5#WSptx5F8{ z0`DRQx~+Rnp^~=eL1D-^r%<}$r(wYM0K3%?rnzYYSmP{JCZ8pa1`#2BN*o&j!_Z#B z&?U$Qx5A0|f&@Oy7N1I-TBMKzllvGSrV8DVatLakBlfxsy2GV1QgZUj3H1Q1mz)_= z)*eQuH@b>`Pw$P}Y!KDiW*aXcR?V*K`dDXnxUOv9rIR2P;(wi1d zgCEYpen2+lL1U(s;1**}c`~c@oAOajcrXMp_dIF`_yrJ{A;Yqri5<>v?SEzQ$PSrm zLj<3P4JO$|FIdjWJ$xIbcfQM8h+6G2hK+mY9BfGXkg(H=3Uo(YO6yIL@TDhBiay8`JkWK(rT~Vs2PDYFsE&%^?t~elm7tO{(tEc3}M_VImm$ zITZmFFd6J(Bym?0l)7_$1}z^Y4~m{505;C90;bNs7yhbf@G?%B|8_|ofH&d?yb*#e z))n0{^|L(UnKyH68Y##F0~4ZgM@L%~iMTO?m@T^ZPd1pc@w$dCW=FOe+p~m#eInR8 zUE?^oG4f|Ho=GaeyOe(bG3xFkln4>G__E78Zmj5}8}4}iq8ozLWCrjxTtI0M zwB}1~xLB!kdqv{g!r3TGEbzL%d7&*^L8&d*!srx)7}n^CVse7@MKfRFnn^*Zat_UTUj#&`G+-KG2KTwBf zh0%e{u#K#a`oRXEw9l1#FF2`US^-Zp3OR27$GHPkaT3t9$Wl=qG6mE95-&8NNz>@g zDRk{6g_E`8o2YqG7~^t#vfuUdLgK91PbM;jNp%CJ46&V0D9*j3j#*>?00t1)8Pdm- ztYX6%w7(B(i*g%K4g50%)c&W|O3v>(mR! zEMERa>6_-z-&W)|lsG?K(*O$+qqcWPvkKW2zv+5x*+?#J5BCcL=MY8UrJw7vlX7zC zguk;aC4yziN1-@jtQ4@?&G8B%?hVTLb1NM|KdrIBA6kVKQbX+Tf62x8VCQ*HKU0)?PD)d?SLckf*9Zo(= zHyb>@{)cVbm+(;%Qi-+7rj0dSib3tki4tA4e^ADY6M`a^x6cS-%&)7sd4uY8<32Hi z`d4<^p-c0q>gLt?_xZHv0YzQ=rm5M=^_MLD_T~eWgqGt7sX!Vl>pA@<(rEFp%} z2QL6>;|Rf!G7bWqcz$vent(Wo2s0fO$w$4>)TEGJ{jM5Hw?%mdfK)Kx%%vEycfs7a zv%+ap#nzB5o6ji1KcmQP=ED}0%lRIOTzG2B$4ie&$zUk2fpcB1=+6-mt?E`bLbu~= zKwan{KbX+hOU&t^0C`m1tvHVA;F;ITU=VNOv+@w|^Ek~m=#L#rz##si43XHIFUM&B zapSOYMK`w_52dyUMBeR1P&E=1d+lze;Kyh%Me;&6QsOW76XxQfWEJCVSU?VD?=CM!0M=}4NIwoA(;EiFcK;STdng7>V?&hbhSrS?Xm~my zcWu71y#tFB1?@Fn@qDKAI$Kn>#dvD9w$V84!MW(-&+-l{MYLEVD|NCFbfm5&q<3r9 z{@4}Gu9L^obQ)9Gp0eYPyeedPL+9%q&{6AVz)dZcDMZBQN$^9q2{Siuysm8OEM}0| z{r;f0P}XXhYxm8rv!EQE*4}&R7Mp_1jPrkl&4wUpzM>xa?~Qoq-O=gr5>9n^@TY#? zO+&UN4{HPvV^X;|J%jEa39TaDw#_W5^&%MKmoB)kdq`nBd>MV87K`v_Yuk-frLu8! z_GR#1n;_y)iOZ~sRW5;($T#fSpaR>Bw{zcdbluZ29o&R7$n3A}+OJ=Vd87y}=u~``=AMRLqU;%hO+FrExh9=n>=vJJ6U~mbH z4{DkGHJ@t7)4g^!byPLO_Ty~IpG+vRS|ZPtX_qC=jD53u0&Mmm)MHXd zY~1}2K`Y}Wobxj4e{8fmG7={V$x)A?PO4}`o%+h#lhvd!7s43`jtWz_BZ z%j{XJ(?8OO*OGL7g~*G|I~sRmC$^nFc~fFtx{~)+BiHQGwP)%PU`A2#GUg zw*_-q8LN3#|x^)u$TxX%(!dBr;B zD|aHw*zc*>N%oOabeRfGpy(ctVOYD4Nn-McIySha?}yRZS(!@9M+H~`*-{7)6mK6K z@gxB`5|DfVOuzlpz4mTvigZ5!vWJ9ASWx;tSV-LS?MmBJOYe3$cnPj=8__B{gwCt5~dIUBoR%FdXr*>D6$yt zJvTAi>V*ZXMA4W)TQ@hfZ`)J{Br_VZ^5rDxDdoAyVzYBT*NYR1GxXyXHZISoE#3=i z(4z);2J#SGe(1CGr9tG)%#^W@y#koe?Us=E$Y=Y3sriPnh_csv?T95}n8MJDLeG_6 z+O8Kx&R_+uviu*dAiO|}vjF3o28JE5u|S|zeg*p~ZENUdrZKvbyz3do=d^OK0-n)_ zVEc`0Y{Zw5-@@linKvkIet8?OXkB!^fXRW<=XyzkmvpVn)WptKtOw-~kPH+05MQUS}hO09Zetgq}l0>NK;&vQ|K#2ksa?64~nI?D*U(~h9hC}a(*-Z#A-$hYHx1`}(t_Q%MZS|~hC z)V=H}vV`((Ap@cTHq!0b2`V7oY=No>H+(Llk8m1HKFc2cA9MHX0+wdlwp-FEN0G|* zD1bzlu5$+)dQ)xiNCEFrJty$-N|>kmDO${r8UMZd!QRF>QV?_i zL1iE@SXFGwtz+;=lap+;%qto_kr`LO*Xes!EocZU>V$IOHg&BFTEM6DD`{7cY~A8| zSBCDL!rU=1a0#}U^rHLtrd(wVQN!d7i&-8rHFIDko0=ggUYOKRx`IEdFx})$5*Ddq zkjxtF{Gu!n$hE2>-*%1RqJrY6W!KTcG4sWB`ui6w#E@jR|@I<2~bh`W{22(Ms zjn5B*f&((H#OWE-Rg5{WTastb9Lx<*G@a)wqF+4eK6u^7K@qnJ*(f_WO@Aj1_)M6` zia}jqoJ~<(em}SA+VbT0I)*uYTi5rG{+4QDj6AO1;M-&N)T*4aTXMsDjL&z;Y5zvD z@2WkE&@uCaUHxhoyIih;2jBueaZhx7U-EUf*~ta}idfcg%VmQ)F%>NX3I4L;jmZOE zrLi1SI8u8$)2dC^t+nh`pS04Z2Y~-IVh!*=rdt zh%O4t?X!`Ndzrdn#$yg*E-t@Eg!d{zwkS(Q^v(glN^r~6!vz=rB=`5`y@;p!5+|90 zn4|9Ci$@wsolR^fcURb|{z`59^rsD_g(Z4K*XA1Y&)At(p7ih_nHS)pw&AV>1nbjG6j=(|+yPT21Jv zM?Tf4nWRpMR!M1s8T{z$rJw@734)d4g0x)9y4_7vDHX8cY~^c!-CvcYwHd<#wT0iM zARjI&40yxY_b#v7CsZ)g&rJL87p`NVW#Z@BS+mjzy_+UXW0+jgGLasJ>1I}r3QHA3 z$1xb+S}1E^@~tl;*{0V$QEdB6R2Fw~a3RgaMIexIMO*&}qF|5QGi-36xZSb!oYcVN z;jZVmK?I|lO1bwryg&rfbmo$Oat+UgwbAijIyp2*=l;E(P+BZ%z%Wd3U6Vw9)t@C0 z_dKmfUP1&#z7V~d>*C1!TeScAxZDc047d$=DibsH4_lK2;mvXO+yTPjvKM_DN<$ni z;}quiuC8e}@ZuXV^vk2A1cywvgPITaipsY%l9aT#W&)Lyl;#k;BM{0_s=P+*(c$uJ z&eg_xwE{jH2vgYPRVN@$S*;7&EZg*;S7L{&VoO}){ICb-fdj)SmNy1L5CMGoBOfVF z5u&d4#yqaC?}|%BDj3q)s9jZKmAELbvc3Q1^$)MeF=z2)y3TG|$)zCOj`w%+_)cQj z3AZPrcS?C>N+TF`OjYyy6s*^`^P_6KZrbo4`JXriiv`*=8Fc*QI{YePYTxNQ3ASYk zdrb!JY>&L`)oK4^7`QSTw4cAWV!JGgJuO%{BJ<{Y$aZijfR?rbf`@GJLxkDW&@#)7 zq5G5tOySgHy$tS6vun+0)I>FUQ#fF2*hk4KVa2Z?e<_W zC=DNx_Vy{FRIB>uLLc#L=8czOAa^{(KP#R&?6YhGRk#&v@~zXOoKh`6FZ1poVhLXm z_@hR1e>sNeYM$fV-S*&4p6K-QKo9a@q?!kL*O1@)!QwiEBTK0TJYLU>_FvHc26|}R zr~CNOmDA?Cfk_l3bwRej>r!ahw=CqOR3YCG{%ACL@C6vf-IwxQd2*0N$2mbE@2)WC zl5vfMYA?H_M^*bYY$#rzvx7@u$EK_NRe{j`#PVD|6CYPIKq0`*GI!HR^&2tf_O+U> z$&Pc^Vo(jp$v0y|pzH|pV7jiDi(dHcvWu0&ab-bg@a+H8BhD%(MdiH>jI*E^j){JbcFysHNkUD1^Jxh``$8Tu zQ~T-q6-HFi8U$UzW8WU!H+=HC zR&(bYKXBC)+vk_RyY-(BK$B(J?nr^fX}NCj5AP{u3@C4MGrOsf_?E`FK&E$FN5QNzLWvECYUr_Hb>ish8HN8%64$^-VFPxo&nY#fblNgP3Qc%pd^oDavhvq{k<~xTX<6?Y>{|pImrBj7WPgV># zU;3kAcraPE8`=`|^L3HJXXBbnec%@x1li5v$0Iz^LyA*X{>b{_Sk(S;VCc=59c%+1Ho|kEcyVH-Reb3rVFTK;tTk-24P&k^@lP7`%je-^?>rzR?d%Y=83rO(# zZU+PUPa>dZLlbqW4Sv5dw)Swqq}&!R^$0&4m)vN#F7kiRVtS$YL!J!5=*nf!oUwX` zTU^}*Y1PY}5r5QI&bnShq&`dinDs49n}&pM?VZA_P7|-^o@U=5%P)v>v{Vb9^LGml z9*OZ|>^i*N$ahCasZ}h5(3($tqi$n%+>&+{Zna+oN%t*nDhi zg8JOb>n5KEq77l|{m|c`-Pwwo&J7;Tf=eiIJaX){tc2UQ>Zp*X^;EVG$VSxe984RG zfFfPXpU`s#WrR$jqbfA}Mk95Bl(N{2z0;w%{c*bYapCMp>F77bvWj9cs)yUtph69b#DZ{ zJ8vQ_D(V?Vp8-jg25zNuEuhx6V^y|E@NtRmT8bprCx7h{M)d*GRF?G265BPI;++~QMU$vB5jXoM2;sOdjwT#jl~HhY}{FX z1=WRzXxe$dFD^D-3qR7OeBZC|9H&jcb5u{^z!`|40WQA++J6I#w8Erjlhq7s>)8vk zGhM4CTFWOgciOS2cg+)9Y5fm8?*&od1}x{4r05%ErccpzC0YxW!_~j*L4%NGQwOaN z^($50uXlLuQOEVCz>uBgtfxCF;G3rH4PwAI;#yW~B)5zH+2o7SL3FilHh z{L2-YB3=BDPl~G!UJf{|t}UM^%jTuDDs%0;Ej~BnM~1p=p2y_yG!AU$QS$%Wbc9XtdN>4F9%**|@ z*MP@;h>^vZ*RqK4_UM#hmKZ?{PHBMz=S*kMKq|3Q9{yArVYSX@R9Qke8c6I`Kl@Vq zNvnzi*YmxveiFykC7pc4mUsWU3s4dJaQw>=*xe%ramOg{omx^fbf?DZKc>sc;kHS1iXl;m>ObKV;2IKVZ- z{sLZgusXN8tgAe5mY1dM$x@nzc;d6o-+lH-jf;A+w zWXu9zvv}cY2wr1-^_+1ISXYtUmt-OTqsKKMFt20SxJyUq2~!k0?uKkgjh5)F`wJ(+ z{PUzGTqUnNEh_E$SNq@Q4tICVPJlJ?Jby4&6z1Fw)KL&Sn)R_;LtwUIK=kZeU*cRS z&;->n?Z;hYp!Qh`ZSe46^HHsKdF*-WG>{tS)kB;Oq{?r2GzhY}$^&JIGhV#D%+TJP zKbB10AuhL)D$2JW85Uqyum4?1kh zRSCl)zJMoB#wEmI;Tc8kSQ@=~iM+;V_<9C@LMo-6R;fkh_sC@p7-S_k;@Kq}&_KRP zMXq~HGCC6GY&!?gXUCFXZow(f^m8O9Il&ove+9to4X{`t>V)YgiU-RZkaH#x}`{sW?^q0FELO6rK?V8E?)-F7|!m8dN>jR{NL@Xj@9@0 zyXQ6YZAc(wp5I^MN4|cjl}N2rM{87 zU71UN_D_YRw) z7HanM6IcxxO#3(56r?yyl{i1hKIVz`Amla$?NG$f@7hKDLVh|(>))xQV+*v9I8?8m z^X-SN1g~YujW7TyGT2DL=!Hu^)6@4I+XW{J%X_No0CJIIhWFprAqv?g3ULj=S?sV^ zgP)7{uV4u!{p&`{U!jw|1_oT{T%=xVHApGrRZdx*Z)^+8;np+AF%mjf;|7~XN3Gbl zY5MnUSyuIZ;v3iS@I#^+`#ADebHTNT@{GS^Wr+l6F8qPUBj3E~QU@U2YnO|GAGz0s z(qEA2jIji61Q=XjwGEeD#Au{l`k7#0l0CH>NYO5Pq02kvUS0jz1mr2Z#0Af9SQ`Td zdm!Ej+oX=+&gnprbo~}c-KqM2$7s#V+3{~bb&+9jk2%$rwH*x~eLpb`KedR~BM7%d zj3m)GNQfRY2Y0<0qa>Excz+bbdwRnjAg0gaM917Vf=2K7vPib-Wf7>yNf_eOMb+n{jQs;O<+E*hJ zW49suyaYHx<{5oGAva}Q#3}Qe@*Ce8Wk|6dK3u~*7l31yO8fg@fW8D!JZA>qp-|-8 zayQJArVH@1#rHRfxTR`Rkk_hm!ZI*zTx(97;_^N0BerTet3b^NiGDh;OP{_^efQ;S zH#gNfE(J#49WXX*9CS-mf8xNIa~kU&TQo-^<@EQr&4>jrB}4 zhS0b+07gm>n<7*ZRO^LaMX*_%4za%9mEOHys<7ig)gD~h_$GEi(2va6u=E^WGxJX` zS=c0kk#+7A6i3OS>$yp}UX^^-9ec35A>I4A;DuqKWHbN%TD@jduwXErN<_~|+HbAX_e^8DHZ(7t1-*Zlc|?>4(w`WJ zC#*#E;9H6j%r$Gi!Whv99@vrEh*;f6 z@zqSAkrHFqi-Lr!82W~t^VnTVma}8czW&$g{(?gRXdtgSmeW-LS#FciF(#ThpGUfF zOACHp{_@J6qbx+Q(Dy#$%Fpdep6?FlE9)^GVA7aeo z$Eh2YN|b|Ei#9@=Ui@f(@Zj#G3}6?;B`R%?f}WQZj7n3S8dnczG^`wb6`HWf_;{}C zjq~Abb*!Puy%VDGwAE{DjeYV5%VuY7loqJb#lOrS&NYnAv*dj8cmiCv5$Q%$lm!VL zLoK;l5H7?pzj;V2g8{{ZU2%x7Vv-Wy(f1F%(fiJahOrGYs$OGt)m3}Jxl$iC&*R(z z&`B_&|C8=Ki*JCT_(XDeaA{GyK9*C?j|Ig0gz54vyJGr-tOeG3&Ie-_lUpw4aB%WQ z7IF+C#86-IZeN=+l#Uq?1i(*}ttIdtY=#0_ONgnhYk@KmXHb4c6;gu3aq%Zc>MAy+ zfR7j@KHanzrsZJIvOMc4w}r4GF)=a741RDeeg9{8a5T>a{0Jy|qD$&2<>L2mfs9J* zrraY6km)JI2q*J{SM~C^eDy3w^gATP+A;=wJ3G|7;mCUg=dh0aUtzHLjTzDJADo4& zZcUtv(;VIk)`P!JjIvBI%9li_Od||-wJMmR7BK<9$ zIJJ5HnPqIYr?^bHIsx21XUFoPgT5f&0pFjTx@GIs!a%KBkOdUIw;5$%0$f*267xgq z%qB9#?3G^XF5n|t$gL_?z||D~N663kg+-wnYuwIS|7q+}&{CsHFoC$q(QC&!hIZCC z1SoCQ;1U5MhmH;PY#{?ERwo|5FW$ezIIgiWHBoE8(0O!AMxWC3zb!Wo`C3A3O7js5ft&3X;>Ozh-L^G_l*f(`Imo$o z*^$Csg>8;C6<{yzvik7XerpVkYQ!pB1h6Io*h!f4`c|})hE{F?-v{*>HQ<&6kQ3Ry z#0mac!qwp6i~)lle}?m|302AW?k`$@SDw`A+0U{2-fiXRNd@3iUW|z@T^q3oSAdYJ zL-ki1K|1CWDjVw7EiZRA_ zsUvam%|c!s_lDOx(LQY2R1P8w;_Y|;P)&5P%!{Al*HyIgmp^}XL2#v!1ZnJzWHEm3 z7pJ++Z&OekN|dJkOlxB$5)P@mw@RupJ!OZIceu)m^Nf{`ft;}g+T*tN>9iQT6J@frY14I@S-wJ}iGB8RkG!o1!0Okz^EMQym(mlzdd0W-3bH>O zUTJEXDgzRo5n4!ok{=qw#xZ27W7@2Bu+e5bc86-FE<^n~-1KB^U%v85r0kDpSm(9;|{4(JcplHKlZKYPX@NDyq0q zHEI9Ea5ftU-l009mV(HZls@vV&<2U2UR(aTbngxa=)t8n;1;NvvNN_pa!t|Ux@lTX z<5nmbW#lb0a9p8}s>b!HZaTqq=v*kgLS1r?co=6d6x_%bUDV^Mcvz;syG@@Baz)Ey z0@CYdEgb0E+P|6tGn900TD{WtZ8h!+68`$R4l;cxSzM*EWJTBTysjcv2e^ib0~KSE zhSU_;(rjw*sGn6l8#y!Uc~`$yg($_04D-s^;@7yN?KUmpITM zw>FF?1XKo#*#(_0P^H81D$UC%8tfmk$<6JJjj8kfeUwn~XD4%BJ3+D!b` zVF>-hHzvH1?&EyvQtI`b>g%D%chmltwN2oCSOIUFK3&C`QjdD&Q{?g&zLcM!p9NBX zLL|Dc3ri4cZ|o}ZR!fTf?osarpPjYwO;$Et5H2y+PSVk*!ejAm)q2ZYCW9r&jU042 z_eHL|6=sfl)rddEJ_DjF`@iS&@^^gwJ4G?Bn}m7IU@ zGb;=ieSW!e?cLh++Bbpm3n%WCQex_mKBYym7t*4lbR$=D8Sb*HnQHjCQVYJKr92+B zUmGe%s%C*cdbsme6T0~#VJpYkok6-wHBtvgGU#k9@O}N#fOVo<&51lNgnEDZPs#o7 zC+$o-A1x#5;74#cMjhcGR0!c>9fSh%-Qqo3Zfp+Ft9nSta_joj?hjZ=M#ca|3wuVf zF@2Qp?lg7VAU)$zj{)ZiFT%-GiK}2(&{O}LFX3Cgu6T?Kfx_x=(Z`_ti{jz|`Rarm z6k~Gxi?Up-dsLNK0@CLIuJIIt6W97N$46-<&n`QEqhT|(C83ge=XsEGepQh3Y*0x; z>uQqf=Oh|Dal4cMCFf`=*Nc&@$m~hJT>Nn0#Q%pGb6E2AdNI01k zrsVi4`-3Fp!$a~Dscip=M&`(eyy~$Ve&mDcpcMgsE4&R70hL)w|| zQK3Q-LjpS~%HYMR2{@Lj0T?{53M30d@=K8$PNrgHW|ZlD=%>Xo1!|9vYQPMgIjfRH z+2EjiQ*CApSU*3@$Tc6q`9nVZ@LyxWD=C}*uhf7{CZd-86e+ia4BQ?@MjqAsS%gab zMW;(y!kT@VYaOKJzuxP|GP;5&L`7r`XXg|{$;IUJeaH!t?wVe)G(OIbGSzL`S-AfL z{Qzj*0Bj45)70&3K*q^|RLZid`FBQuvg4~ZbA6JGSvA%_rm%MxVM_qlo36=-MEJr4 zrfOpj;#4?Y^Ba2};Q#Ns0Si&1r`}WpK6ZkcCKGZ#K2Bt!5K0a@{ zC`DQx#a#6gLdNdKnF}}|0K3~)`$qg~JEH1MyTvtg4#r0r zJ&g?D$B3#P4viODO;!*$3b&Kq{h!WM{4?ye2b|rdhYKK};!23jKvYs53rcZ@-7XtH zTTb~h)9$Bs(O_HvhH;)sfCx6bNSQyqzFJcpW4lT&yS@5<&E_A+zD-0O6I{HvV&P<$ zCK(qJNv_ovO%vD5Isn_>>aX#c&VK}@tS07`Sa;PLK3(MakfdSPqI|!LeQ`wm5=Kl% zx5{kA^~rGC+Pv(=%Sc3OMGPk_OEcp&x4&!AlUJG9UodcYl|3j~)$bHEX6b9=SL{V@ zwIFxFLzaC6q+it=o|{Ep)Gl>coU>)|ZI$duZBx_MB1A~_8>lT5#KN6c)Gu+ItRjN# zD0!YeR^P@-ist!9%wiciU<2aQGdBJT6{#4kD%{#8ye| z(a(rO{ClKXQ3^|)2>)A&s@3l{3NvZ|&NHEV z_NeqSYK-!Yi%~+{^H!_0`CDG$UjB*Kbu$l7xdDb z((>@D3gbnZfo9>5%Du3Kbk$CVi8IbRw@~81Ursm1Y3B zs;{OeKD5uU?2-ZFPKMwM{rXQGzcB!Nt%*~C5w+E-&*K_j5?w~RFpZM_`O!w5j_IuF z5u9=TRQtDf=j zIovW-vAMGHdcYy>?9kODkt+miIqt)jYa1KQ57c5vMBnGO??mc#Skt2VT|RbCd@z|k z;P|=>=h(?Nd5aXJ@A9#aa^eZsDDX4QTQGqS3s3GJibETaU}E;>s{VsE2gt1@J3cD% z4f1lJo+;;eKOOtut%|HdG#&&PD1d3gL zXCY|5V`SIxVN~ko9@6_%Ee-0A$``EZ3#R~%I9GX%Z^tiA@F*)8tUU(E$Y7!df^!Fg zNq8g4M!E>AMZ;ME=Z5{a6--R)#&&(nkqz)r~V*Z*2`bI6~sG=H7SiF&gy)-z|R@0`B8#o>aY zdMACJ7wO+`J)p=6?#~O5jGYUgh8sp&qHO)k2R_-nei!8&O%cR9g=F7uT~gi|-yyF* zIpfX*z`ZK92hhJeUWjK zZq(LuV|P~qOu}eLamD!~jKe%XeQTs39@42fGH1}eA-wB<8j5qs4tcpN1fjQ>@d05y zni9*i+ULGfX9HN2XVSGlb$Q1aGLbsmsWY7kxkzP9+V!7el#Q0Xdr$xp`9wRGtHu>p z)%O`)$tNA-5CK|hnhX{>W*E&=OY?W%1L9`HmKUKoM}`qlII9s_Wkha@8n6|xdmgWn z?Ym?Y2m{JP%VBye^jUWm=6fLFbEW1mnCP^&&F(>=m1b-Te}AksV7}QG!11zT7w-6I zQGKd83ghf1b^V9$g@~J@64u@I#`gTh<)9G=YkrKqWW$g>gwOUOSbv|id4w(aj<=QI zed!y-lcQRZqp*`;a9n%{2xyVlL_BjT31`32eAdbbH5Jl+h7B1OAbq0Q*>FO$MT9R( zEAkoqu&d4JwrH*zMV$T*U#Ezgjb7seZ9jhGpR!hgxn8@bmxyItpRPuD%^@cl6OZ~X z58)qr5{hF#7ahH@%wkZ4QL97bSJr?dZD;Gw#HsjIJ?V?=jNDa{0kvRw`2IZ_SB)G4npt1bnK zSd}+F#S-}x44yI5Qw362nN>TB-v?XQ2kL?Bo=9OoYGSYbVwfk8$Cl&x0v{wPc5+`mtyfR zrUlLhOik9jYU~-*iF2Y@TxG!tai`wqkpE2VYaBA1pb7!oszUVrBFnCxGg#Y8Pi;eh zS^gwir}>Q zt~^3ICY>@%f8mm+B9T~vrCNr%B8e+)VX=E)%}2Ek{HlO5JJ2;mpGss_9cx7tg)8cT z%FUl5i)f`QFRk}9SNuhXfFVj467k?9+UCK*3LB7f;N_)DDxHOtqo$ANY$Y(DKu3EI z%2sJcWpU{ADvwh9Zm4irC`E5!SM6osaGWDQ^mVdi%Wf|`LQ^`UmH!kA^M(k-&_D79 z#dC8&i4tbK*@UJKa2K(wvMY%O>M=0h6fyfqpxAs`dz60{zf7(!E0r$Mw68+rmv^6K zA~j_mtk8Hh?1uDl^u+%x)B_wgKrQsKbq&-@m(;99X#YZDOq)wMC1#Gs%#*KkZ9NjH zlcb?D|B1?n@Jk~ggMCe;_}IoV28JB=Ix<#-V*LJM$S?-!lW`Le7?o$zq|*@$W4ZAx z@ein1nk8XbnYy{d4nK;nFs2Cl;-57^gemP1EVC*;2nzuZKVMbz59FCco*}v}K9kvT zT& zxshoy$d@mngrA3y=5k{5{;|0$5YaiKj9z>4fKglTSq7IjykWas-K(20xciY)438 zyG>O2^)s1J|Abx@`NNz50wsp&Q*;*RXpfXrOUcPm>=TYyjB`FD{^j;B2TO&{##xKt z8TW-+^omoKtH3^S`Hn_4>=6!C@zWpgz+rt2v&UKyr+hDaPTZiGx6dk0DVN9{1RnR* zINpR0|3IItebM7X4vJW4j(G8G`ri(T#zVM0P3H6Ar=Nm+uv8@nUcg`uswT*DPXdFO zNjjI(tpdR8A}3#?3Z#o3tu!5SYYLNF>XcoXdv5msv@VD{YK@+i;>o|q}0qqk1wtl`pP&UuBe9(GzMt20nfy@pbpJQReouXuc?{+up1|*vjQ3D}jQrADpn15oza&X9KDI zvVqx#;F$$pjx(e8h1w=VhOx5*IJIWh4exOc&dEf>J7u{q+gT!{O^DTR4yI)heAk6Y z7q7_H(v^GfQ!`Jhx-UGcK8fkWuPJ-+P1!Jjz`;i%%b>`Xz}d&^0d@_`9Kf+TvX{$F zy_>>+D)&K5^35UTm46VqS5{b!-Um@Nv+XTIJmC#8K|@_7kc0fwf1bw+de*ndaM6() zTeY?_gs-8WBb zw#{3}m?X;PL;*No<^l_C?Ikw*kmG4$39VK7Acad{LaltUb8141 z(WQBRX=om8ln>_X+r`b7(f6`_w_DHaKo(^4NWldb}z2c-{0wobZfI zFv45qjGmj!S@yE9W-O*rAztI4)J%o9-*rbm3u_KV9RcnsfQ)C>;Z+x>N%#pi3v#i7Ib&98QYgT zAIkUPbZydV(T)r#6jETVro>xnmVWmz$z<6)ha&uz_7ma5hPQ&R7IhXQpg=M>NG~xc zXb3;rol7~BOy|R@TmtOCLv-A}e;D^q=^)(q8H|$on7RJuK`4cMYV}gYh@!aw$n8O6 zRfh0vdKU`7%6>Y+P|UUWs|g>Q;PkZIsl@37gZT`o02V}?8Xbgq#*PA?71NKz-J8RS zXg1sYTMz;po}DIRF{MYC*>XLKD7ZVn{{2GH8QcI_dqhH1mss586VpBAl_q-G%x?F_8PONf?=?| zui>~Q9L5OFVj!3m**0W2nu*$v+Bzg-&;Kz88qcUgpE7hTp8b$UW@kJ+-e5E|*Ik+Z zpT%=jlUdoocb@+`r?)SW#UwA3w|-%=`XwvWi*_I%0$Ty$>pSP;AW9L5 zYm{C6wwIT%4$K1m)O}Xz+H9Z4fknZ;WVHyQSIC8XHyLX!HsZe^#y+7cv?JK?zSgK| zZkxoi+#|L6Q6o=oxmaqB$|yP>{iM%uqftk|^L?g-GS3)$RcR(0c*7A7C)o%I58Z<_ zZN&@iCE+KVHDx&h8-5J}R^U!2^c9@W#f;P{i~TGkKHAQwC9Y|&Ig81KN(fhYyDfIt zb-cWI$w>CT&yPbo$4>Ld(GC~ZYU*D%f0>Mwr~GUl2LRW%d{6o_f6CmC%ajAixohwV z6J_8ogiU^LUlNezKR5mJma*{*k)r{=khy~yYkY;>VOExtpjMmsy7E}%cI#v996A1h z$8HO+lO(ims)sc!cIo$JM!g?@clAiK+l8|D-5py?{!|l=GC(Lza6aUc ztE*|egPwOngvHZt9{`iOGcNvx=NU~BdbLN6er~&_M|Bz$ySnId^dc8a^;P|o=q<15 zHsNkI-0ieFszr9)+=K{ut=^cJ%!zt2tsfKo`yxp{4k zBrUbI{~7tv9CDl}>*#E(uZ3>943}kB-RGsdx)Zg806C$E@Gn@Lj75>j&C})~zUmfN z&EIk|&}vLD#B$$&i_8lv*t>$;Q<+-&MX^;nMaxF!w?v!=dndRa5r+B1o0;~We@A7N zC=H?Two}=ZXFQlSnAM9a=W7l!{U|t>Y{ZsYOX(hPiRO9Yy}h<&qb5o$XA<_NI=E#N z^eAY}&rZ?YJG8C)>XQiGLbz=A5#OzRrm&IwX2GB>GwK6^3`?*cCB{`L6WPJovlI9$ zRfEKRc;P9`CCsmq=N6~*Gjk+z64g;q-3-W6AqTswfv|$Xn9#34#4kx}(%jvtqI!Ua zbyAURs8l9mQGLbJy5Dzs-mS9sGX?#bz_bsE`wjBH4hG|touTK#@xlywt6$E z%I-AKynr*{A994m4dJ`OS%~?51lP7>;^bf*R~nXa!_AZO>04L;y1%hct0;mq-F9z zg%WVefq3;89fldW(IwhPv(^q=bfl;AX?3$}N&Tk%D&+XydAI>E&N7<U5-L>lL8-qqzw;$*Xy`XwaA$8VaGp{ zY2#vIF~IqexB@+=>XiF_3@%$-NsErkJlMH-_iF2$qjH?xldX-l3_Ny(zI~c|^)XYY zk=vVdd8?!EBJW0ehL6nrpjLXKO3qa1x%Jzq98TRR$;DVsJX$OtUcGQVOc`eh$;O%uHHP-%Jk#oyXu<}HfQF@WMW~vv5}{v zua_|cY2&)ffpd=_t+N-I9iJyvz3=j==l#n}14(i_5p|PuCDy%auFWsWxg;;ncj`ii z@UCw&QWS+vP1I@y&@y6V{N7oPshU%0C6$gu#!xQHvl_T%#?fL5Tt%n`oHQrQ=sV0g z)3+0ox6ruBNw?__`*&3%CPwiPJ`p|!f;Cqp&1*?Q?xjtdj*Ia=A1Gzgwl6EBCjA@BbuO#|bVA))|o z_qK6HSGhnze0<4ck>wkjsZAs2&zjk{%WPhI>>OVrlgxPGZAF59M6&;!qN3Kkon_9U z36*ZR<6iM~rWX@F{TXHG=gvT53!kO++0_2`y$5dZ4$+jD=$`bkyQ!Ira&wdO@qb4M ze$#k3QHQXkCCeDbO?%j_4bix9s_m0>QXECz^D!>8}Q&Sd+ydJbhs zU$DWRj?I?m9A;|=rYv~OL(maOk-n8fxS0s|3tb^H3U;e`2KF-hIuxsLPMGx0ej{_@ zk*B2K{?us{^zb6}umGEAaR}TsF@Y~-8pzrKIDnJo0Nrhxj~EmWk>xaWksz|3%#-1$;d&&H!`4>ZHANRDopdr zl9*W{sbK#5o*IP1vygCpzkyp`u5HTk$NPZF(Bwe$$7|MbX^X_KL!+pyxVM&6rghNXnLffhRXxaS2k&xi_^ry)XZ}eHhZ`#pZepBY(=3@XUx*+n?BIZ zQV@{e?}Kg4a49GXXtrCg5=Uu1YMkO#>@+A?s}|!fZPARM+G`HmUS`!=R93I4D8C%if9}w}BB0m! ze%x>6c&Ul`*PZX~p!P+AR|bypyK=QT8^LqzGtpF9qPpKxme zg>|*MOA@CA#9rxi4gc(|R07aQDS2>epi`A__-o^`Qm-qz`H;8q zHY=*s=%05D3kC8}AniN&YLv!*mUi?D!l4%eJ&}ep24!T(QLd3x~nncZ}eboJDfUH|NNu9Az1%5V+@$ ztI~2IqC9**<)7$8FzB(Jyho)-FAomd@_1U*-aVVh?89Gc3rY%G_GMF^m!j+5Q(WFL z5bz=A`y#Fn6ivVDb8tg34Un+2{6l|?D79`!S0+#oZTz2i$teypj*2VaiN3?AFxVb|-}Z{g%zXAZYVUz$48PY zfPwd`r)%9tLAf{IxmD**nx?U>QS_N2Xx3_#p~-U`|Mnemq_IR8+*@{p?6bB}ULR+~ z_r$1E-aKTU?O`AivE(Zp2*Btk4~67AM&6Mydc`*pzqw+Y+H{dsKQp2)hdTOhZMf(- z1E^N?bm>Lhb)HJ`KhUWg&QVr;s87)CSv#F+fIUm{8~5mUW$hgbGvF^C3DD41+^NTw zQ@cLTXBwmk*p}HC|4^hq^`!4aKtC9}paP8&4x9Y(wlbjDP;U)P?WLQ_2y>bmcisv9 zE!M}Rb$1U6z;rd+Z$+P@EAEG74Z0P4cQBn9s4H&x)nFEpoa2(5_YE-4`7qHSj=TTW zx)9qvS*!(YN!?>YXb%uVSZG%Nm?4qVHT9P&=&DHzh4($(!ArDrVm}Wess!#DI6I&2 zI@8wF+PFMi)E$&BmMIxg!T$TMF)ykj?xLsB^O5TvuV-yUwDK#E+be_q>~kEZ(ZK)Z zIbo(ZD*fak&};#mPUJ9~|CwID`>jp%9LK@JyOw`^Hz1_OV$(BqLg}N;h!bfc;r1Rj zvE^&sETnjVES|BOj&{GU4`X=yKz?)3*!=o{8%Jze;664d_+1SpZzk(B*0mLSNyA6| zfxUDQ^gIXjvIU>H#!}B4{%B}_AEJrgV}`0Qxs8Yu$G+8-mK2*gCK~Q9=Qi7KtmQss z1;6cA@$L6~R@}_~)kX>ZL_#INV&IjLILlTj+)rpp&=Ooz}9m}3^r`M zEIX{Xi;W>f3BWL1h5PQ{4^3DXDU|aZwKoov&#UrlnZ+%TWrrY0KHy2Z>eALe&0Ks4 zzY4%as{Qw*!mpUh<vrPCV1?(7ahAfRFZ36Zc$7I*7NUB3s`O*K<8 ztj)>y%Y|JXKVW{CneSEHGMieefNHh!-ZQkSC%f4BLRl`x=Jtt$mX;Tk*<%6g@VJK= ztEiUm=kT2pLHPnX!udF~uv0%qQOvQ=OryyF2>}yl3`RGl+Mz~!XbC8aAO+of52prHJyfGBj1_U*g zULL@^kwckMe|7gdqXb%n2r(92aC(Zjh<@XMjk*H29@fXUsmn5#ORJ$)Eu006)92s4=)*bFb2?Gl!4c@5qdlL^gPq9uTJMhHIj;>7#R4e8BM1pKXy0_pvs&MzX6m*QFL&M;>4&&xpsL+ zWh}D*#Xc=+6a2hX%Nu!=*}3OPB$O!Qk#r1K2G(?U;*(_!!XhC>lpyK_v0{N zGx>*n2ze$lBEva5-zm}gk>X=6xuYqDmk@C=G;4%Y_DiS1Z$@KX{6!S_YpX_$WriPI zHI$x@7~1Ozo^~xMDUg-DbopR+QbSE%uENq@-}UQ&U}}iBF*!DKQ(n$`>SIu6p=n03 zfn_*I3>yv;We+;N84;pt0(AU?K4spW&{u&b+FKG1>amb?5p?8SlVH4=jg4IKJD{ip ze8unW@IXL|mG_|PXe)Iv-qhB-)IBFP!}P>yvPkob`KgtChYl1M-`pW{^3U%-b(FXw z)u(J^-)^M38?~`docc4pG$46G9XsT62X#p<=mAtVZ>T0x=Ify&py4Ujxj`MLB!Zn<1{QsSysSe{Ll2XjvBL#t@4nGu5_&X!Nxb(N#nOF^z&Id zaog2`Zo@*ObwY-nPy`Bv`pl3#=~4pc{=Iq*8-6`zG7ybIou2C+zkH)4@5jL6R6yF) zxtr3#*(s5oK%_&zmR|7*IDpJdKjlZF+;smm%x~9Bo!|P#>#|y=+!YetUtcc26DS|mu6p=vJaDT^V69wIBSOqATA7h}QmwAEfA{*Oh z-EsNfgUN?H>$Q5YC}U%B&2~wbN!1s3<-4xc^V5EB)zd@ReuJ*BWk#k!(d^1>#{xZ_ z5}5xa@xB_t*@iAfRGa(0b^2cXK--~lU!)^maq6F{LF!y7>9KEV-9PrvKF zu&rQaZ&!36=U`@m)+MIb%H4Hz`u=iM4)?@}bUN$tj}QY*YMShavlbWt?f8dz*jzogb98wg>JRY}!8yUZSha?Z<%PPZN0qm$`Nq@j7 z%s~034IQL9R z>JZD>W;7i?Bk&~Og`V3%ym9e;!D^j=c{#mv*sG%a8+T@Y4g=EiCemlHLe0j0{*%ME zpT~@Ofqek!^y?r}vig-e`u!g)fI2+H{0Laczwc+DOAZSG>aWCAZg(nqP2*Xn>ufLl zDb1Q9Fm<|br6ix&Pp_{?aipK=%Q|?0F}`H2A*O`hF4XTDL9?C`I`^W;@_R+OO-QMx z@g8_rqiA_&pqq7fNN-oSdiS{xwhsl}R#YDm*gBxEIYuvHvi1gB$gv|dO_#|?LHCFoJ&0-GlqrxNm_yznx-J3Hpb0DWu&B(^o!()4kfYPi zlt=Q>-<-Oey3M`I|qNIv;nDQ6kTt^#?K{<6be zPtcV73!VXK%3t~LninZE>%Em((PUs$m`|h8gGC0c%fGG_hYhbF`)$1`@Y-O^TFWxOm;uibHODO9@-$>Hzz7Z| zD)%b*>6|Lf_<6t1v9{Kx$BgOozHjl<&)rSpU#w_GT};i^X}4+K@*C_gak0lHBl}?O zAWr)|;p8sojDci1Lfz+U6XY$TXxlo!x+Hgj`7&R4E@R;4Uce=jb|5FZUqN+xCMR+Z zxm{vBDtoU7T(JP>rlEuG{PliUfIKt4ckmY>Y$(IYcD9qL?L?=_zMp=6IZ@wY{mJvE z%vwohgLRJaKc+dxZXcS&ops>S_+I2piY2!v32KU_2ecWk%-&(T1NtwC-Eag`@R_2` zjTNa4nzdo4t|QE(-Q+`Eu75&C69i5mS0U;`L5C0E^T?nu+v^E;@Y&f%0a%Xj_!gx{ ztK_@HU&bP4;!Ee2HNtOBDPtmL5qZD2w?~ZA_yxA(0S$c*N<%~GK}?}lIB5N)RFua@ zZZziVCCundrZkP5DQj;`qFE~myS3dr{h(2~l6`E_*nIS18b57qR48R>9P*MS#K>QO zN)Ae7i&=4C_q^DtmqfmIc0PCwQmY0ajUk~zHxyo_PvL}K?VvELto){9+p;eIcC|!! zOX{RxOWv*yjbJt2_dwX;v%{_nvlZomD{TxL{B=qz1v%hw=)V4ZajW^3dnDqnRH+i! zbs3VI`-!qGK*t&-lt%{+Gb&Y--9slno1=&KeJ9G4!DfG#Uz8k-aNQJ zJ1tTJB#MkX^?ldlV7>Knkm+jyuMA^hM$sTKUI#Z`36mF2ZC5h1zFm%a&>(V81xxd#gYkf*M24}^yKyWmghf^7&;hRyv@pfj``b z0+V!wrMFVbZrYDeA;KENStcHEO5}8qheUCbpsB!v!V@@6_~5d4^el8ohx`a0pA`x& zLGhY+4~^+OF@@2a@NZ29dfRvIG>2JI4Z2NX6Idyb3a3>A*)7ZJxfhGGRKv-EqUXae z_^C&eLO&QOv?3;{yN?u`M%Pi$E7b`ibt6FAE3ZR^BgU}%D8_R_f!3P=IwZX@SX!oz z!mJcCeUpq3H;N|zH2#A(-w9tp(Hb!>_R*9$>DOC*4}e_W^Dqq^=?%5BtrRLznVDfO4+?yz__t4INrL%Q z!#z{)a1ha@r+3;(n%K8L8S)m>O2$&w0VwgV$DWXlnx0$Hb)57#s0aZBc)|6($^aQC znBInP4ep2Re}|3$mTu9r{zLw<+-6XP4j+)lT5>sh?~@P?uwB0+ zQ8j=Nmda#qZ=5eE^M_Bh_jCaf3@Ptummyc z%2-bT>AMY3Rc^Y;n)zcOiUX$!YNS!(5hOGn+-#C5>9@wOIOBU``Zdiur6TTa?P3>0 z%J~Mdq09cZ824?OY@ z+z6SH7uyDlL;9+BqDgg=3A{`B(>*k$&l68FVymY@O+{$jDqc z6!8ZA`mb;ssA2_Si(rP(TOj-Z`8_N~K?N3vTHXCa@J5T4c}%2;?`Lr1g50JvJvUQg z@NAh3dShg`$gnua1SbyXETbVx2lI1)rglnGa%L0Ddk($6Fl2f&;$xrl*&BZZXMHw~uliltP^kvnwHSe7bIVxBF z`>B@ffa$6HuF&F`7X6FCevNXA6K=M-zmCDL<~=%3*m!`4EA_2^)mGVGQ>O7klEDxV z3-kRjD5n0BHk&SAPQCKyzw*xftL6o^?CAT*FCerta?T1xN?m&8PW7$j#Etzd3dk>1 zoY@9Mp#?W^d50GWziN7nou)bxAhA{eCI5q7DeW}@Q6KUr5aF{-U=&-t%o#jx>VhnP z=t|9-SP?z%eIC8F=`(naQ)+|ayZ-voJ1so=zDgezc#`xe!U|1 z$WW*2B52Z=9R&Eh*lM#`<+TUY^!vT^wpk({z2DMSWMZq(_WFGK;8A1auoa6taf8y) zBI;oZGcC;}s_G#1=o4k5zL^-T-=6+)OxNdv_v9^Pi5wRHO(zr`$fJ*ULjvV$k9Co* zF4awp)Q2P^QO9AS#t1C+k-n1<3UV_$l7!{~03)6QDN;fGu_1i17h$c;%B!B|*}T4P z(Obq&1dKVSj;Q3k#%%D7U8_RyB5Kix;#=-dfb{WrQhq(o@4uuF&6D}@vNgfFyI7H) zmYJ!L^3@?&b@%K`g@+D%gd!heL9^P(V3oYsCI4=Iv)rR9tXSodk5EZwrgzpGb$Pej z&zw77>V%0bj6eE)Ws1pO&fiqQe}&~<-h~+X;OR|Kbyo29o-*FP)fxrgrS1I7M|Q1z z$eBYb6J;S0j-b?9#BN&SYwY&c4*eQjOi=)II=0WiX)<>?yDxnR$bV+zk|8NFTD#UHrxFxhz%OeYs;Sgn`NxQM?;1d}Aa07H2@d zb$m&e!C{b6Id^r*BYkw>;G!l|yA@7@mWsfBs*iWRpLD;^a(zKkSq-7M^_@t1Cninc)(>VzC9eSR9AamoLtEv*wuP8kZfJF zvy{;~5RjHHQfJktGbb)YTLT1`9b6jpM8KgP!5@O|+1gRq`uth#hNLW@$EHmbO&yB= zc?>7B_Xb6zP73M6MpDfk2;GGWRd&8H{YFF+ea%g}NlKj+^j7A{7LXMHlE|+E5YiSL z3ee3XRS4~c=ewbMV5)kMNS{fG0UdB93gQKzmYQKK2{&*FdOslkH!ieqYM*#l$=x~f zHnH%@|IRL8N>JoDgg-(9ck3ilW;yJ7bhKaBz+$W1;+Ie2md-X*^;{&VNI$mQPY|Ls zio?p=e~D{@&&P{tsn4PPX}ubM$BO^%Nk9-;ff@tXAoOjcbqGcnB80NdOA?H&8jY8i z_5diny`;UcI5%ogWIooFIhtvy0S${o@?w$m_(& zz?N|#dRpZm$VDd(f?OC7cHyH!s7qH44xOeK0Z+fPod6AfHytLHE{O$E(Nt};z4&^d zbW9mVI8Y|1*ysSb4=KFE!U}Y|_n>kpvz&|Glz_()dgE1QK!!_-83owBm1YxPyreE; zWL~N|nLf$?hF=!Jxj)<^9diY6;{YYXAW|DhCw%+t4{TwlRZKRZl@4lR4-U!DWWdiL z*&%SH#XR}9Bi%a1xiNF2(!bLp>khq-KHE32(tG~fdC9n0#yGi5h6-|qx3ECV%p0QEN8e8*mZ*f+ zhqtFS@HrH+DuZEO{q3ClRQbIkeGm0v$ipNjSE{r0i9*uSGimwxJC}ybB6yW%EUrZH zZ=1m4R*iek5L7&lYl2(@HJPjG6kaEpTSMhd6`_OM^wRfxg%CApqVx!C17cKYf#W;) zRltkzb1Gz9sC1?_I+#t6#r!QvnVV0^Fz5y#&&FP&f&%mv7|2w z3he<@S&rTJtUt?GBAsFOugH?rwpoGoeSIFTm?thrCrSr?H0 zw0!M9uiW_prM>i?w^5>W=}K8mnv8RL3m4IKQuM_G)1dsfEI6g-hCb2gRO(>V0!qTQ(Iinq2;POn@p zGKc%@6PK(g)1}1*|1;RXW0$UkX5f}zsC3uDFic+j!8urSUa%P}%6iLhMDeop?uK|} zoIAT+!=OK_sZBZu%36a^)Wv+_db^xE_?HVhq9^#kbY3(3&v>92g$;_*TkzOpuXYQc zdHybi$X2mEoXW*qyW37OW9`=kkK3*2?&<84%13d>dP5ZF5M77agivW$rBB?s(Snf1 z9j~o$94<=BwysxH9pMUQnC-TJ?Z0@*&S+!Xv3r&=IG>>s=)n$@F|;4RFCXYWu*)s= zz|=upshsq<@GcU^Eo@hOi6K*>n04A!j`EoN=LaU=rAEd{kNempMFv&;4p^SDh)7n4 zyY`)x>$|g;KIBQ16<&L_V+SdoOd@|w0^hh}6Zq2k=YosF3oKD`oD+&1=i8>Qy~{^# zG`!M#mmQ>EzdQ9Dg1cv?DAEoelT;vozudvLJa;YjLQ4Gd)2UCiUm1H)9PgqYN7eNB zI!952^~0J7x4B6jTeCIpt+@}+p3sshKqB$j@uQFl{%eu2LA!?`L|FyeOVs&zdfYyg z8+GZX7;fo4)lk6fDm+?~Q2=t#BP`VpVWMtoESPCV91J{nm=AqPJktyqWD_oA$}l+B{jrE*LS!n1#z~U*R<#FI`%7GcZQ32^BOIjUlb2w^_1YeY z88539#l5(?{L6p-j*}e)+ed<>z5$uW|FM}rme>-G9nBa1Fg2VS#WgY~eVL%bhSPkx zKaKdTt=-*vb$i$@JC9Q0ERmxv9rLp>7TJN0<3R1v@e+_e@wn>d%NjG7aPDh<{Br({ zYog47LB7w~4A`0xoi+|9<~jaM$F)c-hfjE0c1`~IL zkyInSWDacXM*duqJ5Gd|v6GWgJpBuTHTP5xljjARwl6PO-dd3-Ys5&~C&zat({)^k z1X&%Pm!=(oTez1ca^cODtS1-Neh794ES!HDlO@WMsaLrc{Sf69OCkGTF}Q!x0Wq_e zCB8%8ZSh*|$%|2@-d9-&g5O+siSDx+E>Zq=%USmoX(h^_#xQeLNZVcy=z?_*HWU?q z%MZ5san$bU7jF;ReId_EPEq$14PEa_)I7q9?_T^f|Cb0pZoG$WxoqYz=XcpYiBlY% zyKjwi)x2*_^60}aF}yU)iafD0^b><6eQS)QL>|N$b7joRz6J~m_Trfx;k%Gp&i z8O3ktN7P&fttH3^|7YdE1|jFQ&}Q{^^Imz)8v|CIjCBV6S0bqt)$=&x0yoT!esEn* z0iPT7N^ri!uDdKKU%Y&tkKko^$m4ty!n49GH#chSRa%IyHjDZEU1QkPo+09AJIjcX z2;Vhk)Rhq-R^<8OQM1&qhT(L*~KK z*aMeyLd{A5Fs!yG4W6FUP$xJG;f(X{o#qYqW{BD+?io$K2Ggk9?W2=~HaLJUDU~)U zPRX6RIlSRUO$SrPC5IW`*bYX@=ZFRIfEyjcssWfXJO;cw30H@>*kmzSY9$HneAe$^ z=E69rR7wx(2^V_DO|akCQsIr*A1@tq1Gx-y!JAhsG^M+MVdWP@6v{7xA!x zRkqY2bgInKSeRAxgO#MW-fEg)TS?cF6{fhZm+O#8Zf`4Ow{_QOEVUmzZa`}b1`eIN z5!lNU0^ji-&7)nT?3hKrkXE=z(|@-JSO~~3X8Zy!dU*k9{<{GYoSWi| zM6_*>l2TX86_M~w`CV50!0V<~!zgIS3cCkPk}+2m(>^zMe{zxHB0bNGEKSLYRD2%p z9$}En&m&a-H1OShDP}OAXZF|X!4T8RI^s#G*%h?6h{^MXHjKG@FL3Q;uKiGwnNGZN z5!oewRO=;^;KMcso!@7|j_y^z?%x?J?ZE!mW&Ax&@Yq-X4_ogYPjw&uk1MiQg^qEI zC?nND);UF}j5vyHLMLQr9_!dED;X^g4I?|d%#dSbloQ9ukq+68l@alK9lGz&{rP=A z|Mci_4&LwAx?a!gc|EV|5@~X%yc5u-N;En5#4*Td38}*=rKds z-nUvsFhjYW@Y3aU@3e_zl@?gx0zwS}>M5ch4Dg7GipFEs2Uj~lm*5giGSa*0DS0~r zc?_2zkTq?_`AB#3RNTRug9j_Z$Y0kuPgCwN%BAc*frVXxT%CYY``E2rzV9OV8@|w> z3PCi4w95}PApNOvp)X*NS4mjWxS``&?be0sQ^#?v?t*&nd%g}DVrM3*s=PqWoKUl^ zt?<$o1?PTPxX=Sq^FwDxvrhn#T#2Aq3|~8mI$^1# zKqrNT$|;Q(UQu{t{+Rx%9o0>UiaHC7mQG7T!&)Kk)LF7qH2$1~cvAkWHu_N3TvJTR z^Nl#KIQ{xg=@74#};P z#a?h>@gIcBq*qbB%}aJGJW6vZ-63l9%Ojj-N0p(qZVV_vp=K>9WhUx~_10t23#V^k zZR}SQH7cNTfi$hUXPSpfwMCG(B9J_EsK^phlaJl(fknP&)d_YW#jk%P=v zf6}ML9;KdJ-~Ib8q2`sC!+Z-)`#Tkq7oo6l_Ea}b)rY4kiG5ZOnH#2O#D6O+K)s~t z4_~=S9cKfIcTId>x9Wrs1=d$a;fX4yXEHx@=BlL2RWa+$3)*LI-B1_?@tB{c~dr?h2g&s8tacd`y z+)>X_(vnKdIe=e6T0>#BukgepIQJ1P$Vk8aT-aR5fM0i&%er;4@wrwNRyz-nmKBB; zTP0!DMtuLpcz?}DP7`7ULi_5Iy#T`aM4Oah0q3h|m~9&64|e{sxd-cF)^nmpSwn7$ zmV0%1^({P&!xUo1j-V32UY6DP!iqYUKq_u}n!>0G8?uFyZ~SaQX!%AU5771g!&){E za2N78xm`^u&K{WttE$B#OUgTNy>4B%wJ!5@LS~H2Jz$ya9NFe5AUA>VJnt0fn zT@e2E%k_aPwEoxr(E{uSNw*`s6`gxm8L3Oxx07hb52br=)h8VqlZjKk0(a=T!t{(M zZi!w{Z!|ON_Vw|a8yQA-oeLW0*uR%;AzSKRC&;d8$=kky5<;f@^N{?IE37u?VeC5h zyOaeL&ij%59pekgBoX@N?_E`f{t(6BTV=*=YGLg!=aIGeb;kR7yTv<~FHBebrXIp- zs5@3wGNOv_k2CEFl07ABQPSitm3_w`!M-l}@7Q}Dkq{lrB!s%g1u1YNONF2(8h8te z#7n!wZpKKj;bt1n?X(_tKl$uKKE7B|u^gFI8<5D%3fKSAA#R|g^9=p- z^!~1DgAqH3$pFUeU$GC#o4dm=C}+nmzfKq}%dYP=>=9Nf4mx8u4W@^3JR10%o12G} zFknLIMZX5!vxRi3a3JtWk7AK)_lC@6#9fL%)9|Ncbcg|Ug#2~zdERo**N8g(UPRR| zEX6l)n#6wg8h^C!lJ2_*6yrX3`98is8gyfZLt>Fg!R&DPLy)vse1_kWeP`-xER5@F zbVY{t>9-hqYS46EyG?3s#vU~=EC-qM9Ck}z9DQJrfIN!(*@@6U4q7LY2Y;AR?pX2Z z3Gscvb8uXwg3*3-p;NOJ^32z~Wv>7rYr)54C5ax^>KyJ{xmeB~Ii5xMvi@D4z#a*5 zQwOZHZCkENhLzq%Zqxs1S0`u|x!sY9>jtKP24#_|ds>Ft*N&&JI_VB*ddcyvvw?DL z?JqF!c9)^s6xL;>N3M^XJ_qj-Tnf`JU)59nYR)3X0vyy@>q6v=J0$iMeTYyd3)Y)D z?#Q8LvCt<$atWvlpn9FnN@0-=!8kIs)YRWb5J0#ug~`5?`k?r_wYFVVe|T?XoeYZ* zxnc?V>7(=iV;W@Gh>vRF3w0Idy&%)M>FLOQ*^e{;4D!?Bvh>*XPBN;63pW|(;s5^`mNI_T__HYtx_ShI)zIa(Mu*!p_ujf4&kKJ{52rLWNr0! zg!&Jx!Zmi9{}@wPgMO*+ol+}+Ur|tUdjK^-_Et|uq{+xjYe_bGHfB`u+yHCh8~8$= zPE0z*9exPfi*CH}u#jIECw#9^^z3AXpc3y~gz(m=TR0|$)}i7P(Ft9M;@H+ZD*w1c zz;=@mdc|zM6n{vDiaae`9sek{HB=3Pi!5b!N6SJINMCi|17D0k?(CB=?H70TY|SC7 z0Rrw+QChi|SRiw}Sx-mUBT>yy8;visemL3e_0l27FBv_5j51ySx?O)=?mt%sxIr}~ z;g-P!HLB?fmQX3H^AOTqrxvTO4T7ipnOqBMTF>G2rl(!bXFwC$55^r;F00Q@7|lpD zJgGxHNkpIih+x*!jzU9#D+S!hxP6pdnuH!$B#XG!q1Qvp1mb>;vg^@{^^(|W^(n-i zMa`95XN9=;F6S-W`Esf3qmUyG5R@K{3gY-V+Zi-}7gr;eUZb3jfBnP*Oiw%EDDoJ- zAhO+O1$67!(#(hEI7H+5ih|c<2>O z9&-3{ht-FW+>08Ic;aRe?-Q8vCTd=4b}B1hgP8uTm>cL0Re#w0=Ch`F0i6h)o(8>9 z`Y*A<>AQ?>r*g4{K~y*IzQk93uEN1_TGbz(lA1SqtO^~_J)Y9|$-9SD7@7Xu1y3T; z-^`k`W@b&fWmn~;Hr3Z?q}A;9jb{XYi1_SCYVtmock@->{|_|GSG1&4cUw_6%D*7Z6 zrv#7VOw~2n>*##$n^9eQT8G-DkVUWS7G=si2kV3>2oQLz`u!G^%?SKcxsyf(oJRgv zS~4wJ^1@2tVK@Gm^0h^ugfA>xOGXalo+T6x5S;NEpY78CC~~`e?9Qr##z+ltTD>mA zFF8k+o*U^DjL?K}2{H@&WQ4Mp^*Xb4=dw%Y|NcxL;Fsd9h{F$>d* zGvhn(c+T)>Q-7Y~poiDkmo8u6ymXqZ9f5uW@cRCide(rHrd**Wq88_hOd=b}kq=(6 ztFV98fMD*ieC}sfcZ?UbVjsMVov&6(PjIe5Mq2v}po;WGP4aA|<9;n;G?T0<8GXc_ z2PdL)aEPy(e{pM9Th;#Gy=i>ZDbZ8M_3U+cp^6~=Vfg(P5pqe+SHFk3IkJ|LJ11kW zx41qHaeDgJqI`DgPel|v^qsGswrgq`;dyQGr{IW}Rh6#U`onZ?O~I`+;S}0n-z5hp zxa}I{fQt>#@JLY!wBo`q@^#*X)y^zUWNm|D0AXB1i$RFS zx(k*&It4fEKmEk{jCB`t;`+rBf>+_nZ~qKB@l)HzNUJ}THUE3uJeQIA$ti9Wzb0X( zPI&d6EGU}KTc9`sfUr41ocke-TY8~lIF$oOv+Wf>^9{u0e-94q*e$(qWYi!`7ReLNCZH60YLGd2%!x$l zlVpfQ?GkH&RtF*llx7pZuR(mqN-o^KveL8W+jibFsZIun`+VC@6Ws`R=oQIVZu-$m z*+Xrfd)+^3`q)b&F>rHIS@f;CN+)upgZN_bib;@Ykt|p2k#A1tXTZHRBc76ysMTa4 zv%`9EEG)6PMk02_^yi-QC)3ARZ!hTa7wtdAvtLXM`4xpyQN_f$4(W)UiuI~s!X?FT zRNFwIZ6O?oJ6E;*QaSdN6HwtQ!89M-OT`+__wiV>U$!yv$t{!LiEy<^y&9SoE($n> zGCc8fhlqH<=$+Ew_7`W6$I^?DLeiMqQBs$E9dtyUD~hU$Y#yb62HbO1r^t<`!h^}a ztz!{4XZJ4lo>>Sfua`PPe3mrdf{-&z{p&dNB*Nb>&YAkOnM^?m6l7F5j)gJnUrOWN zx4X|6$r|G0Jdd4{-yd2@3FSC^s6gvsUFkrnbSKYFo2FjcRjniu3*jR9zy#{cjE97- z)To3}NtLTdQO|rEG#U^;#O@gXqSZ=NGf5}nQqdnp7tl>}Mx;QJRa7;aBk~Npf%owH zrsAS1jbnv|XRh3=SoYwfk|-#PZe|xMkW8TOn}g@QrdJs`B#XE(Syj0MzHRmz|E-jj zGC%4ilE}r|1EDbA|YYGH35}rzBl>e=sxNKyiGzI;wFbmGP>{wwEAUDN*!>J zCN=8xnGHsh(b6MuIdc2#>2;ZwUZRD%_pq6*-wy?)uu`pom&~ZTA0C2<#T{#3Lp-Of z-=#ncWp-5QCEY1M+U7NE7WmWDF&*colimGn`~-Lt_M3Vx0Y7bkH*1$6!VoGb=2Y+o z^vYvrkB#s$;HsLwYhiQU`b_msR~l>01a>*g+zoO7K@ZqNA+j<5*dx7xSrLHRu%<+* zEcsgI*Kefe*lmZHT*@vfPsBSOo?{f4|FV76v0H*E`LbV|q{YxuiKS!ixN#0Yg-Q$~A$|RFRq?{_tQLt_mCM795ck*Bpj-qKY645@Y=|=Z-@xiG zR5;|Uw|l?Hgl;VAo3LY7yw_9en+4;pGoxS#3+dh{at?D~RK^4t!_CFf)RI#yLCU$K z)oA=@kXkj+{gQ8fv@+ItG#8C$ryDIMS^#TXwa%<}0pw3E`A737gC}cMwh8^+4F7=R z16=&BPPia4+9c|a{NpL#`+RmSgKW_TrqhHqcL0LOqdRXoPSC zWl>+-3D;Eg7>=49^`vh(9}#SPZm6~ZXD^VC#y8N7I;2J-_|cc5W@DF4 zkW74cJ0FQK8YnF(ul%+6<3@s4qS7^TP8cMxaAT3tF5vUR;Te>Hd}Xuom_)3wz&CB0 znc1e-d|8m~?o9e;2l|X>VGeE56JCwtRDi?k9Gc|TcYz=#MtJ~wb^`d zhy|c;hTcEm{WRfZc^=|uuXhP_+$$#P41agzbmJp=R)!YNjizpV?;3DpjZ_vu{-~%3 zfh~JzB#B@^%{&glOWx!hOsH;=nxZX8bMZaf_kCPs0(*9&-a6{!|FO;WC$TSGzO*~< zmJaZ^@ny=EmOuh0ecAPpa&uO{WkZUroPO5V)|6qYE||L3BEKsjL1*3cd#MpRLk;Iz zEQ`zD+|Eq*OO0^u*Kw|@d{g#jGX|s@dxA|~)xUP>BAPf;OVCl~`wtC7S$+z^UYdZG zsJ<6NoNut4o=^hb^w3?8Pw)!R6N}n`$6ZC8Crex;Ml#Fd86|0Y6*ObQT+C8iQ&?*(2q&FsdKFiY zQ+9XqFlSd2@)?x=v26S6VI5$nMY;7S>+tTew)DhD8tXpq41&cZZJ_C$EoZstTc~Z` zBtKUcr5iT(t?JE_7(QCeATmVf_W>PulBG!ZmimPz11=5#@sph4T(?d ziv9Hg;Z9>m*BuK{g=>tD+P&OIm#zy5ajA!wQZEoZGyTA+MxCupU`s1iYKEWI428A( zql?HxuR5ER@29pNo$nd0Z0EsVRL~G;TAbDp9>|tps&@Zuz@MdH1-@Q)1X+%|l$Yz}hb(IU?xQ{=V=59RZs8P26CscG^W_ zVZPS8&TYMk(hz@qw1b1(y#@ZX#f&G^?Or&7F{pRbFuN}dD{Fa|qb&rQz2aEM36RxlHaQKQY7-;={?gY4tYJMP0=S-$Wz}lAQ@RDdUZy7dG z91CH&f%J0B0*p&_?m5wd*3iULaX}%&#YR7bZ@VOt3lxCr&+ z#A%n5S$W}a(2cqkNQSf9C4a#BJ*~*IBboc=jv;QGr`$jP*{Kxcpp8XOxbYXCofCX( z9R2!{{woGjdJVs z-$|5Zj-$Br6Hwp6D4A1pAL1(;J#C;p#mD)2?4?KK|9?PFczhEtf1f8nYSPfFzSCo&#a|RV7F*8DSs7=(+-Q43$vsw zYC8h8%IfbS5Qe@RN|LyeB|MFn+|1(OtG){}7j^cLyqY_%^LBTl17{>B|2UW9t~hmO zinrn2d7M__2Ya76H|u$D6YxfYxL&iDo2?X8o=7;yB^KAMqP{&B|K2+&1nYOJ1MQ>qfws8~{LV9QE=bThGP5w>bCa#cI#@$JuQ$oP zyQ)Ujs?>Z9e$NHuhBIQjGDKPE?w5NW!_7{-^sy7WaiQ1f?y?Qt zejFp|;%82Qo1N>{!q-z^Bh}~QQo+@bVsoBJoFG%P9e|tb*OBGk6l;zdY8bV4BK^)P z_lEq!2{gp#ivACY@|oDwmCg->nI(26-r=W$%IPj;?7 zlt0u^!)810_$)a}sx4$r!FW^Y71ST?rMM7Hpoxqqt(>EAS%A+wY&sUmYc;0njImj5 z0<+m;{~0~tECPr$P= z0AT!=>k^y5a<3*_7$5gkA86XR_(t;e2;K9Q`0P&DjbURUe|acBF8^}{Dm6mSffS=z znpb&^y=-RtCQA@)E7Mq%VLtjs$WX&kmc3vDuA+V&%_Q3A(-mwdCncB+JU&~T<1*W- z>X|)F{hNSXd4YhDok(f#GyXx66pNVy8GBI1%T-bIc$M{dwmJ!FztU1^12vWBD#wso z1~Uw}Fl87}A+LD+gzEQi?j|3MU*n6{T=HixmSfa|rHb5umc2?M_B1ws-Q^XYUtKgU zU-AYsRbr7!BY5sa4aWqV+Tv%Jom#CeqQK&W_u-i6f zK|LN<&+B~U2NjeNnfcoL+sX0+QRg)zP>3dAtb}<|A*?hX$tYx6jw$Gm0Ya~;O5M~5 z5I~EBCxo@$`9j}U=)yDpBF(@=OniK6_qPh6Bggsrd#U2fHiYHDf<71Gj7{~Bz(Yzz zJ`r6-f)XfvJ_ytTgHryTGJI^sUFg7bs2#f@$_u*_%St=Iy&B7dC`@okeNc7*CqV11YN!)~49SDx<%JDWtEizeORC}$4B zdxa`RMh+>3SxJKSs3nA#xyTjMEML0O0AEgXEhp+MO{>V2>8@H?K^}#yv zbl#j2@j2VK6Xrsqq7AK(g$-Ot2~%OLb#k;M3T+HFA)M=3{zJ*^OECD%%+vS*=YOv# zO&%%Nno4CG)dXVd_l!R&m|f>#D8K3$|3*zTwlW980y=dGxtO#mBn*8RJBE#`bg3xP zv^C31=2}9gHJoC21^X!9xTO=YIxNedpiKbu)n5`$3~`_a>s&hN?ECpnr`3oods|4? z^Oo}SPoDM38Yn)g8}d=Qnu7dxne=6fM`M8Rwq}QR@yj1IF8RsMgxiieIrs-@qS$9X z=`2PaqT9y`_g&TlnZQ1U)mdDJ&+Vr3ZG%;n9?n7(FI~VqOi41TV5YVoTlL%cDWQ9G zlJjiK<(jF~$vfiZnqBh?cQf(DvsrqKdh|5Uka}HIGw}=?mm2Ke8w+;k*x{>^{zt4L zm4SwvR!}xS@RPIKhMT_kVuVMGE;@#aXnt3)<2^Ta*@lh`KleB``_G?{q{zLhcKZ^W zZ7uQ*3$V>Rzkkr@&q`cpb=Ghg=qaoGMm2NykByv{bkD%D)7c2H*TaQEKd823ew}_D z0e^pUw4w+JKNrw@-m}jXQXX)&H+z?n%Nv@cdXy<9a`7kfJflOF;=~RJ}`)|>{HLn~St*ns1 zG-i2OtD9&c9OlU})4Vlck){noxc&K`J5Fw!@p&4|y!bSij5;EoB!YAB`Z*@&DkJKs zkIzm42>@(0lYcG)X5=rPpxmKYe&1RdnH-l4*FcVbj91BcjE@4V+QQ#`H(qW>%&=qgvU4wfJ+sA$Wh zSK4_;FfWWKlbC>xB#LO>_p1qIA2r}ITwj##v9CRqYY}wT-Dr9NfJ}?B;J*2aZ9{qI zGp20{ii+aU46G>x+-HC4JQma6RvR4zH(z>A-yQ8=CN1x?tOsNgfcEWD@`eB~0*|?W zFx>_!#}Y)WEeNO&FT>*brAG+1n=P>L0iKK}a@)$=7}juhV@a;Cg)~Ji|Elxc^E~F6 z60v-^dz)x{#~S0nlAy)t@q&Jdxlscnn@6+a1(NGWW~}$Q7mw5<{^+3|#N_Sle_`%W zDmwp=9fjaL&@Hqn0kyAF;d&0)cdyVo-ZgC;oes(Z_@kX`OP@b)$Q^1Jzy4dl#nRH| z5&5k6kx)U9Bglo^z5z;t*i#I*Zdtx3;wFGdEr#-56z(#T(6RRReGqT7vsGMu?LRs+ zHIE@lwSTk#M0*le|6q+Mw^iX3_BCzj!_`!vuAwZ4f|&fD2jD>h2IRgRgQiYED-&$S3Fxf@jp&T4Lfe)OBb)$4#Q=lite zx=3&vD1$#hFK`1@1wY|r)aMRC=A&}vnV#k+cAKN3Ki)IoQmZ4q6~x$9clMT&W#3>H z5)x#QNZr{28oqsQysfNgdl0LpxKQ~gHN=yh=Jg;}MDs19A^mGuzot;|${|g9Nv_4) z-Y6}&uO#u%{vb;;(9L33vKGdnlnbEzC-#D%Ht?UA-#-V_-vcr!*ld7)^oCZyIp{x# zVma$O(A2B^A)aV){fc$8RisJOEG}Q-jpnmOfI_vJ+~lL&#j@E84Wn%ze{t?zZ+f$< z>8Pf7k?mF4#!pa|p-@O(O#_{Jb-32C(zLs$>Sw=>Rv!G+<*e>!stvxFvVhOs`I6z6 z*?Y>-Mh%VsYYTv&=_iDqYJXM8fyTaSx#xSx_j9?<5?xs)QJh!4)D}GVy1_0}gG_Xl zJpXCE|Iov{`jX*D_je#t>~6od%61l**D}Y$D#4#W%tZkfEb9>N=V0w8FAE%V*D zz`+OaWEJxLjQtroX`md^rl;bZN^P|Eyu?eINfpPg&8@w-4eXV%U|bI19K7pf z#=jr`dn?9uAoN-OhmdM>A`T(gzln~Vpb7C(!7JKAox0b5N$q&#m))yBZS@FW9EQV5 zFo~CPG(T@4-au{-s=3fAPCKwz^mSB9#4_V@KvMC~iq+ZEBdkZ=_~eaDwAWsM`k5yC z!rT8fTChQY(1v#rpM zHg}$b{+yq@tW#m0#Urue<6kdmR4dNiP*{kOIV1PD2^@Zqermua#|r>?U19IdCK+DSb*B?$pJv=~O)ZvSN@EV% z^2I)|-S*?&Ww>RcU0;(2+Naq3`PI=go5R5N-~q`;ni9qN|Ig%pXyPhy21?%}!{jy8 zP>06z<(vhaouMKtF|6(qO9-&Y3EBtjyvEoY! z^W~*KpD)aXmu8sI75$pd?BxTbgu|v;lzU3Pr1sF1N6)%flQD{Xj=BWUKh) zv-M@H!bYK*LVYif$$hY58Lgu`(>CW{C8Lwg9$g*to69!OdqZ}i{%4dktc1(>R zt4YYt+Vvml^T>B`z;_r7#1gr1+msu_9^XhWYZj1ZTqZJ}8o zRij_)HaL3>)6CGel*oFDAAbkvz$`$M=a50hOk`te=c@}Tq(K9&LYLv&F%q%QZ)>6q zOe#Xx;tJB>Y&E95Mm8!$MRqdZv-AG}QU`_rtS?eGE%@%J{nUpxH9KR# zl@J@z7(9@tw6<~+(eS#zj+)6wU4q_-auO%7!Ye(RUvC(|X~=68`v=miPm(x94_JBJ z6!a?~7VYHf${&eAAE56xl!6C#);Jz!cojX=P{bVMhP|vR?kfD+zr9e+uIeG-2{C9lv9X;#Rc_bu^i*SfRaW~@Z44q~e2aBM`ZSW?)?`*NZVV?xVpPCb}& z(!`aA(nsaIhSQ>?g;jhW@CMzi&Na zbn2*4QAhW=BP?k;tMC)w6J;?#zO^kyML#cNRkeEmO?vM0`_kd(4N*XNurO*Z3H<8A z#UzD@aW;^;Q;|6iDs;EZPB^3%e>wdf9tKLlG;(pDFi`y3fw3xdJ~_{2zy+ZxyU*zMXo&Yj|+o`kNs}kqy+zSP~xreD5M@yB#UBGinkw z$`Z7JfGhGP+32(^}f zY6NNC(&o!hK@tT#J9QvF)#rEoUSg$=`Y)H#j)*#H;x*j04rK*unD0NY7^CM3)tt#W zowz$yWEjlbb~7qZ!lud<^pXX|ic0RSxmD!hi8QrkEP#5owwkZFK=s1!^Jum_q96?i zpN_nG#7y?>+v};V*GjY~#!Q->9Q^mp|D&ZviIdw`uJu6aChw<7Mitf+$lDoY+ds}7 zwJ%5G2P1<(gss?VOzsA9hz|E0lrL_{?37JJ?nKO1r$AGnZHqMVpHm3Cg1pYk8eGn zk5Kg(Al68Cr_1rTyp$jG>+G-JKYSb*a6}#Ti2HFBLnR=4~S zS7S}v?Kqj8ZV+c%rz%L(hEF@(!wma57u&N<7y%8BEofgL5$hso=LLYnztW-ou?Uf~ zP97h8-_$pSl(5t+l!E{vu!fyU6jw_omA}sU3%+NQ`}UktVT?y-zApJ^5MsXisR~;3 zYmN|Zw(*GO+F?Sk#E$Dy(Wtx0lJMW0_)Z{!l=cn1gw*m${zu zXrQ$1_rzX;qy0L3-30n%PGdw%aoCh~i!An46P%|x4dP4Z>_Lhc|Ep$1YOuB(d9x^T3R&evks5lQjTTl-H({gPSz5q z7a!XA3==<%BCuM&DFsfkAj zJa)yJ-lXjH79l*vF(Hrzr=V?PxY7Ny7hBEFUyP1ep`fcPGBRmx^DeIl=-}ybk}3acV^S0u{Pcrxr0BYdB~(+GMV~= zP#pJEg$G^T66VESF_1dk@>cHCgaT_y3cD&hj@fPaJ#|lsCFdMpn}S7=;H!JD^CMxl zIrtt-dg3v$BJ@*(=C2D!2yT692RCZJ}%Q{UcKHi}a6n zqEnCxMaNi7Q-zm;rouqjFG=<7*ZZkRWqC*v%sU`=R65?sakM}{JIRKMsb!1?HQ(ZW zKX+lke4|~aVzRe>#_u6W`Z0+Fo2UxE*w=9ya>jFPLr4bX`s<6TgXRF3#oi;9ZDYHy zGn6lHYs|4ujo7l(d?T)s=DJ>k9wMjergh3Nsy&5wm?=tR_m6;j>CBmo7j4r zMGTmph_n>1bdwE-$<^U|SU!RjqBD>)e~5`jYS-L`G1<&0-e(_}aUh?Y0Y!%%W(a>Ea|-4{&r*~A);<|Th#JH(8f$q^mcL3 zQKhBO+~uUX^N-My6WB53t;4(9W7~~xg&JE1orUCA1t>%?nTnM?#gVwJW^E#y>4SOF2(SbhnpI zo11@AC6*?l1Lt@%n}U`*1ezRO1Gts$6Y%dm7v(6Hk7C&8XR3|OKW>6-C@fJ6omOSKOI8)3qY7!5}Ep2?5l5Q^S0X`$K@Q&dNU#* zu$w%FE5ZE2Z(c_?(30y`V8thPX~}Q;tXN}w>yC>uDDCu*HI-l%(90*to8EP+oh|QF z&VeJlj7%5V%r3zkYutS>)`CtCq9VUrfw`>pP@DwH1#1UHv@$?uK?$eJjBO@J^2Xuu z_?{?4cqxddAVE<02Tf;v`npsxpw|hWWln|ks1Zfye(CV>&)ja!gD}0p0eCJ}gpLp< z3rRkfpQLg+jsj2-z5iP&qc9o3YKgvty)`P)%Issr$2{wiN!44rrx^3O>XI zvKcAt|1;MB^;c!;o>^}BpJ-8+j*FE?lB^Y^<4#>_l#9fB&+^SCWEv%5mbQX60@{q* zjAuAit7%X@LvVO8)7U2~NeDMCsWV8FRFuvBqtIzA&xqLX5KOypX$+*6U2&s<&giY@ z)8fJp!5+`ACxCt9V$qlh#jf*viw*#OR08(%mQ@$$XK7XTIA#=L7#pS_Eb1$B=apFB5Pt!v3RN^@h_Z6}SScCGkuRk25)CrFmX(6?b(h$bwo8^gdNIu8 z`V|GD&u(v12ug_@SD36$!k!&iR#)CASzhhkJ5BVMk-8YLeI}-b2ax2%p*zsMae=+V zyOTzNOyq_odj9vMjQ9s56Ic*%`6NT{YbQ?>AC{(^5$f5yvJLv{V+S$i)i`oHF6s=Z zQQ)ue@Y#njT5;N>VQniHSUNL~>(2Udv2BF~sobAGhkT28t-89ULpm=*5Gx^KbTduZ z^~(oI)7EB$BxfW@=(@>qlK!XJR?4vC5uv+9&d?FtenX{HrvlPD5OtPFdv}S@nHzRQ zoHnJmq#?9%d0ROlbBAQvOth@;!-)-ca*gyLF zzw}F8IU;knPkm`VRdlJ->^6nJI`CNz^&}lg>!oBHl7FwFRubk{@89HTTK)P(peG=A zLDtq;N59Sma-986AQ+b70+sbW9PxDA&|F19A1kUoU-c&)DhIIuinKfZSWmZ_ccKpq zB|YWNdefO(jA7mD7Tr64@jmJLveE6$)8@A`L@7ozvu0g!r&9M1hVsqQ6H8zV6wwIZ zHdW%*TF2B9A!tM0ZI1;_Qm&oTdFM9@{TByui*2S8l1D%m?n+zW>uwBzWaQ z?RWf;7Xt#jE(iO`fyboY97?jrRuS%}vKoe5=frgiN_#;Nyv>59*eaIqeJrS+ENjV1 zwcAC`vZMB7R@8bOo-dSxcU}0wa(QnMbK_>J?sw-C{2w>W{iwNA!J?C(*pHj<&j&H@ zt?MdH1>~^Go?V!ZnDcVPi$jxbr|KK-m?v3`$Z5 zZ|t&6iKjlhBe)Vjsen|oZR(lt#L;MF4-n6H_iQJ+^T6az<&LtV>>JnJwc3?xAb{otiF<9F}JxFusk+C)wq)8(}ram?>@mFd@QLBb%|WK z(e{^Yrto@{B#x&?$3SL%`WDikr-h{xV}}__tY4Ov;ALFYff@I^G1b_oD?0ak1 z1)6HlD~Cq)jsZ=bCvV_gWh)o3atC3^4{{A?@s*Kp4-mq`9KZNDzp)7%au9f+?ez9ED!;N<>A zASK)&{BZfcZ*T4jjn;AN!V&wqSDk_N_3Ut5cfUPh=B^UW3sxKmn(+*$V`OTSeOQ=u%9OLNT?hmW8{MRODNRK<@7 z4OnY~42Q1J(j6G#0=GY_N({@$bCJy@qaa>^t>N6IpQ{_BXSMuoEbc1AQg>(&9p%&I zoRQn{c8h*|^7*HH+nT+0_MyY?Ut_KK>IO#g``-|k^%6>Tly(H|Qjf{2usWGm3QbMX zMq-ws&%VQA3sCW({Kwa)w%m&{v4`HNez1I(Xu3#`n$yj23dnB6ucw42+gweeW#?97 zNT0_ZQ)uNCaHt=)a^fsxk34kCTKhU}OLy6-ghiVeb9G?zirJ~`J!fG(z?!p-*R(2K z*Wxv?_1S0Om@FjMJej!1fMSWZVI(q%89nB+8H zez(Q`p^0W`<0!YPsIE~iee(+%lwFl)Hcc@5MdG%?RbKy`?IIz{inu$~3(|@^#6_ zP7<^8{YenCakD?@;l8c=(>FJM{b60XJQ=tdD?L4P5Ot}O&_`%ciGwsZ0TNxo(WHwb zPgJEYW4S+~9ZZAT!+7JIrXRHz8x>lzxRq(YQ1G)%%Ew1qBS$VgNWOda_?xUNik#DM zR;~uNq69>U-a8iu!SKPlP@7=9oKBL6`0ux=<&KU$_*KDFRR|4z!i30N`uea(n^fri zz*LSRxJiR|^&u4UF~h}O_F#B!d<_0}kzsk~u=mV_?IixUfwA(o-!3^psCcefpRsJ^ z;!hg!u4LC~{T<*vIqr0M2(&WtOZ z+uw1e%DYDbrnkmE)Sg$06D0?5hM)PDdjFpwWw+IUeQfMpMF7s#_W&m_>qR`=chn?F9b10h$8+VtA#4cgRQ zma*J100<@7XR>()cOC6H?v!F$SRxL z!XhK3;0rCFEP(rK=0AzBfyoMzLdMnCOKMGnzbk87Y!9yrF@qv8&Bng(TBWR<>Km=g z@vL@V$L`;NB$qi+;SZgOz3K;bxD4^2Y6s=%cylV#PB!|lv~4N1h->0oSB% zvj#Y$*9prdLB9olG|XA16qA0P=s<9FlCgn@_7=#ykj47Nh|Q4N4BV)^`M>=u z+LoJg7ky)g4Yb*plyx1p@mJ)c6fvU1eLQOAgpsb&ug%rw{&DB^cyAO{h3(<;0wEC2 z{O0~vKf|atp)gBe^oL5PQB4O%Ge<^}~f?mXCo>Si>u^_pY&s{Q0a60>=m zYXEJ~mhuiPvV6XA#Vw#WB5LVzY)Odcfq~DP z3Ouqms~gBPhH0BydVIYk;#kZ-9B|zlaa|{yf3UOLvunD&c(I5A>tT9Cfylw?}$A9WU~P0LZ%TeT?;9Fb0Opy zCw2`Jq$XM)>4=B`7EghD1O`dwjw^!3n9KL;!<}DyuB@$bs02<{x?6c!oB-*{El5x_ z;HoK1AYb{&vZOkhVXa~Z!m~=j9A$haEB#7tXs5=`GO-O#%-xvZmIfc)qo(9=! zcy=6mp40w1i+3UFiZ#tRqo>pPX$>`Xo&mxWgvOYV`0eiBXssj~P_qUk2M({YYo_mx zC}adbdQ&_~Gq9p9I_gyJJ)M;x^#CDooD!4kn@d)0cEk3_5^jdyb$~z9MxFH#n32de z5cNRtwH^Q50UvRwpF<~3&<)(psSBGaLzzYIoFxQqFS+|m-$7nexlyL6 ztN3MNsSDK7pL9LeON2aFpU`XW$A`8Eq64_Kh3yfDi%<+fB&-2d$~rt=Q61D(&d>-< zRuq%cWBmHXBiX+d7xKrS=&91HKxCTj2^S*C^=y41tQk|*m8M5=AO+6_&RLraL<;wt zpK_O3=;bWFsFid&W9@X&ckBHp3X{1Uvyv#alHj#cHfeLwe~aOp|0i$-8l3_Vv;HcplpkZm=?747vB#YU%?V^-4dtEF(;guLR&}fUl&24;}Ni6%V zsnl^FbLvAHL-Q5M;A}=F>Tv~SibyrXOt*QgyF7ETm**gEg)dW#0%Vz6oTOL%enq6| z*w`-F^W}~X2%JwK74{~FlisD4UF;A42An%nL2waU@UAd#uUrk^5$t=#&z~W z!SHZU&D)$FMe5+(ldIeA6ZYBMxg-mJ#_@Z~SIM`{>izua|Hsvr$3y)^e^nVo)c5y$p64I0 zEY0VB&OP@m?{n_^grm)UpdjPA?Af}E@|nRn*PkmVRU@dp2fUQ2?Q$^+xa1)YWZw?I zrY@RDMQo`3!5PM1wfy-)Iv5XvU<8 z)1eSw=Eb>OpEtcuF4H}pWH@{Li;J#)wNPf-k0FwM9?Pxhg^QH#7W9Pv8 zPCzpeE$?Cc?XeKs(~q=r1DY38C*(kIcT51*^GkYl?6xFtBK;Yzmug2o_Bt4$4&8#n z^GC4xt#FFZIikAGFdhqW(1@AK~M~+f0_9VPAzYlRN7TxlKqOQk!1MucR zS{?vk_e$d%_QNyy%%QEmaB+7zKouQ)adwpLLP+72c_J%PDNgrU;j!d(nOM_wA(NyF zRr!<8Bw~}@Yu8bLM~xvOQ!%w95`fZA37r~mD-01gAV^IPzk!0$V=bXvB*Z35xncm? z+?Q^kP0bT<2mzYesjjThL?n%wi+1|15s4LWRkO|G|_YGRmJx@r?C0F zDNN-u{=sYdX9pz_iAlI4n2Djo8G~kxqD+;mx4|b{(Nh&{u@>J4OJ{z$iyNef%&FWy z!q13obtRaz!lh>mz^i>IJ0;PDzje&&@qOC&anE!|<2i@tSgpPR(k}tK^UaqG5yP>L zfOn0-oq&=la@Kux8hWQ-bW4r5Y}Jcr0BOU^bTW$MbvXsZOZdx9b0;!>b-_>RJbi_8 zD?#BHNdB`rBQ6V%4mM*@Y-4QnBl%F?*h1W&oHo{<;~HuEjZjLu5!kWzZ^|qPRS164?$Ix6p-dZ zB?6ltyoF^jA*;XE4Ad|xuYv-A*uecWSJXih#=1f+yYiDY;St{^YXDKqZ|-+!kDZsb zaQY>$5JAmHIeR?>XB*&$O)gSzr&2LNsVy*lnYLl)uJh>0mgN*})b&GnOHs=UPuR0z zycs=KN$uI;y^Y_G|Pbb^xwOv1>Wr+x9A*8>?m{$& z&@iTqG^oHAevPidD!zmjiJ+2t;qBObN0HUE$E_Xp$Q%Cvg5r|WqCK}sqfI_^4Uw!c(HhBKzF+) zRu5;qCD!_cP@5_;i4WRSIhC^f?XDl9??&m#ZMVA#6F*w&Di9 z*$g6f_@yP-w%flY~--Xx+w*s}(0w z0rwQ=gDcR}dV=%xW}FJ_t&G>)L>zYvl`yccGikB;lVhc_wX7gQJD%8uDcBiXX9kKH zSsqzXIiBgU-p*0sI!c~`bqp-My%RM)w}$=!x)A?sk|<;RtCipg0Zz4%=@KU7`eRXT zVWB(8?qU&`WcC)2|ARS>c?LKA=zXn3`%mS*Xfkq%&yP7O-DhWbKK!h0UbU4d>oK~9 z3`d8=UYRW^zZW8y6^wu|=8i3g7gKUHb6T&we zEF-s9=Bj$3SVSd9sKhX4y5wjac&BF7JPJCi+F_eu*M{<(+_TmcyBPTy)6M1T;2 zvOMWQb|jhP#uoN77Kw14e(IW!bL*=+3YNghmhz|gKu|lEuLdzV?-&3sB5Gy;Vl^c8 z?}c6)0>JGlEm(586wO6fxGaJkcA260xO zAmZ6{NI<3puL$pjG}Jy7EGhP|;vc$9czPdY=t4+r%uK5>|j~!>Imjfde0L zu+|xmzfK=C5CAWke>%4l)IBdumE3vqpm;S%f)p0ha~nGEN|0d?erNfqpWYaP)N=)t;fZxm;qBUt@bO8M*VKza_)|lakp^ghf#2Q!%K>Zq=3xT)4`m29~It6Qbf(z zoaO&GZZ6zm8&`1FAQr}4@!Ki%lt%(27_?cH+ZAV(l6kO6%%=y$sI{w;V4|} zT8z|CIb&;cx@_HHP}384s#{2CV*rNoudv?OX#52ZzFn^Eg|k0)1K3f$(J1?&(~^O1 zC;~?OXVv`mLy}Ob(x|><5n->UH@eaBzGM@C5o-;Xv<*Hhbiu51T0Z8dd&+r2!S3CN zf79sZdw>J=%`dz`L_e^{t<0TXXkoMPJPx9MK~LcQpVe3X7Wwo7{9?ZD2yewMoyC(q zOfie@w^!(_Q-Izo8hv*f1gRh`fKig+hOF3RZ&1=20-TiI`Sj=5zWr!0dd+mj_Hbrw zV2Cbu2vDL0F_l1|$N%F|qYJGcG`lFQVD-2(=xfo+wdZTJx)5Y$*Q4LQ#8x|P-ykxl z<)@0<**`wTN}4vki8ErhimUOOT|N#Vb-IP>t>$8__CY-Svbja0_hseC9Vfq~Pk=*d z1%D?Yaq(L-=rriOoPs)tawJ}$jh;y!1>ua%O^`X`TWp#(wbtc-&y@(DfOg2}kJ7bE zSVd@gL!o*p3~#yj3oY+5zMgxC>BWbNe-l$Ll%|3O4gN@k&kGdY9X;wbP)dOF;EAGkXY?WwmzZdK)0n z8rp*a-qQz`(Pt%)Fd9DQbH8G=s+@*26r!(P6Qu*R?Cg(eklr{XnLYH2N_I{5C^u)z z(};Kre&+PXguI3~lMlu(r%gwSmra^*X_>bD=r??v+aD@m&HBA1sr_D>0Psf%sz{+bOeoEa@ zI3$GfxG>Uxwv1u1A7JD?razV;U3~xSS#c6Lkw|umz(Hu|=X0w}!Li+4yv!iff)?p{ zVX=NO_K_nZp%f+K{z*b>_}+`j3e@50Ldn2Vt?K3E@o!Z9`V_}B5+ETMCJ`deS{7XB zc+|1UlKmW}EHK7EY4*wv**gi4f+ch`Hz?n-aE2XfA&8`&0fg_@+nWrOJR`pxv`^r6 z#q$k2ZVp>DSw_pRM9!%1h72#X!Y|d($ZijS;^j1~>-FYJdF?5Z+c^IS4p*Ci7Fq`b zf3ki5n&m?vG6jYOw1c#4-TSklNO~!#T^;Wc;iTlUo9xe?5=@~HrTmAA zAT0?Y5=9Az%gy++)Lt`bvVIhUZcP*jxj7_8QiCR00;t3m8!_NwTe9sE?SB7@% z>|K#3?~0g1CDpAIs7SHF@^2q_1XAsh1U}F@L=+ zFeYA;Afj)^xlvG;zj$9(3QZ(>PzPZ^GEY*}g{G;gKBgxn?mb}YcYUQst(6XPl3s&5 z!AcQZ`-fe_QnUe}RS*5l8-YUTE{cp6T0JgzK--nR3evThL?|ebt*k`L^8ocerwrPZ zDygf`+?{V5frZY-7WKu6sr9)|wMnYXFFj|PU$S_RGFw5flm!6x-=HmU6&zh=9-IZW z)8_$~UjVuX1fw%@xL5;jYJaL`%mr&1-^&1n17zi>MxoCk;{5}5U7osAOO~G&2$=Fm z;sjRz#9q)bWvIj0)B3ECoIkpTBB-)Ifw85+PZVwK&icS)Ct4|5OaB5T;tM>93Ge7JgR7!(R{q0BeA-GoJLNAUBRN$_p|;Y zAiY)}qOjp~ach-1t~lR4f^s(yz1@obCVb6hf06Bv?Qt$8*6YbBDJE;*e2eC0d0d&V zM+?}3xhdY=wfhMIFI>ok7by0jz9?byJK0NJHus}m&a0F)BN4^_Ss0P0wnpiK$x#3LOkjE*Hn*uEsCccL3W=uOw#VkMb#qDD_IW_D zAD59kqlXg9^?!6eL|)8pRW_ddp#+vdoL#5|2c+L7s`fY zzV?*OBCWTKt>s;1O2%*&Egrw!gZ1*+}IA@B^nmf|pf7_nI zqmA2mY@jSEcf{%m)A`vG8yVaY$LSh=7t>jFZyS&}xD36c#xUN?_)NCvW3a`@>)w*# zXBY9WJQ!+E;Ap`N^O@XI4RKkngg5~?!R<6s)LRwf`}_f?nodMVW@L;7&*oV{bo;x{W8wLl9p1@2^9{z5JdFVzAbEM-g>I`kAQ{=iCH@IG#^YuW1PWIpt{%l zJp{-AKLZJg6jss8wQ-szcwWCvsP!6>1C2nmJHjc`ikG)sEN1MpwYQ3 zP6v~w-;PZ=U6OraJ%1_h#>SCl5g#;AdWJBG_^;v|<>?J1+V~?L4DMHf){DzD2%9cJP6h$x$I-$g(3WGc zH_BVE0jHzqj`@r=zMCIiwaaX+f8zoz!_p#I8AcUlIwPubL^`5G6wkFf>luHMIP*tK z)w_sbh~V{~8J+4)Za-XeyL=u>KC8JjmeQ6-e2S*zou)?%Iim0S z+0V7I#Wz3l?lH)m=Xp{)dYPVB6|eH{7osYoKLA{#`|bzgIp>W#I-GG?vs0=ku|1P2 z+n2E!SgepO8t1i&i$ZuaG}sts2!-+0GQ^Zb0cUaN@V|YWRvOlYCD#%WUT1p zF-UwfDR})IQPY17)uN3quvbM?NvK~IfRyXT#akQi^gq%L1rmT%?X2LrUbrvfQD8e1 ziGf&7um`EsJ%BF5bLD6{EVDyOW2@|#S}u5_RT10L>bKyCodnCry4Hd3&kP5xrlETi z%BD7}+p@2AEqyT9>{mneLR3qzBJD*H%U4qo@rPTKXlHAFXu6ddAl_MXL#lvX!Q*kX z)m)SeJ9|W1AQ~KS%%msP^6}S6?I?C5`fvB`QXVo$+}_mR3$cbI=5qBfzBN!nzGv|| z@#tP;2H&rG=n>Agths3U44D%*!Q7*$%}V z$-d!O#Xr1~UII+hmFF1DZ~5jr;G{�?{L57&z2prW2ldA&+Gdf5c;E?e>dc^vE=9 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

    &vY2oq4mDp~DO~sE{$uAiQAS7R+u3nQ{<8ynz=Z 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 EALL?rr2qf` diff --git a/cmake/apple/install_apple.sh.in b/cmake/apple/install_apple.sh.in deleted file mode 100644 index fc27d78b3..000000000 --- a/cmake/apple/install_apple.sh.in +++ /dev/null @@ -1,104 +0,0 @@ -#!/bin/bash -# Creates Apple ".app" bundle for @PROJECT_NAME_UCASE@ -# Note: -# Examine linkings using `otool -L somelib.so` -# Debug the loading of dynamic libraries using `export DYLD_PRINT_LIBRARIES=1` - -set -e - -# Place to create ".app" bundle -APP="@CMAKE_BINARY_DIR@/@PROJECT_NAME_UCASE@.app" - -MSG_COLOR='\x1B[1;36m' -COLOR_RESET='\x1B[0m' -echo -e "$MSG_COLOR\n\nCreating App Bundle \"$APP\"...$COLOR_RESET" - -qtpath="$(dirname "@QT_QMAKE_EXECUTABLE@")" -export PATH="$PATH:$qtpath" - -# Remove any old .app bundles -rm -Rf "$APP" - -# Copy/overwrite Info.plist -command cp "@CMAKE_BINARY_DIR@/Info.plist" "@CMAKE_INSTALL_PREFIX@/" - -# Create .app bundle containing contents from CMAKE_INSTALL_PREFIX -mkdir -p "$APP/Contents/MacOS" -mkdir -p "$APP/Contents/Frameworks" -mkdir -p "$APP/Contents/Resources" -cd "@CMAKE_INSTALL_PREFIX@" -cp -R ./* "$APP/Contents" -cp "@CMAKE_SOURCE_DIR@/cmake/apple/"*.icns "$APP/Contents/Resources/" - -# Make all libraries writable for macdeployqt -cd "$APP" -find . -type f -print0 | xargs -0 chmod u+w - -lmmsbin="MacOS/@CMAKE_PROJECT_NAME@" -zynbin="MacOS/RemoteZynAddSubFx" - -# Move lmms binary -mv "$APP/Contents/bin/@CMAKE_PROJECT_NAME@" "$APP/Contents/$lmmsbin" - -# Fix zyn linking -mv "$APP/Contents/lib/lmms/RemoteZynAddSubFx" "$APP/Contents/$zynbin" - -# Replace @rpath with @loader_path for Carla -# See also plugins/CarlaBase/CMakeLists.txt -# This MUST be done BEFORE calling macdeployqt -install_name_tool -change @rpath/libcarlabase.dylib \ - @loader_path/libcarlabase.dylib \ - "$APP/Contents/lib/lmms/libcarlapatchbay.so" - -install_name_tool -change @rpath/libcarlabase.dylib \ - @loader_path/libcarlabase.dylib \ - "$APP/Contents/lib/lmms/libcarlarack.so" - -# Link lmms binary -_executables="${_executables} -executable=$APP/Contents/$zynbin" - -# Build a list of shared objects in target/lib/lmms -for file in "$APP/Contents/lib/lmms/"*.so; do - _thisfile="$APP/Contents/lib/lmms/${file##*/}" - _executables="${_executables} -executable=$_thisfile" -done - -# Build a list of shared objects in target/lib/lmms/ladspa -for file in "$APP/Contents/lib/lmms/ladspa/"*.so; do - _thisfile="$APP/Contents/lib/lmms/ladspa/${file##*/}" - _executables="${_executables} -executable=$_thisfile" -done - -# Finalize .app -# shellcheck disable=SC2086 -macdeployqt "$APP" $_executables - -# Carla is a standalone plugin. Remove library, look for it side-by-side LMMS.app -# This MUST be done AFTER calling macdeployqt -# -# For example: -# /Applications/LMMS.app -# /Applications/Carla.app -carlalibs=$(echo "@CARLA_LIBRARIES@"|tr ";" "\n") - -# Loop over all libcarlas, fix linking -for file in "$APP/Contents/lib/lmms/"libcarla*; do - _thisfile="$APP/Contents/lib/lmms/${file##*/}" - for lib in $carlalibs; do - _oldpath="../../Frameworks/lib${lib}.dylib" - _newpath="Carla.app/Contents/MacOS/lib${lib}.dylib" - # shellcheck disable=SC2086 - install_name_tool -change @loader_path/$_oldpath \ - @executable_path/../../../$_newpath \ - "$_thisfile" - rm -f "$APP/Contents/Frameworks/lib${lib}.dylib" - done -done - -# Cleanup -rm -rf "$APP/Contents/bin" - -# Codesign -codesign --force --deep --sign - "$APP" - -echo -e "\nFinished.\n\n" diff --git a/cmake/apple/lmms.plist.in b/cmake/apple/lmms.plist.in index 88fe0b0bf..dd656a1d5 100644 --- a/cmake/apple/lmms.plist.in +++ b/cmake/apple/lmms.plist.in @@ -7,13 +7,13 @@ English CFBundleIconFile - @MACOSX_BUNDLE_ICON_FILE@ + @CPACK_PROJECT_NAME@ CFBundlePackageType APPL CFBundleGetInfoString - @MACOSX_BUNDLE_GUI_IDENTIFIER@ @MACOSX_BUNDLE_LONG_VERSION_STRING@ + @CPACK_PROJECT_NAME_UCASE@ @CPACK_PROJECT_VERSION@ CFBundleSignature - @MACOSX_BUNDLE_GUI_IDENTIFIER@ + @CPACK_PROJECT_NAME_UCASE@ CFBundleExecutable - @MACOSX_BUNDLE_GUI_IDENTIFIER@ + @CPACK_PROJECT_NAME@ CFBundleVersion - @MACOSX_BUNDLE_LONG_VERSION_STRING@ + @CPACK_PROJECT_VERSION@ CFBundleShortVersionString - @MACOSX_BUNDLE_LONG_VERSION_STRING@ + @VERSIONCPACK_PROJECT_VERSION@ CFBundleName - @MACOSX_BUNDLE_BUNDLE_NAME@ + @CPACK_PROJECT_NAME_UCASE@ CFBundleInfoDictionaryVersion 6.0 CFBundleIdentifier - @MACOSX_BUNDLE_MIMETYPE_ID@ + @MACOS_MIMETYPE_ID@ CFBundleDocumentTypes - + CFBundleTypeExtensions mmpz CFBundleTypeIconFile - @MACOSX_BUNDLE_MIMETYPE_ICON@ + project CFBundleTypeName - @MACOSX_BUNDLE_GUI_IDENTIFIER@ Project + @CPACK_PROJECT_NAME_UCASE@ Project CFBundleTypeOSTypes mmpz @@ -69,19 +69,19 @@ Editor CFBundleTypeMIMETypes - @MACOSX_BUNDLE_MIMETYPE@ + application/x-@CPACK_PROJECT_NAME@-project - + CFBundleTypeExtensions mmp CFBundleTypeIconFile - @MACOSX_BUNDLE_MIMETYPE_ICON@ + project CFBundleTypeName - @MACOSX_BUNDLE_GUI_IDENTIFIER@ Project (uncompressed) + @CPACK_PROJECT_NAME_UCASE@ Project (uncompressed) CFBundleTypeOSTypes mmp @@ -90,23 +90,23 @@ Editor CFBundleTypeMIMETypes - @MACOSX_BUNDLE_MIMETYPE@ + application/x-@CPACK_PROJECT_NAME@-project - + UTExportedTypeDeclarations UTTypeIdentifier - @MACOSX_BUNDLE_MIMETYPE_ID@.mmpz + @MACOS_MIMETYPE_ID@.mmpz UTTypeReferenceURL - @MACOSX_BUNDLE_PROJECT_URL@ + @CPACK_PROJECT_URL@ UTTypeDescription - @MACOSX_BUNDLE_GUI_IDENTIFIER@ Project + @CPACK_PROJECT_VERSIONPROJECT_NAME_UCASE@ Project UTTypeIconFile - @MACOSX_BUNDLE_MIMETYPE_ICON@ + project UTTypeConformsTo public.data @@ -122,13 +122,13 @@ UTTypeIdentifier - @MACOSX_BUNDLE_MIMETYPE_ID@.mmp + @MACOS_MIMETYPE_ID@.mmp UTTypeReferenceURL - @MACOSX_BUNDLE_PROJECT_URL@ + @CPACK_PROJECT_URL@ UTTypeDescription - @MACOSX_BUNDLE_GUI_IDENTIFIER@ Project (uncompressed) + @CPACK_PROJECT_NAME_UCASE@ Project (uncompressed) UTTypeIconFile - @MACOSX_BUNDLE_MIMETYPE_ICON@ + project UTTypeConformsTo public.xml diff --git a/cmake/apple/package_apple.json.in b/cmake/apple/package_apple.json.in deleted file mode 100644 index f6660b345..000000000 --- a/cmake/apple/package_apple.json.in +++ /dev/null @@ -1,9 +0,0 @@ -{ - "title": "@MACOSX_BUNDLE_DMG_TITLE@", - "background": "@CMAKE_SOURCE_DIR@/cmake/apple/dmg_branding.png", - "icon-size": 128, - "contents": [ - { "x": 139, "y": 200, "type": "file", "path": "@CMAKE_BINARY_DIR@/@MACOSX_BUNDLE_BUNDLE_NAME@.app" }, - { "x": 568, "y": 200, "type": "link", "path": "/Applications" } - ] -} diff --git a/cmake/install/CMakeLists.txt b/cmake/install/CMakeLists.txt index fea9b62ce..0b81039ab 100644 --- a/cmake/install/CMakeLists.txt +++ b/cmake/install/CMakeLists.txt @@ -43,17 +43,10 @@ ENDIF() if(LMMS_HAVE_STK AND (LMMS_BUILD_WIN32 OR LMMS_BUILD_APPLE)) if(STK_RAWWAVE_ROOT) file(GLOB RAWWAVES "${STK_RAWWAVE_ROOT}/*.raw") + list(SORT RAWWAVES) install(FILES ${RAWWAVES} DESTINATION "${DATA_DIR}/stk/rawwaves") else() message(WARNING "Can't find STK rawwave root!") endif() endif() -IF(LMMS_BUILD_APPLE) - INSTALL(CODE "EXECUTE_PROCESS(COMMAND chmod u+x ${CMAKE_BINARY_DIR}/install_apple.sh)") - INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_BINARY_DIR}/install_apple.sh RESULT_VARIABLE EXIT_CODE) - IF(NOT EXIT_CODE EQUAL 0) - MESSAGE(FATAL_ERROR \"Execution of install_apple.sh failed\") - ENDIF() - ") -ENDIF() diff --git a/cmake/linux/CMakeLists.txt b/cmake/linux/CMakeLists.txt index 27c6655eb..afdb57dd2 100644 --- a/cmake/linux/CMakeLists.txt +++ b/cmake/linux/CMakeLists.txt @@ -1,19 +1,53 @@ -INSTALL(DIRECTORY icons/ DESTINATION "${DATA_DIR}/icons/hicolor") -INSTALL(FILES lmms.desktop DESTINATION "${DATA_DIR}/applications") -INSTALL(FILES lmms.xml DESTINATION "${DATA_DIR}/mime/packages") +install(DIRECTORY icons/ DESTINATION "${DATA_DIR}/icons/hicolor") +install(FILES lmms.desktop DESTINATION "${DATA_DIR}/applications") +install(FILES lmms.xml DESTINATION "${DATA_DIR}/mime/packages") -# AppImage creation target -SET(APPIMAGE_FILE "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}-linux-${CMAKE_SYSTEM_PROCESSOR}.AppImage") +# Preserve old CPack behavior +if(WANT_CPACK_TARBALL) + message(STATUS "Skipping AppImage creation") + return() +endif() -CONFIGURE_FILE("package_linux.sh.in" "${CMAKE_BINARY_DIR}/package_linux.sh" @ONLY) +install(FILES launch_lmms.sh DESTINATION bin) -FILE(REMOVE "${APPIMAGE_FILE}") -ADD_CUSTOM_TARGET(removeappimage - COMMAND rm -f "${APPIMAGE_FILE}" - COMMENT "Removing old AppImage") -ADD_CUSTOM_TARGET(appimage - COMMAND chmod +x "${CMAKE_BINARY_DIR}/package_linux.sh" - COMMAND "${CMAKE_BINARY_DIR}/package_linux.sh" - COMMENT "Generating AppImage" - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") -ADD_DEPENDENCIES(appimage removeappimage) +# 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}-linux-${CMAKE_SYSTEM_PROCESSOR}") +set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}" PARENT_SCOPE) +set(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_CURRENT_SOURCE_DIR}/LinuxDeploy.cmake" PARENT_SCOPE) + +# 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_WINE_32_LIBRARY_DIRS "${WINE_32_LIBRARY_DIRS}" PARENT_SCOPE) +set(CPACK_WINE_64_LIBRARY_DIRS "${WINE_64_LIBRARY_DIRS}" PARENT_SCOPE) +set(CPACK_PROJECT_NAME "${PROJECT_NAME}" PARENT_SCOPE) +set(CPACK_PROJECT_NAME_UCASE "${PROJECT_NAME_UCASE}" PARENT_SCOPE) +set(CPACK_PROJECT_VERSION "${VERSION}" PARENT_SCOPE) +set(CPACK_CMAKE_COMMAND "${CMAKE_COMMAND}" PARENT_SCOPE) +set(CPACK_SUIL_MODULES "${Suil_MODULES}" PARENT_SCOPE) +set(CPACK_SUIL_MODULES_PREFIX "${Suil_MODULES_PREFIX}" PARENT_SCOPE) +set(CPACK_STK_RAWWAVE_ROOT "${STK_RAWWAVE_ROOT}" PARENT_SCOPE) + +# TODO: Canidate for DetectMachine.cmake +if(IS_X86_64) + set(CPACK_TARGET_ARCH x86_64 PARENT_SCOPE) +elseif(IS_X86) + set(CPACK_TARGET_ARCH i386 PARENT_SCOPE) +elseif(IS_ARM64) + set(CPACK_TARGET_ARCH aarch64 PARENT_SCOPE) +elseif(IS_ARM32) + set(CPACK_TARGET_ARCH armhf PARENT_SCOPE) +else() + set(CPACK_TARGET_ARCH unknown PARENT_SCOPE) +endif() + +if(CMAKE_VERSION VERSION_LESS "3.19") + message(WARNING "AppImage creation requires at least CMake 3.19") +endif() \ No newline at end of file diff --git a/cmake/linux/LinuxDeploy.cmake b/cmake/linux/LinuxDeploy.cmake new file mode 100644 index 000000000..032c52675 --- /dev/null +++ b/cmake/linux/LinuxDeploy.cmake @@ -0,0 +1,295 @@ +# Create a Linux desktop installer using linuxdeploy +# * Creates a relocatable LMMS.AppDir installation in build/_CPack_Packages using linuxdeploy +# * If CPACK_TOOL=appimagetool or is not set, bundles AppDir into redistributable ".AppImage" file +# * If CPACK_TOOL=makeself is provided, bundles into a redistributable ".run" file +# +# Copyright (c) 2025, Tres Finocchiaro, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# Variables must be prefixed with "CPACK_" to be visible here +set(lmms "${CPACK_PROJECT_NAME}") +set(LMMS "${CPACK_PROJECT_NAME_UCASE}") +set(ARCH "${CPACK_TARGET_ARCH}") +set(APP "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/${LMMS}.AppDir") + +# Target AppImage file +set(APPIMAGE_FILE "${CPACK_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME}.AppImage") +set(APPIMAGE_BEFORE_RENAME "${CPACK_BINARY_DIR}/${LMMS}-${ARCH}.AppImage") + +set(DESKTOP_FILE "${APP}/usr/share/applications/${lmms}.desktop") + +# Determine which packaging tool to use +if(NOT CPACK_TOOL) + # Pick up environmental variable + if(DEFINED ENV{CPACK_TOOL}) + set(CPACK_TOOL "$ENV{CPACK_TOOL}") + else() + set(CPACK_TOOL "appimagetool") + endif() +endif() + +# Toggle command echoing & verbosity +# 0 = no output, 1 = error/warning, 2 = normal, 3 = debug +if(NOT CPACK_DEBUG) + set(VERBOSITY 1) + set(APPIMAGETOOL_VERBOSITY "") + set(COMMAND_ECHO NONE) + set(OUTPUT_QUIET OUTPUT_QUIET) +else() + set(VERBOSITY 2) + set(APPIMAGETOOL_VERBOSITY "--verbose") + set(COMMAND_ECHO STDOUT) + unset(OUTPUT_QUIET) +endif() + +include(DownloadBinary) +include(CreateSymlink) + +# Cleanup CPack "External" json, txt files, old AppImage files +file(GLOB cleanup "${CPACK_BINARY_DIR}/${lmms}-*.json" + "${CPACK_BINARY_DIR}/${lmms}-*.AppImage" + "${CPACK_BINARY_DIR}/install_manifest.txt") +list(SORT cleanup) +file(REMOVE ${cleanup}) + +# Download linuxdeploy, expose bundled appimagetool to PATH +download_binary(LINUXDEPLOY_BIN + "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-${ARCH}.AppImage" + linuxdeploy-${ARCH}.AppImage + FALSE) + +# Symlink nested appimagetool +set(_APPIMAGETOOL_LINK "${CPACK_CURRENT_BINARY_DIR}/appimagetool") +if(NOT EXISTS "${_APPIMAGETOOL_LINK}") + set(_APPIMAGETOOL "${CPACK_CURRENT_BINARY_DIR}/.linuxdeploy-${ARCH}.AppImage/squashfs-root/plugins/linuxdeploy-plugin-appimage/appimagetool-prefix/AppRun") + message(STATUS "Creating a symbolic link ${_APPIMAGETOOL_LINK} which points to ${_APPIMAGETOOL}") + create_symlink("${_APPIMAGETOOL}" "${_APPIMAGETOOL_LINK}") +endif() + +# Download linuxdeploy-plugin-qt +download_binary(LINUXDEPLOY_PLUGIN_BIN + "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-${ARCH}.AppImage" + linuxdeploy-plugin-qt-${ARCH}.AppImage + FALSE) + +message(STATUS "Creating AppDir ${APP}...") + +file(REMOVE_RECURSE "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/include") +file(MAKE_DIRECTORY "${APP}/usr") + +# Setup AppDir structure (/usr/bin, /usr/lib, /usr/share... etc) +file(GLOB files "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/*") +list(SORT files) +foreach(_file ${files}) + get_filename_component(_filename "${_file}" NAME) + if(NOT _filename MATCHES ".AppDir") + file(RENAME "${_file}" "${APP}/usr/${_filename}") + endif() +endforeach() + +# Copy Suil modules +if(CPACK_SUIL_MODULES) + set(SUIL_MODULES_TARGET "${APP}/usr/lib/${CPACK_SUIL_MODULES_PREFIX}") + file(MAKE_DIRECTORY "${SUIL_MODULES_TARGET}") + file(COPY ${CPACK_SUIL_MODULES} DESTINATION "${SUIL_MODULES_TARGET}") +endif() + +# Copy stk/rawwaves +if(CPACK_STK_RAWWAVE_ROOT) + set(STK_RAWWAVE_TARGET "${APP}/usr/share/stk/rawwaves/") + file(MAKE_DIRECTORY "${STK_RAWWAVE_TARGET}") + file(GLOB RAWWAVES "${CPACK_STK_RAWWAVE_ROOT}/*.raw") + file(COPY ${RAWWAVES} DESTINATION "${STK_RAWWAVE_TARGET}") +endif() + +# Ensure project's "qmake" executable is first on the PATH +get_filename_component(QTBIN "${CPACK_QMAKE_EXECUTABLE}" DIRECTORY) +set(ENV{PATH} "${QTBIN}:$ENV{PATH}") + +# Ensure "linuxdeploy-.AppImage" and "appimagetool" binaries are first on the PATH +set(ENV{PATH} "${CPACK_CURRENT_BINARY_DIR}:$ENV{PATH}") + +# Promote finding our own libraries first +set(ENV{LD_LIBRARY_PATH} "${APP}/usr/lib/${lmms}/:${APP}/usr/lib/${lmms}/optional:$ENV{LD_LIBRARY_PATH}") + +# Skip slow searching of copyright files https://github.com/linuxdeploy/linuxdeploy/issues/278 +set(ENV{DISABLE_COPYRIGHT_FILES_DEPLOYMENT} 1) + +# Patch desktop file +file(APPEND "${DESKTOP_FILE}" "X-AppImage-Version=${CPACK_PROJECT_VERSION}\n") + +# Prefer a hard-copy of .DirIcon over appimagetool's symlinking +# 256x256 default for Cinnamon Desktop https://forums.linuxmint.com/viewtopic.php?p=2585952 +file(COPY "${APP}/usr/share/icons/hicolor/256x256/apps/${lmms}.png" DESTINATION "${APP}") +file(RENAME "${APP}/${lmms}.png" "${APP}/.DirIcon") +file(COPY "${APP}/usr/share/icons/hicolor/256x256/apps/${lmms}.png" DESTINATION "${APP}") + +# Build list of libraries to inform linuxdeploy about +# e.g. --library=foo.so --library=bar.so +file(GLOB LIBS "${APP}/usr/lib/${lmms}/*.so") + +# Inform linuxdeploy about LADSPA plugins; may depend on bundled fftw3f, etc. +file(GLOB LADSPA "${APP}/usr/lib/${lmms}/ladspa/*.so") + +# Inform linuxdeploy about remote plugins +file(GLOB REMOTE_PLUGINS "${APP}/usr/lib/${lmms}/*Remote*") + +# Collect, sort and dedupe all libraries +list(APPEND LIBS ${LADSPA}) +list(APPEND LIBS ${REMOTE_PLUGINS}) +list(APPEND LIBS ${CPACK_SUIL_MODULES}) +list(REMOVE_DUPLICATES LIBS) +list(SORT LIBS) + +# Handle non-relinkable files (e.g. RemoveVstPlugin[32|64], but not NativeLinuxRemoteVstPlugin) +list(FILTER LIBS EXCLUDE REGEX "\\/RemoteVst") + +# Construct linuxdeploy parameters +foreach(_lib IN LISTS LIBS) + if(EXISTS "${_lib}") + list(APPEND LIBRARIES "--library=${_lib}") + endif() +endforeach() + +# Call linuxdeploy +message(STATUS "Calling ${LINUXDEPLOY_BIN} --appdir \"${APP}\" ... [... libraries].") +execute_process(COMMAND "${LINUXDEPLOY_BIN}" + --appdir "${APP}" + --desktop-file "${DESKTOP_FILE}" + --custom-apprun "${CPACK_SOURCE_DIR}/cmake/linux/launch_lmms.sh" + --plugin qt + ${LIBRARIES} + --verbosity ${VERBOSITY} + ${OUTPUT_QUIET} + COMMAND_ECHO ${COMMAND_ECHO} + COMMAND_ERROR_IS_FATAL ANY) + +# Remove svg ambitiously placed by linuxdeploy +file(REMOVE "${APP}/${lmms}.svg") + +# Remove libraries that are normally sytem-provided +file(GLOB EXCLUDE_LIBS + "${APP}/usr/lib/libwine*" + "${APP}/usr/lib/libcarla_native*" + "${APP}/usr/lib/${lmms}/optional/libcarla*" + "${APP}/usr/lib/libjack*") + +list(SORT EXCLUDE_LIBS) +foreach(_lib IN LISTS EXCLUDE_LIBS) + if(EXISTS "${_lib}") + file(REMOVE "${_lib}") + endif() +endforeach() + +# FIXME: Remove when linuxdeploy supports subfolders https://github.com/linuxdeploy/linuxdeploy/issues/305 +foreach(_lib IN LISTS LIBS) + if(EXISTS "${_lib}") + file(REMOVE "${_lib}") + endif() +endforeach() +# Move RemotePlugins into to LMMS_PLUGIN_DIR +file(GLOB WINE_VST_LIBS + "${APP}/usr/lib/${lmms}/RemoteVstPlugin*" + "${APP}/usr/lib/${lmms}/32") +foreach(_file IN LISTS WINE_VST_LIBS) + if(EXISTS "${_file}") + get_filename_component(_name "${_file}" NAME) + file(RENAME "${_file}" "${APP}/usr/lib/${_name}") + endif() +endforeach() +file(GLOB WINE_32_LIBS + "${APP}/usr/lib/${lmms}/RemoteVstPlugin*") +foreach(_lib IN LISTS WINE_64_LIBS) + if(EXISTS "${_lib}") + get_filename_component(_file "${_lib}" NAME) + file(RENAME "${_lib}" "${APP}/usr/lib/${_file}") + endif() +endforeach() + +file(REMOVE_RECURSE "${SUIL_MODULES_TARGET}" "${APP}/usr/lib/${lmms}/ladspa/") + +# Bundle jack to avoid crash for systems without it +# See https://github.com/LMMS/lmms/pull/4186 +execute_process(COMMAND ldd "${APP}/usr/bin/${lmms}" + OUTPUT_VARIABLE LDD_OUTPUT + OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND_ECHO ${COMMAND_ECHO} + COMMAND_ERROR_IS_FATAL ANY) +string(REPLACE "\n" ";" LDD_LIST "${LDD_OUTPUT}") +foreach(line ${LDD_LIST}) + if(line MATCHES "libjack\\.so") + # Assume format "libjack.so.0 => /lib/x86_64-linux-gnu/libjack.so.0 (0x00007f48d0b0e000)" + string(REPLACE " " ";" parts "${line}") + list(LENGTH parts len) + math(EXPR index "${len}-2") + list(GET parts ${index} lib) + # Get symlink target + file(REAL_PATH "${lib}" libreal) + get_filename_component(symname "${lib}" NAME) + get_filename_component(realname "${libreal}" NAME) + file(MAKE_DIRECTORY "${APP}/usr/lib/${lmms}/optional/") + # Copy, but with original symlink name + file(COPY "${libreal}" DESTINATION "${APP}/usr/lib/${lmms}/optional/") + file(RENAME "${APP}/usr/lib/${lmms}/optional/${realname}" "${APP}/usr/lib/${lmms}/optional/${symname}") + continue() + endif() +endforeach() + +if(CPACK_TOOL STREQUAL "appimagetool") + # Create ".AppImage" file using appimagetool (default) + + # appimage plugin needs ARCH set when running in extracted form from squashfs-root / CI + set(ENV{ARCH} "${ARCH}") + message(STATUS "Finishing the AppImage...") + execute_process(COMMAND ${CPACK_TOOL} "${APP}" "${APPIMAGE_FILE}" + ${APPIMAGETOOL_VERBOSITY} + ${OUTPUT_QUIET} + COMMAND_ECHO ${COMMAND_ECHO} + COMMAND_ERROR_IS_FATAL ANY) + + message(STATUS "AppImage created: ${APPIMAGE_FILE}") +elseif(CPACK_TOOL STREQUAL "makeself") + # Create self-extracting ".run" script using makeself + find_program(MAKESELF_BIN makeself REQUIRED) + + message(STATUS "Finishing the .run file using ${MAKESELF_BIN}...") + string(REPLACE ".AppImage" ".run" RUN_FILE "${APPIMAGE_FILE}") + configure_file( + "${CPACK_SOURCE_DIR}/cmake/linux/makeself_setup.sh.in" "${APP}/setup.sh" @ONLY + FILE_PERMISSIONS + OWNER_EXECUTE OWNER_WRITE OWNER_READ + GROUP_EXECUTE GROUP_WRITE GROUP_READ + WORLD_READ) + + if(OUTPUT_QUIET) + set(MAKESELF_QUIET "--quiet") + set(ERROR_QUIET ERROR_QUIET) + endif() + + # makeself.sh [args] archive_dir file_name label startup_script [script_args] + file(REMOVE "${RUN_FILE}") + execute_process(COMMAND "${MAKESELF_BIN}" + --keep-umask + --nox11 + ${MAKESELF_QUIET} + "${APP}" + "${RUN_FILE}" + "${LMMS} Installer" + "./setup.sh" + ${OUTPUT_QUIET} + COMMAND_ECHO ${COMMAND_ECHO} + COMMAND_ERROR_IS_FATAL ANY) + + # ensure the installer can be executed as a script file + execute_process(COMMAND "${RUN_FILE}" --help + ${OUTPUT_QUIET} + ${ERROR_QUIET} + COMMAND_ECHO ${COMMAND_ECHO} + COMMAND_ERROR_IS_FATAL ANY) + + message(STATUS "Installer created: ${RUN_FILE}") +else() + message(FATAL_ERROR "Packaging tool CPACK_TOOL=\"${CPACK_TOOL}\" is not yet supported") +endif() diff --git a/cmake/linux/icons/256x256/apps/lmms.png b/cmake/linux/icons/256x256/apps/lmms.png new file mode 100644 index 0000000000000000000000000000000000000000..c069239dd0522d69c50f63b7286918b2fe3c78e0 GIT binary patch literal 11360 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 Ty-!OQfPNHYUPxC-ng#tI#nNH0 literal 0 HcmV?d00001 diff --git a/cmake/linux/icons/256x256/mimetypes/application-x-lmms-project.png b/cmake/linux/icons/256x256/mimetypes/application-x-lmms-project.png new file mode 100644 index 0000000000000000000000000000000000000000..0e03e70125550254df4191f7737b566db2f8d71d GIT binary patch literal 7689 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 literal 0 HcmV?d00001 diff --git a/cmake/linux/launch_lmms.sh b/cmake/linux/launch_lmms.sh index ba26fb9c7..131d2b92d 100644 --- a/cmake/linux/launch_lmms.sh +++ b/cmake/linux/launch_lmms.sh @@ -21,4 +21,10 @@ else echo "Jack does not appear to be installed. That's OK, we'll use a dummy version instead." >&2 export LD_LIBRARY_PATH=$DIR/usr/lib/lmms/optional:$LD_LIBRARY_PATH fi -QT_X11_NO_NATIVE_MENUBAR=1 "$DIR"/usr/bin/lmms.real "$@" + +# FIXME: Remove when linuxdeploy supports subfolders https://github.com/linuxdeploy/linuxdeploy/issues/305 +export LMMS_PLUGIN_DIR="$DIR/usr/lib/" +export LADSPA_PATH="$DIR/usr/lib/" +export SUIL_MODULE_DIR="$DIR/usr/lib/" + +QT_X11_NO_NATIVE_MENUBAR=1 "$DIR"/usr/bin/lmms "$@" diff --git a/cmake/linux/makeself_setup.sh.in b/cmake/linux/makeself_setup.sh.in new file mode 100644 index 000000000..22aa5c474 --- /dev/null +++ b/cmake/linux/makeself_setup.sh.in @@ -0,0 +1,35 @@ +#!/bin/bash + +# Halt on first error +set -e + +DESTDIR="/opt/@CPACK_PROJECT_NAME@" +BASHCOMPLETIONS="/usr/share/bash-completion/completions" +if [ "$(id -u)" != "0" ]; then + # Prepend "$HOME" so we can install to a writable location + DESTDIR="${HOME}${DESTDIR}" + BASHCOMPLETIONS="${HOME}/.local/share/bash-completion/completions" + echo "Installing as a regular user to ${DESTDIR}/..." +else + echo "Installing as elevated user to ${DESTDIR}/..." +fi + +# Deploy @CPACK_PROJECT_NAME_UCASE@ +mkdir -p "${DESTDIR}" +unalias cp &> /dev/null || true +cp -rf ./* "${DESTDIR}" +rm -f "${DESTDIR}/setup.sh" +mv "${DESTDIR}/AppRun" "${DESTDIR}/@CPACK_PROJECT_NAME@" + +# Install bash completions +mkdir -p "${BASHCOMPLETIONS}" +ln -sf "${DESTDIR}/usr/share/@CPACK_PROJECT_NAME@/bash-completion/completions/@CPACK_PROJECT_NAME@" "${BASHCOMPLETIONS}/@CPACK_PROJECT_NAME@" + +# Test @CPACK_PROJECT_NAME_UCASE@ +echo "Installation complete... Testing \"@CPACK_PROJECT_NAME@\"..." +"${DESTDIR}/@CPACK_PROJECT_NAME@" --allowroot --version &> /dev/null + +# TODO: Register file associations, desktop icon, etc + +echo "@CPACK_PROJECT_NAME_UCASE@ was installed successfully to ${DESTDIR}. To run:" +echo " ${DESTDIR}/@CPACK_PROJECT_NAME@" \ No newline at end of file diff --git a/cmake/linux/package_linux.sh.in b/cmake/linux/package_linux.sh.in deleted file mode 100644 index 16cd5719b..000000000 --- a/cmake/linux/package_linux.sh.in +++ /dev/null @@ -1,213 +0,0 @@ -#!/usr/bin/env bash -# Creates Linux ".AppImage" for @PROJECT_NAME_UCASE@ -# -# Depends: linuxdeployqt -# -# Notes: Will attempt to fetch linuxdeployqt automatically (x86_64 only) -# See Also: https://github.com/probonopd/linuxdeployqt/blob/master/BUILDING.md - -VERBOSITY=2 # 3=debug -LOGFILE="@CMAKE_BINARY_DIR@/appimage.log" -APPDIR="@CMAKE_BINARY_DIR@/@PROJECT_NAME_UCASE@.AppDir/" -DESKTOPFILE="${APPDIR}usr/share/applications/lmms.desktop" -STRIP="" - -# Don't strip for Debug|RelWithDebInfo builds -# shellcheck disable=SC2193 -if [[ "@CMAKE_BUILD_TYPE@" == *"Deb"* ]]; then - STRIP="-no-strip" -fi - -# Console colors -RED="\\x1B[1;31m" -GREEN="\\x1B[1;32m" -YELLOW="\\x1B[1;33m" -PLAIN="\\x1B[0m" - -function error { - echo -e " ${PLAIN}[${RED}error${PLAIN}] ${1}" - return 1 -} - -function success { - echo -e " ${PLAIN}[${GREEN}success${PLAIN}] ${1}" -} - -function skipped { - echo -e " ${PLAIN}[${YELLOW}skipped${PLAIN}] ${1}" -} - -# Exit with error message if any command fails -trap "error 'Failed to generate AppImage'; exit 1" ERR - -# Run a command silently, but print output if it fails -function run_and_log { - echo -e "\n\n>>>>> $1" >> "$LOGFILE" - output="$("$@" 2>&1)" - status=$? - echo "$output" >> "$LOGFILE" - [[ $status != 0 ]] && echo "$output" - return $status -} - -# Blindly assume system arch is appimage arch -ARCH=$(uname -m) -export ARCH - -# Check for problematic install locations -INSTALL=$(echo "@CMAKE_INSTALL_PREFIX@" | sed 's/\/*$//g') -if [ "$INSTALL" == "/usr/local" ] || [ "$INSTALL" == "/usr" ] ; then - error "Incompatible CMAKE_INSTALL_PREFIX for creating AppImage: @CMAKE_INSTALL_PREFIX@" -fi - -# Ensure linuxdeployqt uses the same qmake version as cmake -PATH="$(dirname "@QT_QMAKE_EXECUTABLE@"):$PATH" -export PATH - -# Use linuxdeployqt from env or in PATH -[[ $LINUXDEPLOYQT ]] || LINUXDEPLOYQT="$(which linuxdeployqt 2>/dev/null)" || true -[[ $APPIMAGETOOL ]] || APPIMAGETOOL="$(which appimagetool 2>/dev/null)" || true - -# Fetch portable linuxdeployqt if not in PATH -if [[ -z $LINUXDEPLOYQT || -z $APPIMAGETOOL ]]; then - filename="linuxdeployqt-continuous-$ARCH.AppImage" - url="https://github.com/probonopd/linuxdeployqt/releases/download/continuous/$filename" - echo " [.......] Downloading: ${url}" - wget -N -q "$url" && err=0 || err=$? - case "$err" in - 0) success "Downloaded $PWD/$filename" ;; - # 8 == server issued 4xx error - 8) error "Download failed (perhaps no package available for $ARCH)" ;; - *) error "Download failed" ;; - esac - - # Extract AppImage and replace LINUXDEPLOYQT variable with extracted binary - # to support systems without fuse - # Also, we need to set LD_LIBRARY_PATH, but linuxdepoyqt's AppRun unsets it - # See https://github.com/probonopd/linuxdeployqt/pull/370/ - chmod +x "$filename" - ./"$filename" --appimage-extract >/dev/null - success "Extracted $filename" - - # Use the extracted linuxdeployqt and appimagetool - PATH="$(pwd -P)/squashfs-root/usr/bin:$PATH" - [[ $LINUXDEPLOYQT ]] || LINUXDEPLOYQT="$(which linuxdeployqt)" - [[ $APPIMAGETOOL ]] || APPIMAGETOOL="$(which appimagetool)" -fi - -# Make skeleton AppDir -echo -e "\nCreating ${APPDIR}..." -rm -rf "${APPDIR}" -mkdir -p "${APPDIR}usr" -success "Created ${APPDIR}" - -# Clone install to AppDir -echo -e "\nCopying @CMAKE_INSTALL_PREFIX@ to ${APPDIR}..." -cp -R "@CMAKE_INSTALL_PREFIX@/." "${APPDIR}usr" -rm -rf "${APPDIR}usr/include" -success "${APPDIR}" - -# Copy rawwaves directory for stk/mallets -mkdir -p "${APPDIR}usr/share/stk/" -cp -R /usr/share/stk/rawwaves/ "${APPDIR}usr/share/stk/" - -# Create a wrapper script which calls the lmms executable -mv "${APPDIR}usr/bin/lmms" "${APPDIR}usr/bin/lmms.real" - -cp "@CMAKE_CURRENT_SOURCE_DIR@/launch_lmms.sh" "${APPDIR}usr/bin/lmms" - -chmod +x "${APPDIR}usr/bin/lmms" - -# Per https://github.com/probonopd/linuxdeployqt/issues/129 -unset LD_LIBRARY_PATH - -# Ensure linuxdeployqt can find shared objects -export LD_LIBRARY_PATH="${APPDIR}"usr/lib/lmms/:"${APPDIR}"usr/lib/lmms/optional:"$LD_LIBRARY_PATH" - -# Move executables so linuxdeployqt can find them -ZYNLIB="${APPDIR}usr/lib/lmms/RemoteZynAddSubFx" -VSTLIB32="${APPDIR}usr/lib/lmms/32/RemoteVstPlugin32.exe.so" -VSTLIB64="${APPDIR}usr/lib/lmms/RemoteVstPlugin64.exe.so" - -ZYNBIN="${APPDIR}usr/bin/RemoteZynAddSubFx" -VSTBIN32="${APPDIR}usr/bin/RemoteVstPlugin32.exe.so" -VSTBIN64="${APPDIR}usr/bin/RemoteVstPlugin64.exe.so" - -mv "$ZYNLIB" "$ZYNBIN" -mv "$VSTLIB32" "$VSTBIN32" || true -mv "$VSTLIB64" "$VSTBIN64" || true - -# Handle wine linking -if [ -d "@WINE_32_LIBRARY_DIR@" ] && \ - ldd "$VSTBIN32" | grep "libwine\.so" | grep "not found"; then - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"@WINE_32_LIBRARY_DIRS@" -fi -if [ -d "@WINE_64_LIBRARY_DIR@" ] && \ - ldd "$VSTBIN64" | grep "libwine\.so" | grep "not found"; then - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"@WINE_64_LIBRARY_DIRS@" -fi - -# Patch the desktop file -sed -i 's/.*Exec=.*/Exec=lmms.real/' "$DESKTOPFILE" -echo "X-AppImage-Version=@VERSION@" >> "$DESKTOPFILE" - -# Fix linking for soft-linked plugins -for file in "${APPDIR}usr/lib/lmms/"*.so; do - thisfile="${APPDIR}usr/lib/lmms/${file##*/}" - executables="${executables} -executable=$thisfile" -done -executables="${executables} -executable=${ZYNBIN}" -executables="${executables} -executable=${VSTBIN32}" -executables="${executables} -executable=${VSTBIN64}" -executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/imp_1199.so" -executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/imbeq_1197.so" -executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/pitch_scale_1193.so" -executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/pitch_scale_1194.so" - -echo -e "\nWriting verbose output to \"${LOGFILE}\"" -echo -n > "$LOGFILE" - -# Bundle both qt and non-qt dependencies into appimage format -echo -e "\nBundling and relinking system dependencies..." - -# shellcheck disable=SC2086 -run_and_log "$LINUXDEPLOYQT" "$DESKTOPFILE" $executables -bundle-non-qt-libs -verbose=$VERBOSITY $STRIP -success "Bundled and relinked dependencies" - -# Link to original location so lmms can find them -ln -sr "$ZYNBIN" "$ZYNLIB" -ln -sr "$VSTBIN32" "$VSTLIB32" || true -ln -sr "$VSTBIN64" "$VSTLIB64" || true - -# Remove wine library conflict -rm -f "${APPDIR}/usr/lib/libwine.so.1" - -# Use system-provided carla -rm -f "${APPDIR}usr/lib/"libcarla*.so -rm -f "${APPDIR}usr/lib/lmms/optional/"libcarla*.so - -# Remove bundled jack in LD_LIBRARY_PATH if exists -if [ -e "${APPDIR}/usr/lib/libjack.so.0" ]; then - rm "${APPDIR}/usr/lib/libjack.so.0" -fi - -# Bundle jack out of LD_LIBRARY_PATH -JACK_LIB=$(ldd "${APPDIR}/usr/bin/lmms.real" | sed -n 's/\tlibjack\.so\.0 => \(.\+\) (0x[0-9a-f]\+)/\1/p') -if [ -e "$JACK_LIB" ]; then - mkdir -p "${APPDIR}usr/lib/lmms/optional/" - cp "$JACK_LIB" "${APPDIR}usr/lib/lmms/optional/" -fi - -# Point the AppRun to the shim launcher -rm -f "${APPDIR}/AppRun" -ln -sr "${APPDIR}/usr/bin/lmms" "${APPDIR}/AppRun" - -# Add icon -ln -srf "${APPDIR}/lmms.png" "${APPDIR}/.DirIcon" - -# Create AppImage -echo -e "\nFinishing the AppImage..." -run_and_log "$APPIMAGETOOL" "${APPDIR}" "@APPIMAGE_FILE@" -success "Created @APPIMAGE_FILE@" - -echo -e "\nFinished" diff --git a/cmake/modules/BashCompletion.cmake b/cmake/modules/BashCompletion.cmake index 7301e82aa..7ce5a4886 100644 --- a/cmake/modules/BashCompletion.cmake +++ b/cmake/modules/BashCompletion.cmake @@ -1,93 +1,78 @@ -# A wrapper around pkg-config-provided and cmake-provided bash completion that -# will have dynamic behavior at INSTALL() time to allow both root-level -# INSTALL() as well as user-level INSTALL(). -# -# See also https://github.com/scop/bash-completion -# -# Copyright (c) 2018, Tres Finocchiaro, +# Copyright (c) 2024, Tres Finocchiaro, # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. # +# Description: +# Fail-safe bash-completion installation support +# - Installs to ${CMAKE_INSTALL_PREFIX}/share/bash-completion/completions +# - Attempts to calculate and install to system-wide location +# - See also https://github.com/scop/bash-completion +# # Usage: # INCLUDE(BashCompletion) # BASHCOMP_INSTALL(foo) # ... where "foo" is a shell script adjacent to the CMakeLists.txt -# -# How it determines BASHCOMP_PKG_PATH, in order: -# 1. Uses BASHCOMP_PKG_PATH if already set (e.g. -DBASHCOMP_PKG_PATH=...) -# a. If not, uses pkg-config's PKG_CHECK_MODULES to determine path -# b. Fallback to cmake's FIND_PACKAGE(bash-completion) path -# c. Fallback to hard-coded /usr/share/bash-completion/completions -# 2. Final fallback to ${CMAKE_INSTALL_PREFIX}/share/bash-completion/completions if -# detected path is unwritable. -# - Windows does not support bash completion -# - macOS support should eventually be added for Homebrew (TODO) -IF(WIN32) - MESSAGE(STATUS "Bash completion is not supported on this platform.") -ELSEIF(APPLE) - MESSAGE(STATUS "Bash completion is not yet implemented for this platform.") -ELSE() - INCLUDE(FindUnixCommands) - # Honor manual override if provided - IF(NOT BASHCOMP_PKG_PATH) - # First, use pkg-config, which is the most reliable - FIND_PACKAGE(PkgConfig QUIET) - IF(PKGCONFIG_FOUND) - PKG_CHECK_MODULES(BASH_COMPLETION bash-completion) - PKG_GET_VARIABLE(BASHCOMP_PKG_PATH bash-completion completionsdir) - ELSE() - # Second, use cmake (preferred but less common) - FIND_PACKAGE(bash-completion QUIET) - IF(BASH_COMPLETION_FOUND) - SET(BASHCOMP_PKG_PATH "${BASH_COMPLETION_COMPLETIONSDIR}") - ENDIF() - ENDIF() +# Honor manual override if provided +if(NOT BASHCOMP_PKG_PATH) + # First, use pkg-config, which is the most reliable + find_package(PkgConfig QUIET) + if(PKGCONFIG_FOUND) + PKG_CHECK_MODULES(BASH_COMPLETION bash-completion) + PKG_GET_VARIABLE(BASHCOMP_PKG_PATH bash-completion completionsdir) + else() + # Second, use cmake (preferred but less common) + find_package(bash-completion QUIET) + if(BASH_COMPLETION_FOUND) + set(BASHCOMP_PKG_PATH "${BASH_COMPLETION_COMPLETIONSDIR}") + endif() + endif() - # Third, use a hard-coded fallback value - IF("${BASHCOMP_PKG_PATH}" STREQUAL "") - SET(BASHCOMP_PKG_PATH "/usr/share/bash-completion/completions") - ENDIF() - ENDIF() + # Third, use a hard-coded fallback value + if("${BASHCOMP_PKG_PATH}" STREQUAL "") + set(BASHCOMP_PKG_PATH "/usr/share/bash-completion/completions") + endif() +endif() - # Always provide a fallback for non-root INSTALL() - SET(BASHCOMP_USER_PATH "${CMAKE_INSTALL_PREFIX}/share/bash-completion/completions") +# Always provide a fallback for non-root INSTALL() +# * "lmms" subfolder ensures we don't pollute /usr/local/share/ on default "make install" +set(BASHCOMP_USER_PATH "share/${PROJECT_NAME}/bash-completion/completions") - # Cmake doesn't allow easy use of conditional logic at INSTALL() time - # this is a problem because ${BASHCOMP_PKG_PATH} may not be writable and we - # need sane fallback behavior for bundled INSTALL() (e.g. .AppImage, etc). - # - # The reason this can't be detected by cmake is that it's fairly common to - # run "cmake" as a one user (i.e. non-root) and "make install" as another user - # (i.e. root). - # - # - Creates a script called "install_${SCRIPT_NAME}_completion.sh" into the - # working binary directory and invokes this script at install. - # - Script handles INSTALL()-time conditional logic for sane ballback behavior - # when ${BASHCOMP_PKG_PATH} is unwritable (i.e. non-root); Something cmake - # can't handle on its own at INSTALL() time) - MACRO(BASHCOMP_INSTALL SCRIPT_NAME) - # A shell script for wrapping conditionl logic - SET(BASHCOMP_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/install_${SCRIPT_NAME}_completion.sh") +macro(BASHCOMP_INSTALL SCRIPT_NAME) + # Note: When running from CPack, message(...) will be supressed unless WARNING + if(WIN32) + message(STATUS "Bash completion is not supported on this platform.") + else() + # Install a copy of bash completion to the default install prefix + # See also: https://github.com/LMMS/lmms/pull/7252/files#r1815749125 + install(FILES "${SCRIPT_NAME}" DESTINATION "${BASHCOMP_USER_PATH}") + + # Next, blindly attempt a system-wide install, ignoring failure + # See also: https://stackoverflow.com/q/58448332 + # * CPack doesn't use CMAKE_INSTALL_PREFIX, so the original will be missing when packaging + # and this step will be skipped + # * For non-root installs (e.g. ../target), this will silently fail + set(BASHCOMP_ORIG "${CMAKE_INSTALL_PREFIX}/${BASHCOMP_USER_PATH}/${CMAKE_PROJECT_NAME}") + set(BASHCOMP_LINK "${BASHCOMP_PKG_PATH}/${CMAKE_PROJECT_NAME}") + + if(BASHCOMP_PKG_PATH) + # TODO: CMake 3.21 Use "file(COPY_FILE ...)" + install(CODE " + if(EXISTS \"${BASHCOMP_ORIG}\") + file(REMOVE \"${BASHCOMP_LINK}\") + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink + \"${BASHCOMP_ORIG}\" + \"${BASHCOMP_LINK}\" + ERROR_QUIET + RESULT_VARIABLE result) + if(result EQUAL 0) + message(STATUS \"Bash completion-support has been installed to ${BASHCOMP_LINK}\") + endif() + endif() + ") + endif() + endif() +endmacro() - FILE(WRITE ${BASHCOMP_SCRIPT} "\ -#!${BASH}\n\ -set -e\n\ -if [ -w \"${BASHCOMP_PKG_PATH}\" ]; then\n\ - BASHCOMP_PKG_PATH=\"${BASHCOMP_PKG_PATH}\"\n\ -else \n\ - BASHCOMP_PKG_PATH=\"\$DESTDIR${BASHCOMP_USER_PATH}\"\n\ -fi\n\ -echo -e \"\\nInstalling bash completion...\\n\"\n\ -mkdir -p \"\$BASHCOMP_PKG_PATH\"\n\ -cp \"${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT_NAME}\" \"\$BASHCOMP_PKG_PATH\"\n\ -chmod a+r \"\$BASHCOMP_PKG_PATH/${SCRIPT_NAME}\"\n\ -echo -e \"Bash completion for ${SCRIPT_NAME} has been installed to \$BASHCOMP_PKG_PATH/${SCRIPT_NAME}\"\n\ -") - INSTALL(CODE "EXECUTE_PROCESS(COMMAND chmod u+x \"install_${SCRIPT_NAME}_completion.sh\" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )") - INSTALL(CODE "EXECUTE_PROCESS(COMMAND \"./install_${SCRIPT_NAME}_completion.sh\" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )") - MESSAGE(STATUS "Bash completion script for ${SCRIPT_NAME} will be installed to ${BASHCOMP_PKG_PATH} or fallback to ${BASHCOMP_USER_PATH} if unwritable.") - ENDMACRO() -ENDIF() diff --git a/cmake/modules/CreateSymlink.cmake b/cmake/modules/CreateSymlink.cmake new file mode 100644 index 000000000..41af2eb6f --- /dev/null +++ b/cmake/modules/CreateSymlink.cmake @@ -0,0 +1,34 @@ +# Offer relative symlink support via "cmake -E create_symlink" +# For verbose, set COMMAND_ECHO to STDOUT in calling script +macro(create_symlink filepath sympath) + if(CMAKE_COMMAND) + set(_cmake_command "${CMAKE_COMMAND}") + elseif(CPACK_CMAKE_COMMAND) + set(_cmake_command "${CPACK_CMAKE_COMMAND}") + else() + message(FATAL_ERROR "Sorry, can't resolve variable CMAKE_COMMAND") + endif() + + if(NOT IS_ABSOLUTE "${sympath}") + message(FATAL_ERROR "Sorry, this command only works with absolute paths") + endif() + + if(NOT DEFINED COMMAND_ECHO) + set(_command_echo NONE) + else() + set(_command_echo "${COMMAND_ECHO}") + endif() + + # Calculate the relative path + file(RELATIVE_PATH reldir "${sympath}/../" "${filepath}") + get_filename_component(symname "${sympath}" NAME) + + # Calculate the working directory + get_filename_component(sympath_parent "${sympath}" DIRECTORY) + + # Create the symbolic link + execute_process(COMMAND "${_cmake_command}" -E create_symlink "${reldir}" "${symname}" + WORKING_DIRECTORY "${sympath_parent}" + COMMAND_ECHO ${_command_echo} + COMMAND_ERROR_IS_FATAL ANY) +endmacro() \ No newline at end of file diff --git a/cmake/modules/DownloadBinary.cmake b/cmake/modules/DownloadBinary.cmake new file mode 100644 index 000000000..a6b92dc44 --- /dev/null +++ b/cmake/modules/DownloadBinary.cmake @@ -0,0 +1,143 @@ +# Downloads an executable from the provided URL for use in a build system +# and optionally prepends it to the PATH +# +# Assumes: +# - CMAKE_CURRENT_BINARY_DIR/[${_name}] +# - CPACK_CURRENT_BINARY_DIR/[${_name}] +# - Fallback to $ENV{TMPDIR}/[RANDOM]/[${_name}] +# - For verbose, set COMMAND_ECHO to STDOUT in calling script +# +macro(download_binary RESULT_VARIABLE _url _name _prepend_to_path) + if(NOT COMMAND_ECHO OR "${COMMAND_ECHO}" STREQUAL "NONE") + set(_command_echo NONE) + set(_output_quiet OUTPUT_QUIET) + set(_error_quiet ERROR_QUIET) + else() + set(_command_echo "${COMMAND_ECHO}") + set(_output_quiet "") + set(_error_quiet "") + endif() + + # Check if fuse is needed + if("${RESULT_VARIABLE}" MATCHES "\\.AppImage$" OR "${_name}" MATCHES "\\.AppImage$") + message(STATUS "AppImage detected, we'll extract the AppImage before using") + set(_${RESULT_VARIABLE}_IS_APPIMAGE TRUE) + endif() + + # Determine a suitable working directory + if(CMAKE_CURRENT_BINARY_DIR) + # Assume we're called from configure step + set(_working_dir "${CMAKE_CURRENT_BINARY_DIR}") + elseif(CPACK_CURRENT_BINARY_DIR) + # Assume cpack (non-standard variable name, but used throughout) + set(_working_dir "${CPACK_CURRENT_BINARY_DIR}") + else() + # Fallback to somewhere temporary, writable + if($ENV{_tmpdir}) + # POSIX + set(_tmpdir "$ENV{_tmpdir}") + elseif($ENV{TEMP}) + # Windows + set(_tmpdir "$ENV{TEMP}") + else() + # Linux, shame on you! + find_program(MKTEMP mktemp) + if(MKTEMP) + execute_process(COMMAND mktemp + OUTPUT_VARIABLE _working_dir + OUTPUT_STRIP_TRAILING_WHITESPACE + ${_output_quiet} + COMMAND_ECHO ${_command_echo}) + # mktemp formats it how we want it + else() + # Ummm... Linux you can do better! + set(_tmpdir "/tmp") + endif() + endif() + if(NOT DEFINED _working_dir) + string(RANDOM subdir) + set(_working_dir "${_tmpdir}/tmp.${subdir}") + endif() + if(NOT EXISTS "${_working_dir}") + file(MAKE_DIRECTORY "${_working_dir}") + endif() + endif() + + if(_prepend_to_path) + # Ensure the PATH is configured + string(FIND "$ENV{PATH}" "${_working_dir}" _pathloc) + if(NOT $_pathloc EQUAL 0) + set(ENV{PATH} "${_working_dir}:$ENV{PATH}") + endif() + endif() + + # First ensure the binary doesn't already exist + find_program(_${RESULT_VARIABLE} "${_name}" HINTS "${_working_dir}") + + set(_binary_path "${_working_dir}/${_name}") + if(NOT _${RESULT_VARIABLE}) + message(STATUS "Downloading ${_name} from ${_url}...") + file(DOWNLOAD + "${_url}" + "${_binary_path}" + STATUS DOWNLOAD_STATUS) + # Check if download was successful. + list(GET DOWNLOAD_STATUS 0 STATUS_CODE) + list(GET DOWNLOAD_STATUS 1 ERROR_MESSAGE) + if(NOT ${STATUS_CODE} EQUAL 0) + file(REMOVE "${_binary_path}") + message(FATAL_ERROR "Error downloading ${_url} ${ERROR_MESSAGE}") + endif() + + # Ensure the file is executable + file(CHMOD "${_binary_path}" PERMISSIONS + OWNER_EXECUTE OWNER_WRITE OWNER_READ + GROUP_EXECUTE GROUP_WRITE GROUP_READ) + + # Ensure it's found + find_program(_${RESULT_VARIABLE} "${_name}" HINTS "${_working_dir}" REQUIRED) + endif() + + # We need to create a subdirectory for this binary and symlink it's AppRun to where it's expected + if(_${RESULT_VARIABLE}_IS_APPIMAGE AND NOT IS_SYMLINK "${_${RESULT_VARIABLE}}") + if(NOT COMMAND create_symlink) + include(CreateSymlink) + endif() + + message(STATUS "Extracting ${_${RESULT_VARIABLE}} to ${_working_dir}/.${_name}/") + + # extract appimage + execute_process(COMMAND "${_${RESULT_VARIABLE}}" --appimage-extract + WORKING_DIRECTORY "${_working_dir}" + COMMAND_ECHO ${_command_echo} + ${_output_quiet} + ${_error_quiet} + COMMAND_ERROR_IS_FATAL ANY) + + # move extracted files to dedicated location (e.g. ".linuxdeploy-x86_64.AppImage/squashfs-root/") + file(MAKE_DIRECTORY "${_working_dir}/.${_name}/") + file(RENAME "${_working_dir}/squashfs-root/" "${_working_dir}/.${_name}/squashfs-root/") + + # remove the unusable binary + file(REMOVE "${_${RESULT_VARIABLE}}") + + # symlink the expected binary name to the AppRun file + message(STATUS "Creating a symbolic link ${_${RESULT_VARIABLE}} which points to ${_working_dir}/.${_name}/squashfs-root/AppRun") + create_symlink("${_working_dir}/.${_name}/squashfs-root/AppRun" "${_${RESULT_VARIABLE}}") + endif() + + # Test the binary + # - TODO: Add support for bad binaries that set "$?" to an error code for no good reason + # - TODO: Add support for Windows binaries expecting "/?" instead of "--help" + message(STATUS "Testing that ${_name} works on this system...") + set(_test_param "--help") + + execute_process(COMMAND "${_${RESULT_VARIABLE}}" ${_test_param} + COMMAND_ECHO ${_command_echo} + ${_output_quiet} + ${_error_quiet} + COMMAND_ERROR_IS_FATAL ANY) + + message(STATUS "The binary \"${_${RESULT_VARIABLE}}\" is now available") + set(${RESULT_VARIABLE} "${_${RESULT_VARIABLE}}") +endmacro() \ No newline at end of file diff --git a/cmake/modules/FindSuilModules.cmake b/cmake/modules/FindSuilModules.cmake new file mode 100644 index 000000000..998521c7a --- /dev/null +++ b/cmake/modules/FindSuilModules.cmake @@ -0,0 +1,40 @@ +# Copyright (c) 2024 Tres Finocchiaro +# +# Redistribution and use is allowed according to the terms of the New BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# This module defines +# Suil_MODULES: List of full paths to Suil modules (e.g. "/usr/lib/suil-0/libsuil_x11.so;...") +# Suil_MODULES_PREFIX: Only the directory name of the Suil_MODULES path (e.g. "suil-0") + +pkg_check_modules(Suil QUIET suil-0) + +if(Suil_FOUND) + if(APPLE) + set(_lib_ext "dylib") + elseif(WIN32) + set(_lib_ext "dll") + else() + set(_lib_ext "so") + endif() + + # Isolate -- if needed -- the first suil library path (e.g. "/usr/lib/libsuil-0.so") + list(GET Suil_LINK_LIBRARIES 0 _lib) + if(EXISTS "${_lib}") + # Isolate -- if needed -- the first suil library name (e.g. "suil-0") + list(GET Suil_LIBRARIES 0 _modules_prefix) + get_filename_component(_lib_dir "${_lib}" DIRECTORY) + # Construct modules path (e.g. "/usr/lib/suil-0") + set(_modules_dir "${_lib_dir}/${_modules_prefix}") + if(IS_DIRECTORY "${_modules_dir}") + set(Suil_MODULES_PREFIX "${_modules_prefix}") + file(GLOB Suil_MODULES "${_modules_dir}/*.${_lib_ext}") + list(SORT Suil_MODULES) + endif() + endif() +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(SuilModules + REQUIRED_VARS Suil_MODULES Suil_MODULES_PREFIX +) \ No newline at end of file diff --git a/cmake/nsis/CMakeLists.txt b/cmake/nsis/CMakeLists.txt index 8363cacf7..a978b4ee4 100644 --- a/cmake/nsis/CMakeLists.txt +++ b/cmake/nsis/CMakeLists.txt @@ -53,6 +53,15 @@ SET(CPACK_NSIS_DEFINES "${CPACK_NSIS_DEFINES}" PARENT_SCOPE) SET(CPACK_PACKAGE_ICON "${CPACK_PACKAGE_ICON}" PARENT_SCOPE) SET(CPACK_NSIS_MUI_ICON "${CPACK_NSIS_MUI_ICON}" PARENT_SCOPE) +# Disable cpack's strip for historic reasons +set(CPACK_STRIP_FILES_ORIG "${CPACK_STRIP_FILES}" PARENT_SCOPE) +set(CPACK_STRIP_FILES FALSE PARENT_SCOPE) + +if(CPACK_DEBUG) + # CMake 3.19+ + set(CPACK_NSIS_EXECUTABLE_PRE_ARGUMENTS "-V4") +endif() + # Windows resource compilers CONFIGURE_FILE("lmms.rc.in" "${CMAKE_BINARY_DIR}/lmms.rc") CONFIGURE_FILE("zynaddsubfx.rc.in" "${CMAKE_BINARY_DIR}/plugins/ZynAddSubFx/zynaddsubfx.rc") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c458a5cd2..55f416fae 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -181,11 +181,11 @@ set_target_properties(lmms PROPERTIES set_target_properties(lmmsobjs PROPERTIES AUTOUIC_SEARCH_PATHS "gui/modals") -IF(NOT WIN32) +IF(NOT WIN32 AND NOT LMMS_BUILD_APPLE) if(CMAKE_INSTALL_MANDIR) SET(INSTALL_MANDIR ${CMAKE_INSTALL_MANDIR}) ELSE(CMAKE_INSTALL_MANDIR) - SET(INSTALL_MANDIR ${CMAKE_INSTALL_PREFIX}/share/man) + SET(INSTALL_MANDIR share/man) ENDIF(CMAKE_INSTALL_MANDIR) INSTALL(FILES "${CMAKE_BINARY_DIR}/lmms.1.gz" DESTINATION "${INSTALL_MANDIR}/man1/" diff --git a/src/core/RemotePlugin.cpp b/src/core/RemotePlugin.cpp index dc26bf2b5..28f5f915a 100644 --- a/src/core/RemotePlugin.cpp +++ b/src/core/RemotePlugin.cpp @@ -235,6 +235,11 @@ bool RemotePlugin::init(const QString &pluginExecutable, m_failed = false; } QString exec = QFileInfo(QDir("plugins:"), pluginExecutable).absoluteFilePath(); + + // We may have received a directory via a environment variable + if (const char* env_path = std::getenv("LMMS_PLUGIN_DIR")) + exec = QFileInfo(QDir(env_path), pluginExecutable).absoluteFilePath(); + #ifdef LMMS_BUILD_APPLE // search current directory first QString curDir = QCoreApplication::applicationDirPath() + "/" + pluginExecutable; @@ -252,7 +257,7 @@ bool RemotePlugin::init(const QString &pluginExecutable, if( ! QFile( exec ).exists() ) { - qWarning( "Remote plugin '%s' not found.", + qWarning( "Remote plugin '%s' not found", exec.toUtf8().constData() ); m_failed = true; invalidate(); diff --git a/src/core/audio/AudioSoundIo.cpp b/src/core/audio/AudioSoundIo.cpp index c7fa380e4..1d63ada3a 100644 --- a/src/core/audio/AudioSoundIo.cpp +++ b/src/core/audio/AudioSoundIo.cpp @@ -467,7 +467,8 @@ AudioSoundIo::setupWidget::setupWidget( QWidget * _parent ) : reconnectSoundIo(); - bool ok = connect( &m_backendModel, SIGNAL(dataChanged()), &m_setupUtil, SLOT(reconnectSoundIo())); + [[maybe_unused]] bool ok = connect(&m_backendModel, &ComboBoxModel::dataChanged, + &m_setupUtil, &AudioSoundIoSetupUtil::reconnectSoundIo); assert(ok); m_backend->setModel( &m_backendModel ); @@ -476,7 +477,8 @@ AudioSoundIo::setupWidget::setupWidget( QWidget * _parent ) : AudioSoundIo::setupWidget::~setupWidget() { - bool ok = disconnect( &m_backendModel, SIGNAL(dataChanged()), &m_setupUtil, SLOT(reconnectSoundIo())); + [[maybe_unused]] bool ok = disconnect(&m_backendModel, &ComboBoxModel::dataChanged, + &m_setupUtil, &AudioSoundIoSetupUtil::reconnectSoundIo); assert(ok); if (m_soundio) { diff --git a/src/gui/SampleLoader.cpp b/src/gui/SampleLoader.cpp index f2340852d..d72b0ba5c 100644 --- a/src/gui/SampleLoader.cpp +++ b/src/gui/SampleLoader.cpp @@ -39,7 +39,7 @@ namespace lmms::gui { QString SampleLoader::openAudioFile(const QString& previousFile) { auto openFileDialog = FileDialog(nullptr, QObject::tr("Open audio file")); - auto dir = !previousFile.isEmpty() ? PathUtil::toAbsolute(previousFile) : ConfigManager::inst()->userSamplesDir(); + auto dir = !previousFile.isEmpty() ? QFileInfo(PathUtil::toAbsolute(previousFile)).absolutePath() : ConfigManager::inst()->userSamplesDir(); // change dir to position of previously opened file openFileDialog.setDirectory(dir);