build/linux: Fix stuck AppImage

* Since the appimage is for testing purposes, let's use system 'libc'
* Hardcode python path since the wildcard wasn't expanding misteriously
* Improve system theme recognition making way simpler
This commit is contained in:
Bruno Lopes 2024-05-06 22:32:32 -03:00 committed by Bruno
parent 5556735d22
commit bad250429c
2 changed files with 41 additions and 49 deletions

View File

@ -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 "$@"

View File

@ -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"