diff --git a/cmake/linux/apprun-hooks/README.md b/cmake/linux/apprun-hooks/README.md index 2bac9f1cb..90e4a39e0 100644 --- a/cmake/linux/apprun-hooks/README.md +++ b/cmake/linux/apprun-hooks/README.md @@ -1,6 +1,6 @@ # AppRun Hooks -Scripts placed in this directory will automatically be bundled into AppImages +Scripts placed in this directory will automatically be bundled into linuxdeploy AppImages (e.g. `LMMS.AppDir/apprun-hooks`) and executed immediately before lmms. Quoting: diff --git a/cmake/linux/apprun-hooks/carla-hook.sh b/cmake/linux/apprun-hooks/carla-hook.sh old mode 100644 new mode 100755 index 6f082d140..4dda1cad1 --- a/cmake/linux/apprun-hooks/carla-hook.sh +++ b/cmake/linux/apprun-hooks/carla-hook.sh @@ -1,10 +1,8 @@ -#!/usr/bin/env bash +#!/bin/sh # Workaround nuances with carla being an optional-yet-hard-linked plugin -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )" -ME="$( basename "${BASH_SOURCE[0]}")" CARLA_LIB_NAME="libcarla_native-plugin.so" -KNOWN_LOCATIONS=("lib" "lib64") +KNOWN_LOCATIONS="lib lib64" unset CARLA_LIB_FILE # Check for carla at "known" locations @@ -13,31 +11,31 @@ if command -v carla > /dev/null 2>&1; then CARLA_PREFIX="${CARLA_PATH%/bin*}" # Look for libcarla_native-plugin.so in adjacent lib directory - for lib in "${KNOWN_LOCATIONS[@]}"; do + for lib in $KNOWN_LOCATIONS; do if [ -e "$CARLA_PREFIX/$lib/carla/$CARLA_LIB_NAME" ]; then # Add directory to LD_LIBRARY_PATH so libcarlabase.so can find it CARLA_LIB_FILE="$CARLA_PREFIX/$lib/carla/$CARLA_LIB_NAME" export LD_LIBRARY_PATH="$CARLA_PREFIX/$lib/carla/:$LD_LIBRARY_PATH" - echo "[$ME] Carla appears to be installed on this system at $CARLA_PREFIX/$lib/carla so we'll use it." >&2 + echo "[${0##*/}] Carla appears to be installed on this system at $CARLA_PREFIX/$lib/carla so we'll use it." >&2 break fi done else - echo "[$ME] Carla does not appear to be installed, we'll remove it from the plugin listing." >&2 + echo "[${0##*/}] Carla does not appear to be installed, we'll remove it from the plugin listing." >&2 export "LMMS_EXCLUDE_PLUGINS=libcarla,${LMMS_EXCLUDE_PLUGINS}" fi # Additional workarounds for library conflicts # libgobject has been versioned "2.0" for over 20 years, but the ABI is constantly changing -KNOWN_CONFLICTS=("libgobject-2.0.so.0") +KNOWN_CONFLICTS="libgobject-2.0.so.0" if [ -n "$CARLA_LIB_FILE" ]; then - for conflict in "${KNOWN_CONFLICTS[@]}"; do + for conflict in $KNOWN_CONFLICTS; do # Only prepend LD_PRELOAD if we bundle the same version - if [ -e "$DIR/usr/lib/$conflict" ]; then + if [ -e "$APPDIR/usr/lib/$conflict" ]; then conflict_sys="$(ldd "$CARLA_LIB_FILE" | grep "$conflict" | awk '{print $3}')" if [ -e "$conflict_sys" ]; then # Add library to LD_PRELOAD so lmms can find it over its bundled version - echo "[$ME] Preferring the system's \"$conflict\" over the version bundled." >&2 + echo "[${0##*/}] Preferring the system's \"$conflict\" over the version bundled." >&2 export LD_PRELOAD="$conflict_sys:$LD_PRELOAD" fi fi diff --git a/cmake/linux/apprun-hooks/jack-hook.sh b/cmake/linux/apprun-hooks/jack-hook.sh old mode 100644 new mode 100755 index e8a2d16c3..4fbcfd53e --- a/cmake/linux/apprun-hooks/jack-hook.sh +++ b/cmake/linux/apprun-hooks/jack-hook.sh @@ -1,15 +1,9 @@ -#!/usr/bin/env bash +#!/bin/sh # Workaround crash when jack is missing by providing a dummy version -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )" -ME="$( basename "${BASH_SOURCE[0]}")" -# Set language to English -export LC_ALL=C -if ldd "$DIR/usr/bin/lmms" |grep "libjack.so" |grep "not found" > /dev/null 2>&1; then - echo "[$ME] 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/jack:$LD_LIBRARY_PATH" +if LC_ALL=C ldd "$APPDIR/usr/bin/lmms" |grep "libjack.so" |grep "not found" > /dev/null 2>&1; then + echo "[${0##*/}] Jack does not appear to be installed. That's OK, we'll use a dummy version instead." >&2 + export LD_LIBRARY_PATH="$APPDIR/usr/lib/jack:$LD_LIBRARY_PATH" else - echo "[$ME] Jack appears to be installed on this system, so we'll use it." >&2 + echo "[${0##*/}] Jack appears to be installed on this system, so we'll use it." >&2 fi -# Restore language -unset LC_ALL diff --git a/cmake/linux/apprun-hooks/unity-hook.sh b/cmake/linux/apprun-hooks/unity-hook.sh old mode 100644 new mode 100755 index 7b0052ff7..dc8dc0be9 --- a/cmake/linux/apprun-hooks/unity-hook.sh +++ b/cmake/linux/apprun-hooks/unity-hook.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/sh # Workaround Unity desktop menubar integration # - Unity's menubar relocation breaks Qt's MDI window handling in Linux diff --git a/cmake/linux/apprun-hooks/usr-lib-hooks.sh b/cmake/linux/apprun-hooks/usr-lib-hooks.sh old mode 100644 new mode 100755 index 97f62d750..a7b2298f1 --- a/cmake/linux/apprun-hooks/usr-lib-hooks.sh +++ b/cmake/linux/apprun-hooks/usr-lib-hooks.sh @@ -1,5 +1,4 @@ -#!/usr/bin/env bash +#!/bin/sh # Paths for plugin systems to pick-up -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )" -export SUIL_MODULE_DIR="$DIR/usr/lib/suil-0/" # See also ${SUIL_MODULES_TARGET} +export SUIL_MODULE_DIR="$APPDIR/usr/lib/suil-0/" # See also ${SUIL_MODULES_TARGET} diff --git a/cmake/linux/apprun-hooks/vbox-hook.sh b/cmake/linux/apprun-hooks/vbox-hook.sh old mode 100644 new mode 100755 index e2ff1f6e0..b71097adf --- a/cmake/linux/apprun-hooks/vbox-hook.sh +++ b/cmake/linux/apprun-hooks/vbox-hook.sh @@ -1,7 +1,7 @@ -#!/usr/bin/env bash -ME="$( basename "${BASH_SOURCE[0]}")" +#!/bin/sh + # Workaround crash in VirtualBox when hardware rendering is enabled if lsmod |grep vboxguest > /dev/null 2>&1; then - echo "[$ME] VirtualBox detected. Forcing libgl software rendering." >&2 + echo "[${0##*/}] VirtualBox detected. Forcing libgl software rendering." >&2 export LIBGL_ALWAYS_SOFTWARE=1; fi diff --git a/cmake/linux/apprun-hooks/wayland-hook.sh b/cmake/linux/apprun-hooks/wayland-hook.sh old mode 100644 new mode 100755 index a24a1a563..cd887e337 --- a/cmake/linux/apprun-hooks/wayland-hook.sh +++ b/cmake/linux/apprun-hooks/wayland-hook.sh @@ -1,12 +1,10 @@ -#!/usr/bin/env bash - -# Configure QPlatform Abstraction (qpa) to prefer X-Protocol C-Bindings (xcb) over Wayland -ME="$( basename "${BASH_SOURCE[0]}")" +#!/bin/sh +# Configure QPlatform Abstraction (qpa) to prefer X-Protocol C-Bindings (xcb) over Wayland if [ -n "$QT_QPA_PLATFORM" ]; then - echo "[$ME] QT_QPA_PLATFORM=\"$QT_QPA_PLATFORM\" was provided, using." >&2 + echo "[${0##*/}] QT_QPA_PLATFORM=\"$QT_QPA_PLATFORM\" was provided, using." >&2 else export QT_QPA_PLATFORM="xcb" - echo "[$ME] Defaulting to QT_QPA_PLATFORM=\"$QT_QPA_PLATFORM\" for compatibility purposes." >&2 - echo "[$ME] To force wayland, set QT_QPA_PLATFORM=\"wayland\" or call using \"-platform wayland\"." >&2 + echo "[${0##*/}] Defaulting to QT_QPA_PLATFORM=\"$QT_QPA_PLATFORM\" for compatibility purposes." >&2 + echo "[${0##*/}] To force wayland, set QT_QPA_PLATFORM=\"wayland\" or call using \"-platform wayland\"." >&2 fi