mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-04 09:53:25 +00:00
build/linux: Move appimage making to separate job and make it weekly
The "AppImage platform" don't have releases, every tool is blending edge. Obviously, it is too prone to broke, and for the first time it got broken. So, let's move it to a separate job and with less frequency to not broke CI.
This commit is contained in:
parent
23f9ef1d96
commit
522b9cedf2
4 changed files with 153 additions and 296 deletions
|
@ -15,15 +15,16 @@
|
||||||
#
|
#
|
||||||
# To force step-specific pipelines without waiting for commits and/or
|
# To force step-specific pipelines without waiting for commits and/or
|
||||||
# pipelines, these are the variable you should set:
|
# pipelines, these are the variable you should set:
|
||||||
# - GIMP_CI_MESON_CLANG: trigger the Debian Clang build with AppImage artifact.
|
# - GIMP_CI_MESON_CLANG: trigger the Debian Clang build.
|
||||||
# - GIMP_CI_MESON_GCC: trigger the Debian GCC build with AppImage artifact.
|
# - GIMP_CI_MESON_GCC: trigger the Debian GCC build.
|
||||||
# - GIMP_CI_RASTER_ICONS: trigger the Debian Clang build with AppImage artifact without vector icons.
|
# - GIMP_CI_RASTER_ICONS: trigger the Debian Clang build without vector icons.
|
||||||
# - GIMP_CI_CROSSROAD_WIN64: trigger the crossroad build for Win 64-bit.
|
# - GIMP_CI_CROSSROAD_WIN64: trigger the crossroad build for Win 64-bit.
|
||||||
# - GIMP_CI_MSYS2_WIN_AARCH64: trigger the native MSYS2 build for Win Aarch64.
|
# - GIMP_CI_MSYS2_WIN_AARCH64: trigger the native MSYS2 build for Win Aarch64.
|
||||||
# - GIMP_CI_MSYS2_WIN64: trigger the native MSYS2 build for Win 64-bit.
|
# - GIMP_CI_MSYS2_WIN64: trigger the native MSYS2 build for Win 64-bit.
|
||||||
# - GIMP_CI_MSYS2_WIN32: trigger the native MSYS2 build for Win 32-bit.
|
# - GIMP_CI_MSYS2_WIN32: trigger the native MSYS2 build for Win 32-bit.
|
||||||
# - GIMP_CI_CPPCHECK: trigger cppcheck static analysis.
|
# - GIMP_CI_CPPCHECK: trigger cppcheck static analysis.
|
||||||
# - GIMP_CI_SOURCES: trigger the Debian Clang build and the source tarball job.
|
# - GIMP_CI_SOURCES: trigger the Debian Clang build and the source tarball job.
|
||||||
|
# - GIMP_CI_APPIMAGE: trigger the appimage making.
|
||||||
# - GIMP_CI_FLATPAK: trigger the flatpak build and publishing.
|
# - GIMP_CI_FLATPAK: trigger the flatpak build and publishing.
|
||||||
# - GIMP_CI_WIN_INSTALLER: trigger all native MSYS2 builds then creates Inno Windows installer.
|
# - GIMP_CI_WIN_INSTALLER: trigger all native MSYS2 builds then creates Inno Windows installer.
|
||||||
# - GIMP_CI_MS_STORE: trigger arm64 and x64 native MSYS2 builds then creates a .msixbundle.
|
# - GIMP_CI_MS_STORE: trigger arm64 and x64 native MSYS2 builds then creates a .msixbundle.
|
||||||
|
@ -84,8 +85,8 @@ workflow:
|
||||||
# Universal variables (works in all POSIX OSes and archs)
|
# Universal variables (works in all POSIX OSes and archs)
|
||||||
before_script:
|
before_script:
|
||||||
- export PATH="$GIMP_PREFIX/bin:$PATH"
|
- export PATH="$GIMP_PREFIX/bin:$PATH"
|
||||||
- gcc -print-multi-os-directory 2>/dev/null | grep ./ && LIB_DIR=$(gcc -print-multi-os-directory | sed 's/\.\.\///g') || LIB_DIR="lib"
|
- gcc -print-multi-os-directory 2>/dev/null | grep ./ && export LIB_DIR=$(gcc -print-multi-os-directory | sed 's/\.\.\///g') || export LIB_DIR="lib"
|
||||||
- gcc -print-multiarch 2>/dev/null | grep . && LIB_SUBDIR=$(echo $(gcc -print-multiarch)'/')
|
- gcc -print-multiarch 2>/dev/null | grep . && export LIB_SUBDIR=$(echo $(gcc -print-multiarch)'/')
|
||||||
- export PKG_CONFIG_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
|
- export PKG_CONFIG_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
|
||||||
- export LD_LIBRARY_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
- export LD_LIBRARY_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||||
- export XDG_DATA_DIRS="${GIMP_PREFIX}/share:/usr/share${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}"
|
- export XDG_DATA_DIRS="${GIMP_PREFIX}/share:/usr/share${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}"
|
||||||
|
@ -132,6 +133,7 @@ stages:
|
||||||
MESON_OPTIONS: "-Dvector-icons=false"
|
MESON_OPTIONS: "-Dvector-icons=false"
|
||||||
VARIANT: "-raster"
|
VARIANT: "-raster"
|
||||||
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
||||||
|
- if: '$GIMP_CI_APPIMAGE != null'
|
||||||
- if: '$GIMP_CI_SOURCES != null'
|
- if: '$GIMP_CI_SOURCES != null'
|
||||||
- <<: *CI_RELEASE
|
- <<: *CI_RELEASE
|
||||||
|
|
||||||
|
@ -300,22 +302,31 @@ gimp-debian-x64:
|
||||||
fi
|
fi
|
||||||
# Check install
|
# Check install
|
||||||
- ninja install
|
- ninja install
|
||||||
- cd ..
|
artifacts:
|
||||||
# Make sure that any Debian pipeline is easily testable locally on any distro
|
paths:
|
||||||
- bash build/linux/appimage/2_bundle-gimp-appimage.sh
|
- _install/
|
||||||
|
- _build/
|
||||||
|
reports:
|
||||||
|
junit: "_build/meson-logs/testlog.junit.xml"
|
||||||
|
expire_in: 2 days
|
||||||
|
|
||||||
|
dist-appimage-weekly:
|
||||||
|
extends: .default
|
||||||
|
rules:
|
||||||
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. AppImage package.*/'
|
||||||
|
interruptible: true
|
||||||
|
- if: '$GIMP_CI_APPIMAGE != null'
|
||||||
|
needs: ["gimp-debian-x64"]
|
||||||
|
stage: distribution
|
||||||
|
image: $CI_REGISTRY_IMAGE:build-debian-latest
|
||||||
|
script:
|
||||||
|
- bash build/linux/appimage/3_dist-gimp-goappimage.sh
|
||||||
artifacts:
|
artifacts:
|
||||||
expose_as: 'Linux appimage'
|
expose_as: 'Linux appimage'
|
||||||
paths:
|
paths:
|
||||||
- build/linux/appimage/_Output/
|
- build/linux/appimage/_Output/
|
||||||
- appimagetool.log
|
- appimagetool.log
|
||||||
- _install/
|
expire_in: 8 days
|
||||||
- _build/meson-logs/meson-log.txt
|
|
||||||
- _build/meson-dist/
|
|
||||||
- _build/config.h
|
|
||||||
- _build/devel-docs/
|
|
||||||
reports:
|
|
||||||
junit: "_build/meson-logs/testlog.junit.xml"
|
|
||||||
expire_in: 2 days
|
|
||||||
|
|
||||||
.flatpak-x64:
|
.flatpak-x64:
|
||||||
extends: .default
|
extends: .default
|
||||||
|
|
|
@ -8,7 +8,7 @@ set -e
|
||||||
|
|
||||||
if [ -z "$GITLAB_CI" ]; then
|
if [ -z "$GITLAB_CI" ]; then
|
||||||
# Make the script work locally
|
# Make the script work locally
|
||||||
if [ "$0" != 'build/linux/appimage/2_bundle-gimp-appimage.sh' ] && [ ${PWD/*\//} != 'appimage' ]; then
|
if [ "$0" != 'build/linux/appimage/3_dist-gimp-goappimage.sh' ] && [ ${PWD/*\//} != 'appimage' ]; then
|
||||||
echo -e '\033[31m(ERROR)\033[0m: Script called from wrong dir. Please, call this script from the root of gimp git dir'
|
echo -e '\033[31m(ERROR)\033[0m: Script called from wrong dir. Please, call this script from the root of gimp git dir'
|
||||||
exit 1
|
exit 1
|
||||||
elif [ ${PWD/*\//} = 'appimage' ]; then
|
elif [ ${PWD/*\//} = 'appimage' ]; then
|
||||||
|
@ -17,80 +17,95 @@ if [ -z "$GITLAB_CI" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# SPECIAL BUILDING
|
# 1. INSTALL GO-APPIMAGETOOL AND COMPLEMENTARY TOOLS
|
||||||
|
|
||||||
## We apply these patches otherwise appstream-cli get confused with
|
|
||||||
## (non-reverse) DNS naming and fails. That's NOT a GIMP bug, see: #6798
|
|
||||||
echo '(INFO): temporarily patching GIMP with reverse DNS naming'
|
|
||||||
patch_app_id ()
|
|
||||||
{
|
|
||||||
git apply $1 build/linux/appimage/patches/0001-desktop-po-Use-reverse-DNS-naming.patch >/dev/null 2>&1 || true
|
|
||||||
cd gimp-data
|
|
||||||
git apply $1 ../build/linux/appimage/patches/0001-images-logo-Use-reverse-DNS-naming.patch >/dev/null 2>&1 || true
|
|
||||||
cd ..
|
|
||||||
}
|
|
||||||
patch_app_id
|
|
||||||
|
|
||||||
## Prepare env. Universal variables from .gitlab-ci.yml
|
|
||||||
IFS=$'\n' VAR_ARRAY=($(cat .gitlab-ci.yml | sed -n '/export PATH=/,/GI_TYPELIB_PATH}\"/p' | sed 's/ - //'))
|
|
||||||
IFS=$' \t\n'
|
|
||||||
for VAR in "${VAR_ARRAY[@]}"; do
|
|
||||||
eval "$VAR" || continue
|
|
||||||
done
|
|
||||||
|
|
||||||
## Ensure that GIMP is relocatable
|
|
||||||
grep -q 'relocatable-bundle=yes' _build/meson-logs/meson-log.txt && export RELOCATABLE_BUNDLE_ON=1
|
|
||||||
if [ -z "$RELOCATABLE_BUNDLE_ON" ]; then
|
|
||||||
echo '(INFO): rebuilding GIMP as relocatable'
|
|
||||||
### FIXME: GIMP tests fails with raster icons in relocatable mode
|
|
||||||
meson configure _build -Drelocatable-bundle=yes -Dvector-icons=true >/dev/null 2>&1
|
|
||||||
cd _build
|
|
||||||
ninja &> ninja.log | rm ninja.log || cat ninja.log
|
|
||||||
ninja install >/dev/null 2>&1
|
|
||||||
ccache --show-stats
|
|
||||||
cd ..
|
|
||||||
fi
|
|
||||||
|
|
||||||
## Revert previously applied patches
|
|
||||||
patch_app_id '-R'
|
|
||||||
|
|
||||||
|
|
||||||
# INSTALL GO-APPIMAGETOOL AND COMPLEMENTARY TOOLS
|
|
||||||
echo '(INFO): downloading go-appimagetool'
|
|
||||||
if [ -f "*appimagetool*.AppImage" ]; then
|
if [ -f "*appimagetool*.AppImage" ]; then
|
||||||
rm *appimagetool*.AppImage
|
rm *appimagetool*.AppImage
|
||||||
fi
|
fi
|
||||||
if [ "$GITLAB_CI" ]; then
|
if [ "$GITLAB_CI" ]; then
|
||||||
apt-get install -y --no-install-recommends wget >/dev/null 2>&1
|
apt-get install -y --no-install-recommends wget >/dev/null 2>&1
|
||||||
apt-get install -y --no-install-recommends patchelf >/dev/null 2>&1
|
|
||||||
fi
|
fi
|
||||||
export ARCH=$(uname -m)
|
export ARCH=$(uname -m)
|
||||||
export APPIMAGE_EXTRACT_AND_RUN=1
|
export APPIMAGE_EXTRACT_AND_RUN=1
|
||||||
|
|
||||||
## For now, we always use the latest version of go-appimagetool
|
## For now, we always use the latest go-appimagetool for bundling. See: https://github.com/probonopd/go-appimage/issues/275
|
||||||
|
echo '(INFO): downloading go-appimagetool'
|
||||||
wget -c https://github.com/$(wget -q https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous -O - | grep "appimagetool-.*-${ARCH}.AppImage" | head -n 1 | cut -d '"' -f 2) >/dev/null 2>&1
|
wget -c https://github.com/$(wget -q https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous -O - | grep "appimagetool-.*-${ARCH}.AppImage" | head -n 1 | cut -d '"' -f 2) >/dev/null 2>&1
|
||||||
echo "(INFO): Downloaded go-appimagetool: $(echo appimagetool-*.AppImage | sed -e 's/appimagetool-//' -e "s/-${ARCH}.AppImage//")"
|
echo "(INFO): Downloaded go-appimagetool: $(echo appimagetool-*.AppImage | sed -e 's/appimagetool-//' -e "s/-${ARCH}.AppImage//")"
|
||||||
go_appimagetool='go-appimagetool.AppImage'
|
go_appimagetool='go-appimagetool.AppImage'
|
||||||
mv appimagetool-*.AppImage $go_appimagetool
|
mv appimagetool-*.AppImage $go_appimagetool
|
||||||
chmod +x "$go_appimagetool"
|
chmod +x "$go_appimagetool"
|
||||||
|
|
||||||
## go-appimagetool have buggy appstreamcli so we need to use the legacy one
|
## go-appimagetool does not patch LD interpreter so we use patchelf. See: https://github.com/probonopd/go-appimage/issues/49
|
||||||
|
if [ "$GITLAB_CI" ]; then
|
||||||
|
apt-get install -y --no-install-recommends patchelf >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
## standard appimagetool is needed for squashing the .appimage file. See: https://github.com/probonopd/go-appimage/issues/86
|
||||||
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-${ARCH}.AppImage" >/dev/null 2>&1
|
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-${ARCH}.AppImage" >/dev/null 2>&1
|
||||||
legacy_appimagetool='legacy-appimagetool.AppImage'
|
standard_appimagetool='legacy-appimagetool.AppImage'
|
||||||
mv appimagetool-*.AppImage $legacy_appimagetool
|
mv appimagetool-*.AppImage $standard_appimagetool
|
||||||
chmod +x "$legacy_appimagetool"
|
chmod +x "$standard_appimagetool"
|
||||||
|
|
||||||
|
|
||||||
# BUNDLE FILES
|
# 2. GET GLOBAL VARIABLES
|
||||||
grep -q '#define GIMP_UNSTABLE' _build/config.h && export GIMP_UNSTABLE=1
|
if [ "$1" ]; then
|
||||||
|
export BUILD_DIR="$1"
|
||||||
|
else
|
||||||
|
export BUILD_DIR="$PWD/_build"
|
||||||
|
fi
|
||||||
|
|
||||||
|
## Get info about GIMP version
|
||||||
|
GIMP_VERSION=$(grep GIMP_VERSION $BUILD_DIR/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/')
|
||||||
|
grep -q '#define GIMP_UNSTABLE' $BUILD_DIR/config.h && export GIMP_UNSTABLE=1
|
||||||
|
if [ "$GIMP_UNSTABLE" ] || [[ "$GIMP_VERSION" =~ 'git' ]]; then
|
||||||
|
export CHANNEL='continuous'
|
||||||
|
else
|
||||||
|
export CHANNEL='latest'
|
||||||
|
fi
|
||||||
|
export APP_ID="org.gimp.GIMP.$CHANNEL"
|
||||||
|
|
||||||
|
## Prefixes to get files to copy
|
||||||
UNIX_PREFIX='/usr'
|
UNIX_PREFIX='/usr'
|
||||||
if [ -z "$GITLAB_CI" ] && [ -z "$GIMP_PREFIX" ]; then
|
if [ -z "$GITLAB_CI" ] && [ -z "$GIMP_PREFIX" ]; then
|
||||||
export GIMP_PREFIX="$PWD/../_install"
|
export GIMP_PREFIX="$PWD/../_install"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
## Paths to receive copied files
|
||||||
APP_DIR="$PWD/AppDir"
|
APP_DIR="$PWD/AppDir"
|
||||||
USR_DIR="$APP_DIR/usr"
|
USR_DIR="$APP_DIR/usr"
|
||||||
|
|
||||||
|
|
||||||
|
# 3. GIMP FILES
|
||||||
|
|
||||||
|
## 3.1. Special re-building (only if needed)
|
||||||
|
|
||||||
|
### Prepare env. Universal variables from .gitlab-ci.yml
|
||||||
|
if [ -z "$GITLAB_CI" ]; then
|
||||||
|
IFS=$'\n' VAR_ARRAY=($(cat .gitlab-ci.yml | sed -n '/export PATH=/,/GI_TYPELIB_PATH}\"/p' | sed 's/ - //'))
|
||||||
|
IFS=$' \t\n'
|
||||||
|
for VAR in "${VAR_ARRAY[@]}"; do
|
||||||
|
eval "$VAR" || continue
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
### Ensure that GIMP is relocatable
|
||||||
|
grep -q 'relocatable-bundle=yes' $BUILD_DIR/meson-logs/meson-log.txt && export RELOCATABLE_BUNDLE_ON=1
|
||||||
|
if [ -z "$RELOCATABLE_BUNDLE_ON" ]; then
|
||||||
|
if [ ! -f "$BUILD_DIR/build.ninja" ]; then
|
||||||
|
echo -e "\033[31m(ERROR)\033[0m: No GIMP build found. You can configure GIMP with '-Drelocatable-bundle=yes' to make a build suitable for AppImage."
|
||||||
|
else
|
||||||
|
echo "(INFO): rebuilding GIMP as relocatable"
|
||||||
|
meson configure $BUILD_DIR -Drelocatable-bundle=yes >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
cd $BUILD_DIR
|
||||||
|
ninja &> ninja.log | rm ninja.log || cat ninja.log
|
||||||
|
ninja install >/dev/null 2>&1
|
||||||
|
ccache --show-stats
|
||||||
|
cd ..
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
## 3.2. Bundle files
|
||||||
prep_pkg ()
|
prep_pkg ()
|
||||||
{
|
{
|
||||||
if [ "$GITLAB_CI" ]; then
|
if [ "$GITLAB_CI" ]; then
|
||||||
|
@ -128,22 +143,18 @@ bund_usr ()
|
||||||
target_array=($(find $expanded_path -maxdepth 1 -name ${2##*/}))
|
target_array=($(find $expanded_path -maxdepth 1 -name ${2##*/}))
|
||||||
for target_path in "${target_array[@]}"; do
|
for target_path in "${target_array[@]}"; do
|
||||||
dest_path="$(dirname $(echo $target_path | sed "s|$1/|${USR_DIR}/|g"))"
|
dest_path="$(dirname $(echo $target_path | sed "s|$1/|${USR_DIR}/|g"))"
|
||||||
mkdir -p $dest_path
|
if [ "$3" = '--dest' ]; then
|
||||||
if [ -d "$target_path" ] || [ -f "$target_path" ]; then
|
dest_path="${USR_DIR}/$4/tmp"
|
||||||
cp -ru $target_path $dest_path >/dev/null 2>&1 || continue
|
|
||||||
fi
|
fi
|
||||||
|
mkdir -p $dest_path
|
||||||
|
cp -ru $target_path $dest_path >/dev/null 2>&1 || continue
|
||||||
|
|
||||||
#Additional parameters for special situations
|
#Additional parameters for special situations
|
||||||
if [ "$3" = '--dest' ] || [ "$3" = '--rename' ]; then
|
if [ "$3" = '--dest' ]; then
|
||||||
if [ "$3" = '--dest' ]; then
|
mv $dest_path/${2##*/} $(dirname $dest_path)
|
||||||
mkdir -p ${USR_DIR}/$4
|
rm -r "$dest_path"
|
||||||
elif [ "$3" = '--rename' ]; then
|
elif [ "$3" = '--rename' ]; then
|
||||||
mkdir -p $(dirname ${USR_DIR}/$4)
|
mv $dest_path/${2##*/} $dest_path/$4
|
||||||
fi
|
|
||||||
mv $dest_path/${2##*/} ${USR_DIR}/$4
|
|
||||||
if [ -z "$(ls -A "$dest_path")" ]; then
|
|
||||||
rm -r "$dest_path"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
@ -156,11 +167,19 @@ bund_usr ()
|
||||||
|
|
||||||
conf_app ()
|
conf_app ()
|
||||||
{
|
{
|
||||||
|
#Make backup of AppRun before changing it
|
||||||
|
if [ ! -f 'build/linux/appimage/AppRun.bak' ]; then
|
||||||
|
cp build/linux/appimage/AppRun build/linux/appimage/AppRun.bak
|
||||||
|
fi
|
||||||
|
|
||||||
|
#Prefix from which to expand the var
|
||||||
prefix=$UNIX_PREFIX
|
prefix=$UNIX_PREFIX
|
||||||
case $1 in
|
case $1 in
|
||||||
*BABL*|*GEGL*|*GIMP*)
|
*BABL*|*GEGL*|*GIMP*)
|
||||||
prefix=$GIMP_PREFIX
|
prefix=$GIMP_PREFIX
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
#Set expanded var in AppRun (and temporarely in environ if needed by this script)
|
||||||
var_path=$(echo $prefix/$2 | sed "s|${prefix}/||g")
|
var_path=$(echo $prefix/$2 | sed "s|${prefix}/||g")
|
||||||
sed -i "s|${1}_WILD|usr/${var_path}|" build/linux/appimage/AppRun
|
sed -i "s|${1}_WILD|usr/${var_path}|" build/linux/appimage/AppRun
|
||||||
eval $1="usr/$var_path"
|
eval $1="usr/$var_path"
|
||||||
|
@ -168,21 +187,11 @@ conf_app ()
|
||||||
|
|
||||||
wipe_usr ()
|
wipe_usr ()
|
||||||
{
|
{
|
||||||
if [[ ! "$1" =~ '*' ]]; then
|
find $USR_DIR -iname ${1##*/} -execdir rm -r -f "{}" \;
|
||||||
rm -r $USR_DIR/$1
|
|
||||||
else
|
|
||||||
cleanedArray=($(find $USR_DIR -iname ${1##*/}))
|
|
||||||
for path_dest_full in "${cleanedArray[@]}"; do
|
|
||||||
rm -r -f $path_dest_full
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
## Prepare AppDir
|
## Prepare AppDir
|
||||||
echo '(INFO): copying files to AppDir'
|
echo '(INFO): copying files to AppDir/usr'
|
||||||
if [ ! -f 'build/linux/appimage/AppRun.bak' ]; then
|
|
||||||
cp build/linux/appimage/AppRun build/linux/appimage/AppRun.bak
|
|
||||||
fi
|
|
||||||
mkdir -p $APP_DIR
|
mkdir -p $APP_DIR
|
||||||
bund_usr "$UNIX_PREFIX" "lib64/ld-*.so.*" --go
|
bund_usr "$UNIX_PREFIX" "lib64/ld-*.so.*" --go
|
||||||
conf_app LD_LINUX "lib64/ld-*.so.*"
|
conf_app LD_LINUX "lib64/ld-*.so.*"
|
||||||
|
@ -193,7 +202,7 @@ bund_usr "$UNIX_PREFIX" "share/glib-*/schemas"
|
||||||
### Glib commonly required modules
|
### Glib commonly required modules
|
||||||
prep_pkg "gvfs"
|
prep_pkg "gvfs"
|
||||||
bund_usr "$UNIX_PREFIX" "lib/gvfs*"
|
bund_usr "$UNIX_PREFIX" "lib/gvfs*"
|
||||||
bund_usr "$UNIX_PREFIX" "bin/gvfs*" --dest "lib/gvfs"
|
bund_usr "$UNIX_PREFIX" "bin/gvfs*" --dest "${LIB_DIR}/gvfs"
|
||||||
bund_usr "$UNIX_PREFIX" "lib/gio*"
|
bund_usr "$UNIX_PREFIX" "lib/gio*"
|
||||||
conf_app GIO_MODULE_DIR "${LIB_DIR}/${LIB_SUBDIR}gio"
|
conf_app GIO_MODULE_DIR "${LIB_DIR}/${LIB_SUBDIR}gio"
|
||||||
### GTK needed files (to be able to load icons)
|
### GTK needed files (to be able to load icons)
|
||||||
|
@ -240,9 +249,9 @@ conf_app GIMP3_SYSCONFDIR "etc/gimp/*"
|
||||||
|
|
||||||
## Other features and plug-ins
|
## Other features and plug-ins
|
||||||
### Needed for welcome page
|
### Needed for welcome page
|
||||||
bund_usr "$GIMP_PREFIX" "share/metainfo/org.gimp*.xml"
|
bund_usr "$GIMP_PREFIX" "share/metainfo/*.xml" --rename $APP_ID.appdata.xml
|
||||||
sed -i '/kudo/d' $USR_DIR/share/metainfo/org.gimp.GIMP.appdata.xml
|
sed -i '/kudo/d' $USR_DIR/share/metainfo/$APP_ID.appdata.xml
|
||||||
sed -i "s/date=\"TODO\"/date=\"`date --iso-8601`\"/" $USR_DIR/share/metainfo/org.gimp.GIMP.appdata.xml
|
sed -i "s/date=\"TODO\"/date=\"`date --iso-8601`\"/" $USR_DIR/share/metainfo/$APP_ID.appdata.xml
|
||||||
### mypaint brushes
|
### mypaint brushes
|
||||||
bund_usr "$UNIX_PREFIX" "share/mypaint-data/1.0"
|
bund_usr "$UNIX_PREFIX" "share/mypaint-data/1.0"
|
||||||
### Needed for full CJK and Cyrillic support in file-pdf
|
### Needed for full CJK and Cyrillic support in file-pdf
|
||||||
|
@ -282,11 +291,11 @@ wipe_usr ${LIB_DIR}/*.pyc
|
||||||
## Other binaries and deps
|
## Other binaries and deps
|
||||||
bund_usr "$GIMP_PREFIX" 'bin/gimp*'
|
bund_usr "$GIMP_PREFIX" 'bin/gimp*'
|
||||||
bund_usr "$GIMP_PREFIX" "bin/gegl"
|
bund_usr "$GIMP_PREFIX" "bin/gegl"
|
||||||
bund_usr "$GIMP_PREFIX" "share/applications/org.gimp.GIMP.desktop"
|
bund_usr "$GIMP_PREFIX" "share/applications/*.desktop" --rename $APP_ID.desktop
|
||||||
"./$go_appimagetool" -s deploy $USR_DIR/share/applications/org.gimp.GIMP.desktop &> appimagetool.log
|
"./$go_appimagetool" -s deploy $USR_DIR/share/applications/$APP_ID.desktop &> appimagetool.log
|
||||||
|
|
||||||
## Manual adjustments (go-appimagetool don't handle Linux FHS gracefully)
|
## Manual adjustments (go-appimagetool don't handle Linux FHS gracefully yet)
|
||||||
### Ensure that LD is in right dir
|
### Ensure that LD is in right dir. See: https://github.com/probonopd/go-appimage/issues/49
|
||||||
cp -r $APP_DIR/lib64 $USR_DIR
|
cp -r $APP_DIR/lib64 $USR_DIR
|
||||||
rm -r $APP_DIR/lib64
|
rm -r $APP_DIR/lib64
|
||||||
chmod +x "$APP_DIR/$LD_LINUX"
|
chmod +x "$APP_DIR/$LD_LINUX"
|
||||||
|
@ -296,39 +305,54 @@ for exec in "${exec_array[@]}"; do
|
||||||
patchelf --set-interpreter "./$LD_LINUX" "$exec" >/dev/null 2>&1 || continue
|
patchelf --set-interpreter "./$LD_LINUX" "$exec" >/dev/null 2>&1 || continue
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
### Undo the mess that go-appimagetool makes on the prefix which breaks babl and GEGL
|
### Undo the mess which breaks babl and GEGL. See: https://github.com/probonopd/go-appimage/issues/315
|
||||||
cp -r $APP_DIR/lib/* $USR_DIR/${LIB_DIR}
|
cp -r $APP_DIR/lib/* $USR_DIR/${LIB_DIR}
|
||||||
rm -r $APP_DIR/lib
|
rm -r $APP_DIR/lib
|
||||||
### Remove unnecessary files bunbled by go-appimagetool
|
|
||||||
wipe_usr ${LIB_DIR}/${LIB_SUBDIR}gconv
|
## Unnecessary files bundled by go-appimagetool
|
||||||
wipe_usr ${LIB_DIR}/${LIB_SUBDIR}gdk-pixbuf-*/gdk-pixbuf-query-loaders
|
echo "usr/${LIB_DIR}/${LIB_SUBDIR}gconv
|
||||||
wipe_usr share/doc
|
usr/${LIB_DIR}/${LIB_SUBDIR}gdk-pixbuf-*/gdk-pixbuf-query-loaders
|
||||||
wipe_usr share/themes
|
usr/share/doc
|
||||||
rm -r $APP_DIR/etc
|
usr/share/themes
|
||||||
|
etc" > .appimageignore
|
||||||
|
|
||||||
|
|
||||||
# FINISH APPIMAGE
|
# 4. PREPARE .APPIMAGE-SPECIFIC "SOURCE"
|
||||||
|
|
||||||
## Configure AppRun
|
## 4.1. Finish AppRun configuration
|
||||||
echo '(INFO): configuring AppRun'
|
echo '(INFO): copying configured AppRun'
|
||||||
sed -i '/_WILD/d' build/linux/appimage/AppRun
|
sed -i '/_WILD/d' build/linux/appimage/AppRun
|
||||||
mv build/linux/appimage/AppRun $APP_DIR
|
mv build/linux/appimage/AppRun $APP_DIR
|
||||||
chmod +x $APP_DIR/AppRun
|
chmod +x $APP_DIR/AppRun
|
||||||
mv build/linux/appimage/AppRun.bak build/linux/appimage/AppRun
|
mv build/linux/appimage/AppRun.bak build/linux/appimage/AppRun
|
||||||
|
|
||||||
## Copy icon to proper place
|
## 4.2. Copy icon assets (similarly to flatpaks's 'rename-icon')
|
||||||
echo "(INFO): copying org.gimp.GIMP.svg asset to AppDir"
|
echo "(INFO): copying $APP_ID.svg asset to AppDir"
|
||||||
cp $GIMP_PREFIX/share/icons/hicolor/scalable/apps/org.gimp.GIMP.svg $APP_DIR/org.gimp.GIMP.svg
|
find "$USR_DIR/share/icons/hicolor" -iname *.svg -execdir ln -s "{}" $APP_ID.svg \;
|
||||||
|
find "$USR_DIR/share/icons/hicolor" -iname *.png -execdir ln -s "{}" $APP_ID.png \;
|
||||||
|
cp -L "$USR_DIR/share/icons/hicolor/scalable/apps/$APP_ID.svg" $APP_DIR
|
||||||
|
|
||||||
## Construct .appimage
|
## 4.3. Configure .desktop asset (similarly to flatpaks's 'rename-desktop-file')
|
||||||
gimp_app_version=$(grep GIMP_APP_VERSION _build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/')
|
echo "(INFO): configuring $APP_ID.desktop"
|
||||||
gimp_version=$(grep GIMP_VERSION _build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/')
|
sed -i "s/Icon=gimp/Icon=$APP_ID/g" "$USR_DIR/share/applications/${APP_ID}.desktop"
|
||||||
appimage="GIMP-${gimp_version}-${ARCH}.AppImage"
|
cp "$USR_DIR/share/applications/${APP_ID}.desktop" $APP_DIR
|
||||||
echo "(INFO): making $appimage"
|
|
||||||
"./$legacy_appimagetool" -n $APP_DIR $appimage &>> appimagetool.log # -u "zsync|https://download.gimp.org/gimp/v${gimp_app_version}/GIMP-latest-${ARCH}.AppImage.zsync"
|
## 4.4. Configure appdata asset (similarly to flatpaks's 'rename-appdata-file')
|
||||||
|
echo "(INFO): configuring $APP_ID.appdata.xml"
|
||||||
|
sed -i "s/org.gimp.GIMP/${APP_ID}/g" "$USR_DIR/share/metainfo/${APP_ID}.appdata.xml"
|
||||||
|
sed -i "s/gimp.desktop/${APP_ID}.desktop/g" "$USR_DIR/share/metainfo/${APP_ID}.appdata.xml"
|
||||||
|
|
||||||
|
|
||||||
|
# 5. CONSTRUCT .APPIMAGE
|
||||||
|
APPIMAGETOOL_APP_NAME="GIMP-${CHANNEL}-${ARCH}.AppImage"
|
||||||
|
echo "(INFO): making $APPIMAGETOOL_APP_NAME"
|
||||||
|
"./$standard_appimagetool" -n $APP_DIR $APPIMAGETOOL_APP_NAME &>> appimagetool.log -u "zsync|https://gitlab.gnome.org/GNOME/gimp/-/jobs/artifacts/master/raw/build/linux/appimage/_Output/${APPIMAGETOOL_APP_NAME}.zsync?job=dist-appimage-weekly"
|
||||||
rm -r $APP_DIR
|
rm -r $APP_DIR
|
||||||
|
#standard appimagetool does not output runtime version at squashing. See: https://github.com/AppImage/appimagetool/issues/80
|
||||||
|
chmod +x "./$APPIMAGETOOL_APP_NAME"
|
||||||
|
"./$APPIMAGETOOL_APP_NAME" --appimage-version &>> appimagetool.log
|
||||||
|
|
||||||
if [ "$GITLAB_CI" ]; then
|
if [ "$GITLAB_CI" ]; then
|
||||||
mkdir -p build/linux/appimage/_Output/
|
mkdir -p build/linux/appimage/_Output/
|
||||||
mv GIMP*.AppImage build/linux/appimage/_Output/
|
mv GIMP*.AppImage* build/linux/appimage/_Output/
|
||||||
fi
|
fi
|
|
@ -1,147 +0,0 @@
|
||||||
From e3c70a67c9f03a3a5af44b1dcf87a3cda4f4443b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Bruno Lopes <brunolopesdsilv@outlook.com>
|
|
||||||
Date: Thu, 29 Aug 2024 00:34:06 +0200
|
|
||||||
Subject: [PATCH] desktop, po: Use reverse DNS naming
|
|
||||||
|
|
||||||
---
|
|
||||||
desktop/meson.build | 2 +-
|
|
||||||
desktop/org.gimp.GIMP.appdata.xml.in.in | 4 ++--
|
|
||||||
...imp.desktop.in.in => org.gimp.GIMP.desktop.in.in} | 2 +-
|
|
||||||
libgimpwidgets/gimpwidgets-private.c | 12 ++++++------
|
|
||||||
po/POTFILES.in | 2 +-
|
|
||||||
po/POTFILES.skip | 2 +-
|
|
||||||
6 files changed, 12 insertions(+), 12 deletions(-)
|
|
||||||
rename desktop/{gimp.desktop.in.in => org.gimp.GIMP.desktop.in.in} (96%)
|
|
||||||
|
|
||||||
diff --git a/desktop/meson.build b/desktop/meson.build
|
|
||||||
index bee2e93c48..a517e351ab 100644
|
|
||||||
--- a/desktop/meson.build
|
|
||||||
+++ b/desktop/meson.build
|
|
||||||
@@ -1,4 +1,4 @@
|
|
||||||
-desktopfilename = 'gimp.desktop'
|
|
||||||
+desktopfilename = 'org.gimp.GIMP.desktop'
|
|
||||||
|
|
||||||
desktop_conf = configuration_data()
|
|
||||||
desktop_conf.set('GIMP_COMMAND', gimp_command)
|
|
||||||
diff --git a/desktop/org.gimp.GIMP.appdata.xml.in.in b/desktop/org.gimp.GIMP.appdata.xml.in.in
|
|
||||||
index e1dcfa7fdc..41a51e1b68 100644
|
|
||||||
--- a/desktop/org.gimp.GIMP.appdata.xml.in.in
|
|
||||||
+++ b/desktop/org.gimp.GIMP.appdata.xml.in.in
|
|
||||||
@@ -65,12 +65,12 @@
|
|
||||||
</kudos>
|
|
||||||
<translation type="gettext">gimp30</translation>
|
|
||||||
|
|
||||||
- <launchable type="desktop-id">gimp.desktop</launchable>
|
|
||||||
+ <launchable type="desktop-id">org.gimp.GIMP.desktop</launchable>
|
|
||||||
<provides>
|
|
||||||
<binary>@GIMP_COMMAND@</binary>
|
|
||||||
<!-- Fix the ID renaming, and things like past reviews made on the
|
|
||||||
older ID in software installers. -->
|
|
||||||
- <id>gimp.desktop</id>
|
|
||||||
+ <id>org.gimp.GIMP.desktop</id>
|
|
||||||
</provides>
|
|
||||||
|
|
||||||
<releases>
|
|
||||||
diff --git a/desktop/gimp.desktop.in.in b/desktop/org.gimp.GIMP.desktop.in.in
|
|
||||||
similarity index 96%
|
|
||||||
rename from desktop/gimp.desktop.in.in
|
|
||||||
rename to desktop/org.gimp.GIMP.desktop.in.in
|
|
||||||
index 0ef73561b0..6f460d6db1 100644
|
|
||||||
--- a/desktop/gimp.desktop.in.in
|
|
||||||
+++ b/desktop/org.gimp.GIMP.desktop.in.in
|
|
||||||
@@ -8,7 +8,7 @@ Comment=Create images and edit photographs
|
|
||||||
Keywords=GIMP;graphic;design;illustration;painting;
|
|
||||||
Exec=@GIMP_COMMAND@ %U
|
|
||||||
TryExec=gimp-@GIMP_APP_VERSION@
|
|
||||||
-Icon=gimp
|
|
||||||
+Icon=org.gimp.GIMP
|
|
||||||
Terminal=false
|
|
||||||
Categories=Graphics;2DGraphics;RasterGraphics;GTK;
|
|
||||||
StartupNotify=true
|
|
||||||
diff --git a/libgimpwidgets/gimpwidgets-private.c b/libgimpwidgets/gimpwidgets-private.c
|
|
||||||
index 0ebe7fa7e0..046e737fca 100644
|
|
||||||
--- a/libgimpwidgets/gimpwidgets-private.c
|
|
||||||
+++ b/libgimpwidgets/gimpwidgets-private.c
|
|
||||||
@@ -110,7 +110,7 @@ gimp_widgets_init (GimpHelpFunc standard_help_func,
|
|
||||||
* then the application icon is dependant to the theme and for now at
|
|
||||||
* least, we want the installed icon.
|
|
||||||
*/
|
|
||||||
- path = g_build_filename (base_dir, "16x16", cat_dir, "gimp.png", NULL);
|
|
||||||
+ path = g_build_filename (base_dir, "16x16", cat_dir, "org.gimp.GIMP.png", NULL);
|
|
||||||
pixbuf = gdk_pixbuf_new_from_file (path, &error);
|
|
||||||
if (pixbuf)
|
|
||||||
icons = g_list_prepend (icons, pixbuf);
|
|
||||||
@@ -119,7 +119,7 @@ gimp_widgets_init (GimpHelpFunc standard_help_func,
|
|
||||||
g_clear_error (&error);
|
|
||||||
g_free (path);
|
|
||||||
|
|
||||||
- path = g_build_filename (base_dir, "32x32", cat_dir, "gimp.png", NULL);
|
|
||||||
+ path = g_build_filename (base_dir, "32x32", cat_dir, "org.gimp.GIMP.png", NULL);
|
|
||||||
pixbuf = gdk_pixbuf_new_from_file (path, &error);
|
|
||||||
if (pixbuf)
|
|
||||||
icons = g_list_prepend (icons, pixbuf);
|
|
||||||
@@ -128,7 +128,7 @@ gimp_widgets_init (GimpHelpFunc standard_help_func,
|
|
||||||
g_clear_error (&error);
|
|
||||||
g_free (path);
|
|
||||||
|
|
||||||
- path = g_build_filename (base_dir, "48x48", cat_dir, "gimp.png", NULL);
|
|
||||||
+ path = g_build_filename (base_dir, "48x48", cat_dir, "org.gimp.GIMP.png", NULL);
|
|
||||||
pixbuf = gdk_pixbuf_new_from_file (path, &error);
|
|
||||||
if (pixbuf)
|
|
||||||
icons = g_list_prepend (icons, pixbuf);
|
|
||||||
@@ -137,7 +137,7 @@ gimp_widgets_init (GimpHelpFunc standard_help_func,
|
|
||||||
g_clear_error (&error);
|
|
||||||
g_free (path);
|
|
||||||
|
|
||||||
- path = g_build_filename (base_dir, "64x64", cat_dir, "gimp.png", NULL);
|
|
||||||
+ path = g_build_filename (base_dir, "64x64", cat_dir, "org.gimp.GIMP.png", NULL);
|
|
||||||
pixbuf = gdk_pixbuf_new_from_file (path, &error);
|
|
||||||
if (pixbuf)
|
|
||||||
icons = g_list_prepend (icons, pixbuf);
|
|
||||||
@@ -146,7 +146,7 @@ gimp_widgets_init (GimpHelpFunc standard_help_func,
|
|
||||||
g_clear_error (&error);
|
|
||||||
g_free (path);
|
|
||||||
|
|
||||||
- path = g_build_filename (base_dir, "scalable", cat_dir, "gimp.svg", NULL);
|
|
||||||
+ path = g_build_filename (base_dir, "scalable", cat_dir, "org.gimp.GIMP.svg", NULL);
|
|
||||||
pixbuf = gdk_pixbuf_new_from_file_at_size (path, 128, 128, &error);
|
|
||||||
if (pixbuf)
|
|
||||||
{
|
|
||||||
@@ -179,7 +179,7 @@ gimp_widgets_init (GimpHelpFunc standard_help_func,
|
|
||||||
}
|
|
||||||
g_free (path);
|
|
||||||
|
|
||||||
- path = g_build_filename (base_dir, "256x256", cat_dir, "gimp.png", NULL);
|
|
||||||
+ path = g_build_filename (base_dir, "256x256", cat_dir, "org.gimp.GIMP.png", NULL);
|
|
||||||
pixbuf = gdk_pixbuf_new_from_file (path, &error);
|
|
||||||
if (pixbuf)
|
|
||||||
icons = g_list_prepend (icons, pixbuf);
|
|
||||||
diff --git a/po/POTFILES.in b/po/POTFILES.in
|
|
||||||
index bc577b54a4..11bb18e8c1 100644
|
|
||||||
--- a/po/POTFILES.in
|
|
||||||
+++ b/po/POTFILES.in
|
|
||||||
@@ -2,7 +2,7 @@
|
|
||||||
# marked to allow runtime translation of messages
|
|
||||||
|
|
||||||
desktop/org.gimp.GIMP.appdata.xml.in.in
|
|
||||||
-desktop/gimp.desktop.in.in
|
|
||||||
+desktop/org.gimp.GIMP.desktop.in.in
|
|
||||||
|
|
||||||
app/about.h
|
|
||||||
app/app.c
|
|
||||||
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
|
|
||||||
index 7e957d8dd4..00ec4d8961 100644
|
|
||||||
--- a/po/POTFILES.skip
|
|
||||||
+++ b/po/POTFILES.skip
|
|
||||||
@@ -3,7 +3,7 @@ build/windows/installer/lang/setup.isl.in
|
|
||||||
data/tags/gimp-tags-default.xml.in
|
|
||||||
data/tips/gimp-tips.xml.in
|
|
||||||
desktop/org.gimp.GIMP.appdata.xml.in
|
|
||||||
-desktop/gimp.desktop.in
|
|
||||||
+desktop/org.gimp.GIMP.desktop.in
|
|
||||||
extensions
|
|
||||||
libgimp
|
|
||||||
libgimpbase
|
|
||||||
--
|
|
||||||
2.43.0
|
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
From 2132a18096b6a85d79cf3fdf778882fd3b81816b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Bruno <brunvonlope@outlook.com>
|
|
||||||
Date: Tue, 4 Jun 2024 10:14:06 -0300
|
|
||||||
Subject: [PATCH] images/logo: Use reverse DNS naming
|
|
||||||
|
|
||||||
---
|
|
||||||
images/logo/meson.build | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/images/logo/meson.build b/images/logo/meson.build
|
|
||||||
index 692bbe4..413d46f 100644
|
|
||||||
--- a/images/logo/meson.build
|
|
||||||
+++ b/images/logo/meson.build
|
|
||||||
@@ -73,12 +73,12 @@ foreach size : desktop_sizes
|
|
||||||
build_by_default: true,
|
|
||||||
install: false)
|
|
||||||
meson.add_install_script('sh', '-c',
|
|
||||||
- 'mkdir -p "$MESON_INSTALL_DESTDIR_PREFIX/@1@/" && cp -f "@0@" "$MESON_INSTALL_DESTDIR_PREFIX/@1@/gimp.png"'.format(app_icon.full_path(), installdir))
|
|
||||||
+ 'mkdir -p "$MESON_INSTALL_DESTDIR_PREFIX/@1@/" && cp -f "@0@" "$MESON_INSTALL_DESTDIR_PREFIX/@1@/org.gimp.GIMP.png"'.format(app_icon.full_path(), installdir))
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
install_data('gimp-logo.svg',
|
|
||||||
install_dir: get_option('datadir') / 'icons' / 'hicolor' / 'scalable' / 'apps',
|
|
||||||
- rename: 'gimp.svg')
|
|
||||||
+ rename: 'org.gimp.GIMP.svg')
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
--
|
|
||||||
2.45.0.windows.1
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue