Gimp/build/linux/appimage/AppRun
Bruno Lopes 9653e50e5f gitlab-ci, build: Unify Debian jobs and add AppImage artifact
AppImage is pretty fast to make, like the win crossbuild; and portable,
being very appropriate to do quick tests on Linux when pushing to git.

The overall organization of Debian jobs was changed to take advantage
of this and make things less complicated (but less clear at first sight).
I reinforce that this was the most efficent way to make the AppImage.
2024-04-18 20:54:49 -03:00

72 lines
3 KiB
Bash

#!/bin/sh
# Loosely based on:
# https://appimage-builder.readthedocs.io/en/latest/examples/gimp_path_mapping.html
# https://github.com/aferrero2707/gimp-appimage
# https://github.com/ivan-hc/GIMP-appimage
# https://github.com/sudo-give-me-coffee/PhotoMP/
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
## 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}"
## 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
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
# 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" "$@"