diff --git a/build/linux/appimage/AppRun b/build/linux/appimage/AppRun index 79bf8ddb0f..35c6da9e79 100644 --- a/build/linux/appimage/AppRun +++ b/build/linux/appimage/AppRun @@ -9,64 +9,54 @@ set -e -# COMPATIBILITY NOTICE -HERE="$(dirname "$(readlink -f "${0}")")" -LD_LINUX=$(find "$HERE" -name 'ld-*.so.*' | head -n 1) -export DISTRO=$(exec "${LD_LINUX}" --inhibit-cache --library-path "$LD_LIBRARY_PATH" "${HERE}/OPT_PREFIX_WILDbin/uname" "-a") -echo "This is a CI native build of GIMP (please see devel-docs/os-support.txt)." -case "${DISTRO}" in - *Debian*|*debian*) - echo ".js (JavaScript) plug-ins | supported." - echo ".lua (Lua) plug-ins | NOT supported!" - echo ".py (Python) plug-ins | supported." - echo ".scm (ScriptFu) plug-ins | supported." - echo ".vala (Vala) plug-ins | supported." -esac - - # PATHS MAPPING +HERE="$(dirname "$(readlink -f "${0}")")" ## General paths -export PATH="${HERE}"/OPT_PREFIX_WILDbin/:"${PATH}" -export LD_LIBRARY_PATH="${HERE}"/OPT_PREFIX_WILDlib/:"${HERE}"/OPT_PREFIX_WILDlib/x86_64-linux-gnu/:"${HERE}"/OPT_PREFIX_WILDlib64/:"${LD_LIBRARY_PATH}" -export GI_TYPELIB_PATH="${HERE}"/GI_TYPELIB_PATH_WILD:"${GI_TYPELIB_PATH}" -export XDG_DATA_DIRS="${HERE}"/OPT_PREFIX_WILDshare/:"${XDG_DATA_DIRS}" +export PATH="$HERE"/OPT_PREFIX_WILDbin/:"$PATH" +export LD_LIBRARY_PATH="$HERE"/OPT_PREFIX_WILDlib/:"$HERE"/OPT_PREFIX_WILDlib/x86_64-linux-gnu/:"$HERE"/OPT_PREFIX_WILDlib64/:"$LD_LIBRARY_PATH" +export GI_TYPELIB_PATH="$HERE"/GI_TYPELIB_PATH_WILD:"$GI_TYPELIB_PATH" +export XDG_DATA_DIRS="$HERE"/OPT_PREFIX_WILDshare/:"$XDG_DATA_DIRS" + +## Compatibility layer +LD_LINUX="$HERE/LD_LINUX_WILD --inhibit-cache --library-path $LD_LIBRARY_PATH" +DISTRO=$(eval "$LD_LINUX" "$HERE"/OPT_PREFIX_WILDbin/uname -a) +echo "This is a CI native build of GIMP (please see devel-docs/os-support.txt)." +case "$DISTRO" in + *Debian*|*debian*) + echo '.js (JavaScript) plug-ins | supported.' + echo '.lua (Lua) plug-ins | NOT supported!' + echo '.py (Python) plug-ins | supported.' + echo '.scm (ScriptFu) plug-ins | supported.' + echo '.vala (Vala) plug-ins | supported.' +esac + +## Other paths (base) +export GIO_MODULE_DIR="$HERE"/GIO_MODULE_DIR_WILD/modules +export GDK_PIXBUF_MODULEDIR="$HERE"/GDK_PIXBUF_MODULEDIR_WILD/loaders +export GDK_PIXBUF_MODULE_FILE="$HERE"/GDK_PIXBUF_MODULE_FILE_WILD/loaders.cache +export GTK_PATH="$HERE"/GTK_PATH_WILD +export GTK_IM_MODULE_FILE="$HERE"/GTK_IM_MODULE_FILE_WILD/immodules.cache +export GTK_THEME=$(eval "$LD_LINUX" "$HERE"/OPT_PREFIX_WILDbin/gsettings get org.gnome.desktop.interface gtk-theme | "$HERE"/OPT_PREFIX_WILDbin/sed "s/'//g" || echo 'Default') ## GIMP-specific paths -export BABL_PATH="${HERE}"/BABL_PATH_WILD -export GEGL_PATH="${HERE}"/GEGL_PATH_WILD -export GIMP3_SYSCONFDIR="${HERE}"/GIMP3_SYSCONFDIR_WILD -export GIMP3_PLUGINDIR="${HERE}"/GIMP3_PLUGINDIR_WILD -export GIMP3_DATADIR="${HERE}"/GIMP3_DATADIR_WILD -export GIMP3_LOCALEDIR="${HERE}"/OPT_PREFIX_WILDshare/locale +export BABL_PATH="$HERE"/BABL_PATH_WILD +export GEGL_PATH="$HERE"/GEGL_PATH_WILD +export GIMP3_SYSCONFDIR="$HERE"/GIMP3_SYSCONFDIR_WILD +export GIMP3_PLUGINDIR="$HERE"/GIMP3_PLUGINDIR_WILD +export GIMP3_DATADIR="$HERE"/GIMP3_DATADIR_WILD +export GIMP3_LOCALEDIR="$HERE"/OPT_PREFIX_WILDshare/locale if [ -z ${XDG_CONFIG_HOME} ]; then export GIMP3_DIRECTORY="$HOME/.config/GIMP/GIMP_APP_VERSION" else export GIMP3_DIRECTORY="$XDG_CONFIG_HOME/GIMP/GIMP_APP_VERSION" fi -## Other paths (base) -export GIO_MODULE_DIR="${HERE}"/GIO_MODULE_DIR_WILD/modules -export GDK_PIXBUF_MODULEDIR="${HERE}"/GDK_PIXBUF_MODULEDIR_WILD/loaders -export GDK_PIXBUF_MODULE_FILE="${HERE}"/GDK_PIXBUF_MODULE_FILE_WILD/loaders.cache -export GTK_PATH="${HERE}"/GTK_PATH_WILD -export GTK_IM_MODULE_FILE="${HERE}"/GTK_IM_MODULE_FILE_WILD/immodules.cache -### For now, we only support "Adwaita-compliant" system themes (e.g. Yaru) -export GTK_THEME=Default -"${LD_LINUX}" --inhibit-cache --library-path "$LD_LIBRARY_PATH" "${HERE}/OPT_PREFIX_WILDbin/find" "." "-name" "libgtk-4*" -if [ $? -eq '0' ]; then - case "${DE}" in - *GNOME*|*gnome*) - export SYSTEM_THEME=$(exec "${LD_LINUX}" --inhibit-cache --library-path "$LD_LIBRARY_PATH" "${HERE}/OPT_PREFIX_WILDbin/gsettings" "get" "org.gnome.desktop.interface" "gtk-theme" | exec "${LD_LINUX}" --inhibit-cache --library-path "$LD_LIBRARY_PATH" "${HERE}/OPT_PREFIX_WILDbin/sed" "s/'//g") - export GTK_THEME=$SYSTEM_THEME - esac -fi - ## Other paths (GIMP related) -export LIBGL_DRIVERS_PATH="${HERE}"/LIBGL_DRIVERS_PATH_WILD -export PYTHONPATH="${HERE}"/PYTHONPATH_WILD +export LIBGL_DRIVERS_PATH="$HERE"/LIBGL_DRIVERS_PATH_WILD +export PYTHONPATH="$HERE"/PYTHONPATH_WILD # RUN MAIN_BIN cd "$HERE"/OPT_PREFIX_WILD -exec "${LD_LINUX}" --inhibit-cache --library-path "$LD_LIBRARY_PATH" "${HERE}/OPT_PREFIX_WILDbin/gimp-GIMP_APP_VERSION" "$@" +LD_PRELOAD=/OPT_PREFIX_WILDlib/x86_64-linux-gnu/libc.so.6 "$HERE"/OPT_PREFIX_WILDbin/gimp-GIMP_APP_VERSION "$@" diff --git a/build/linux/appimage/bundle-gimp-appimage.sh b/build/linux/appimage/bundle-gimp-appimage.sh index 9787c6fe6f..7522653862 100644 --- a/build/linux/appimage/bundle-gimp-appimage.sh +++ b/build/linux/appimage/bundle-gimp-appimage.sh @@ -91,6 +91,7 @@ chmod +x "$legacy_appimagetool" # BUNDLE FILES ## System base (needed to use GIMP or to avoid polluting the terminal output) +conf_app LD_LINUX "/usr" "lib64/ld-*.so.*" ### Glib needed files find_dat "/usr/share/glib-*/schemas" "*" ### Glib commonly required modules @@ -121,8 +122,7 @@ conf_app GIMP3_SYSCONFDIR "$OPT_PREFIX" "etc/gimp/*" conf_app GIMP3_DATADIR "$OPT_PREFIX" "share/gimp/*" ### Copy localized language list support find_dat "/usr/share/xml/iso-codes" "iso_639-2.xml" "iso_639.xml" -### Copy system theme support (TODO: remove when our Default theme is mature) -find_bin "find*" +### Copy system theme support find_bin "gsettings*" find_bin "sed*" ### Copy GTK inspector support @@ -143,7 +143,7 @@ find_bin "gjs*" ### Copy Python plug-ins support find_bin "python*" find_lib "python*.*" -conf_app PYTHONPATH "/usr" "${LIB_DIR}/${LIB_SUBDIR}python*.**" +conf_app PYTHONPATH "/usr" "${LIB_DIR}/${LIB_SUBDIR}python3.11" ## Final adjustments ### Auto detect and copy deps of binaries copied above @@ -166,8 +166,10 @@ rm -r $OPT_PREFIX/${LIB_DIR}/${LIB_SUBDIR}pkgconfig rm -r $OPT_PREFIX/share/doc rm -r $OPT_PREFIX/share/man -## Sad adjustments (go-appimagetool don't like when this is made before and don't do for us yet) +## Sad adjustments (appimagetool don't handle this gracefully when done before deploy) +### https://github.com/probonopd/go-appimage/issues/284 sed -i "s|\"/usr/|\"|g" "$OPT_PREFIX/${LIB_DIR}/${LIB_SUBDIR}gdk-pixbuf-2.0/2.10.0/loaders.cache" +### https://github.com/probonopd/go-appimage/issues/282 cp -r "/usr/${LIB_DIR}/${LIB_SUBDIR}gtk-3.0/3.0.0/immodules.cache" "$OPT_PREFIX/${LIB_DIR}/${LIB_SUBDIR}gtk-3.0/3.0.0" sed -i "s|\"/usr/|\"|g" "$OPT_PREFIX/${LIB_DIR}/${LIB_SUBDIR}gtk-3.0/3.0.0/immodules.cache"