From d4d909cd9e440f3eba923d748938df2064a29c4c Mon Sep 17 00:00:00 2001 From: Tres Finocchiaro Date: Thu, 9 Nov 2017 01:57:20 -0500 Subject: [PATCH] Add libjack.so.0 fallback logic for AppImages (#3958) Add libjack.so.0 fallback logic --- cmake/linux/package_linux.sh.in | 14 ++++++++++++++ src/core/CMakeLists.txt | 9 +++++++++ 2 files changed, 23 insertions(+) diff --git a/cmake/linux/package_linux.sh.in b/cmake/linux/package_linux.sh.in index b1f2b55fa..16a6297eb 100644 --- a/cmake/linux/package_linux.sh.in +++ b/cmake/linux/package_linux.sh.in @@ -109,6 +109,12 @@ if lsmod |grep vboxguest > /dev/null 2>&1; then echo "VirtualBox detected. Forcing libgl software rendering." export LIBGL_ALWAYS_SOFTWARE=1; fi +if ldconfig -p | grep libjack.so.0 > /dev/null 2>&1; then + echo "Jack appears to be installed on this system, so we'll use it." +else + echo "Jack does not appear to be installed. That's OK, we'll use a dummy version instead." + export LD_LIBRARY_PATH=\$DIR/usr/lib/lmms/optional:\$LD_LIBRARY_PATH +fi QT_X11_NO_NATIVE_MENUBAR=1 QT_AUTO_SCREEN_SCALE_FACTOR=1 \$DIR/usr/bin/lmms.real "\$@" EOL @@ -164,6 +170,14 @@ ln -sr "$VSTBIN" "$VSTLIB" # Remove wine library conflict rm -f "${APPDIR}/usr/lib/libwine.so.1" +# Remove problematic jack library, replace with weakjack +if [ -e "${APPDIR}/usr/lib/libjack.so.0" ]; then + rm -f "${APPDIR}/usr/lib/libjack.so.0" + mkdir -p "${APPDIR}usr/lib/lmms/optional/" + cp "@CMAKE_BINARY_DIR@/optional/weakjack.so" "${APPDIR}usr/lib/lmms/optional/weakjack.so" + ln -sr "${APPDIR}usr/lib/lmms/optional/weakjack.so" "${APPDIR}usr/lib/lmms/optional/libjack.so.0" +fi + # Create AppImage echo -e "\nFinishing the AppImage..." echo -e "\n\n>>>>> appimagetool" >> "$LOGFILE" diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index c8840997d..30566e5ae 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1,5 +1,14 @@ IF(LMMS_HAVE_WEAKJACK) set(WEAKJACK core/audio/AudioWeakJack.c) + + # Build libjack.so.0 stub as weakjack.so for AppImages + IF(LMMS_BUILD_LINUX) + ADD_LIBRARY(weakjack MODULE ../../src/core/audio/AudioWeakJack.c) + INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/include") + # We can't predict an AppImage build, so stash the build artifact for later + INSTALL(TARGETS weakjack LIBRARY DESTINATION "${CMAKE_BINARY_DIR}/optional") + SET_TARGET_PROPERTIES(weakjack PROPERTIES PREFIX "" SUFFIX ".so") + ENDIF() ENDIF() set(LMMS_SRCS