build: Simplify all the arch stuff

The ARTIFACTS_SUFFIX is being dropped on building scripts because:

1) This will make possible to further simplify Installer scripts in other commit

2) There is no script that uses multi-arch _build/_install at same time on CI
   However, there are two use cases: to build Debian and flatpak; and, on Win,
   to build on CLANGARM64 and CLANG64 (?). But probably they are pretty niche.
   I suppose that people who build on Debian (or other dev-oriented distro)
   willn't want to mantain deps in two sys prefixes (pkg and GNOME runtime)
   + two gimp prefixes (out of sandbox and sandbox) due to huge storage use.
   Why someone would want to build with emulation on Win ARM64 I don't know.
   Anyway, people that know how to do this stuff probably can change the .sh.

3) When building locally, the contributor doesn't need to know the arch at all.
   Indeed, without this suffix, the scripts are inline with gimp-web-devel and
   prevent some first-sight confusion when reading them that I've seen on IRC.

4) These arch suffixes can be understood as '_install-*' being distributable
   which is not true. So, without this suffix we could make more clear
   what is a package (when GitLab fix the glob bug in 'expose_as' someday).

---

Despite .gitlab-ci.yml not being a script, it needed to be touched too
because cross scripts depends on Debian jobs due to gimp-data MR.
This commit is contained in:
Bruno 2024-07-19 19:54:58 -03:00
parent 25734cb579
commit e01973b911
11 changed files with 105 additions and 141 deletions

View file

@ -100,8 +100,7 @@ variables:
GIT_DEPTH: "1" GIT_DEPTH: "1"
GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_STRATEGY: recursive
# CI-wide Debian variables # CI-wide Debian variables
ARTIFACTS_SUFFIX: "-x64" GIMP_PREFIX: "${CI_PROJECT_DIR}/_install"
GIMP_PREFIX: "${CI_PROJECT_DIR}/_install${ARTIFACTS_SUFFIX}"
# Enable colorful output when supported (e.g. ninja, cppcheck) # Enable colorful output when supported (e.g. ninja, cppcheck)
CLICOLOR_FORCE: "1" CLICOLOR_FORCE: "1"
@ -261,21 +260,21 @@ deps-debian-x64:
- git clone $babl_branch --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/babl.git _babl - git clone $babl_branch --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/babl.git _babl
- git clone $gegl_branch --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/gegl.git _gegl - git clone $gegl_branch --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/gegl.git _gegl
# Build babl and GEGL # Build babl and GEGL
- mkdir _babl/_build${ARTIFACTS_SUFFIX} && cd _babl/_build${ARTIFACTS_SUFFIX} - mkdir _babl/_build && cd _babl/_build
- meson setup .. -Dprefix="${GIMP_PREFIX}" - meson setup .. -Dprefix="${GIMP_PREFIX}"
- ninja - ninja
- ninja install - ninja install
- ccache --show-stats - ccache --show-stats
- mkdir ../../_gegl/_build${ARTIFACTS_SUFFIX} && cd ../../_gegl/_build${ARTIFACTS_SUFFIX} - mkdir ../../_gegl/_build && cd ../../_gegl/_build
- meson setup .. -Dprefix="${GIMP_PREFIX}" - meson setup .. -Dprefix="${GIMP_PREFIX}"
- ninja - ninja
- ninja install - ninja install
- ccache --show-stats - ccache --show-stats
artifacts: artifacts:
paths: paths:
- _install${ARTIFACTS_SUFFIX}/ - _install/
- _babl/_build${ARTIFACTS_SUFFIX}/meson-logs/meson-log.txt - _babl/_build/meson-logs/meson-log.txt
- _gegl/_build${ARTIFACTS_SUFFIX}/meson-logs/meson-log.txt - _gegl/_build/meson-logs/meson-log.txt
expire_in: 2 hours expire_in: 2 hours
gimp-debian-x64: gimp-debian-x64:
@ -287,7 +286,7 @@ gimp-debian-x64:
image: $CI_REGISTRY_IMAGE:build-debian-latest image: $CI_REGISTRY_IMAGE:build-debian-latest
script: script:
# Check building # Check building
- mkdir -p _build${ARTIFACTS_SUFFIX} && cd _build${ARTIFACTS_SUFFIX} - mkdir -p _build && cd _build
- meson setup .. -Dprefix="${GIMP_PREFIX}" - meson setup .. -Dprefix="${GIMP_PREFIX}"
-Dgi-docgen=enabled -Dgi-docgen=enabled
-Dg-ir-doc=true -Dg-ir-doc=true
@ -312,8 +311,8 @@ gimp-debian-x64:
- cd gimp-data - cd gimp-data
- git apply -v ../build/linux/appimage/patches/0001-images-logo-Use-reverse-DNS-naming.patch - git apply -v ../build/linux/appimage/patches/0001-images-logo-Use-reverse-DNS-naming.patch
- cd .. - cd ..
- meson configure _build${ARTIFACTS_SUFFIX} -Drelocatable-bundle=yes -Dvector-icons=true - meson configure _build -Drelocatable-bundle=yes -Dvector-icons=true
- cd _build${ARTIFACTS_SUFFIX} - cd _build
- ninja - ninja
- ninja install - ninja install
- ccache --show-stats - ccache --show-stats
@ -323,13 +322,13 @@ gimp-debian-x64:
expose_as: 'Linux appimage' expose_as: 'Linux appimage'
paths: paths:
- build/linux/appimage/_Output/ - build/linux/appimage/_Output/
- _install${ARTIFACTS_SUFFIX}/ - _install/
- _build${ARTIFACTS_SUFFIX}/meson-logs/meson-log.txt - _build/meson-logs/meson-log.txt
- _build${ARTIFACTS_SUFFIX}/meson-dist/ - _build/meson-dist/
- _build${ARTIFACTS_SUFFIX}/config.h - _build/config.h
- _build${ARTIFACTS_SUFFIX}/devel-docs/ - _build/devel-docs/
reports: reports:
junit: "_build${ARTIFACTS_SUFFIX}/meson-logs/testlog.junit.xml" junit: "_build/meson-logs/testlog.junit.xml"
expire_in: 2 days expire_in: 2 days
.flatpak-x64: .flatpak-x64:
@ -418,8 +417,8 @@ deps-win-x64-cross:
artifacts: artifacts:
paths: paths:
- .local/ - .local/
- _babl/_build-x64-cross/meson-logs/meson-log.txt - _babl/_build-cross/meson-logs/meson-log.txt
- _gegl/_build-x64-cross/meson-logs/meson-log.txt - _gegl/_build-cross/meson-logs/meson-log.txt
expire_in: 2 hours expire_in: 2 hours
gimp-win-x64-cross: gimp-win-x64-cross:
@ -436,7 +435,7 @@ gimp-win-x64-cross:
expose_as: 'Windows zip' expose_as: 'Windows zip'
paths: paths:
- gimp-x64/ - gimp-x64/
- _build-x64-cross/meson-logs/meson-log.txt - _build-cross/meson-logs/meson-log.txt
- done-dll.list - done-dll.list
expire_in: 2 days expire_in: 2 days
@ -485,9 +484,9 @@ deps-win-a64:
- C:\msys64\usr\bin\bash -lc "bash build/windows/1_build-deps-msys2.sh" - C:\msys64\usr\bin\bash -lc "bash build/windows/1_build-deps-msys2.sh"
artifacts: artifacts:
paths: paths:
- _install-a64/ - _install/
- _babl/_build-a64/meson-logs/meson-log.txt - _babl/_build/meson-logs/meson-log.txt
- _gegl/_build-a64/meson-logs/meson-log.txt - _gegl/_build/meson-logs/meson-log.txt
expire_in: 2 hours expire_in: 2 hours
gimp-win-a64: gimp-win-a64:
@ -502,12 +501,12 @@ gimp-win-a64:
artifacts: artifacts:
paths: paths:
- gimp-a64/ - gimp-a64/
- _build-a64/meson-logs/meson-log.txt - _build/meson-logs/meson-log.txt
- done-dll.list - done-dll.list
# Needed by dist-installer-weekly and dist-store-weekly # Needed by dist-installer-weekly and dist-store-weekly
- _build-a64/config.h - _build/config.h
- _build-a64/build/windows/installer/ - _build/build/windows/installer/
- _build-a64/build/windows/store/ - _build/build/windows/store/
expire_in: 2 days expire_in: 2 days
## WINDOWS x86_64 CI (native MSYS2) ## ## WINDOWS x86_64 CI (native MSYS2) ##
@ -535,7 +534,7 @@ deps-win-x64:
- C:\msys64\usr\bin\bash -lc "bash build/windows/1_build-deps-msys2.sh" - C:\msys64\usr\bin\bash -lc "bash build/windows/1_build-deps-msys2.sh"
artifacts: artifacts:
paths: paths:
- _install-x64/ - _install/
expire_in: 2 hours expire_in: 2 hours
gimp-win-x64: gimp-win-x64:
@ -579,7 +578,7 @@ deps-win-x86:
- C:\msys64\usr\bin\bash -lc "bash build/windows/1_build-deps-msys2.sh" - C:\msys64\usr\bin\bash -lc "bash build/windows/1_build-deps-msys2.sh"
artifacts: artifacts:
paths: paths:
- _install-x86/ - _install/
expire_in: 2 hours expire_in: 2 hours
gimp-win-x86: gimp-win-x86:
@ -621,8 +620,8 @@ file-plug-in-tests:
paths: paths:
- _data - _data
script: script:
- API_VER=$(grep GIMP_PKGCONFIG_VERSION _build${ARTIFACTS_SUFFIX}/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') - API_VER=$(grep GIMP_PKGCONFIG_VERSION _build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/')
- APP_VER=$(grep GIMP_APP_VERSION _build${ARTIFACTS_SUFFIX}/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') - APP_VER=$(grep GIMP_APP_VERSION _build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/')
- pkg-config --variable=gimplibdir gimp-${API_VER} 2>/dev/null | grep . && PLUG_IN_DIR=$(echo $(pkg-config --variable=gimplibdir gimp-${API_VER})'/plug-ins/') - pkg-config --variable=gimplibdir gimp-${API_VER} 2>/dev/null | grep . && PLUG_IN_DIR=$(echo $(pkg-config --variable=gimplibdir gimp-${API_VER})'/plug-ins/')
- export PYTHONPATH="${PLUG_IN_DIR}test-file-plug-ins" - export PYTHONPATH="${PLUG_IN_DIR}test-file-plug-ins"
- export GIMP_TESTS_CONFIG_FILE="${PLUG_IN_DIR}test-file-plug-ins/tests/batch-config.ini" - export GIMP_TESTS_CONFIG_FILE="${PLUG_IN_DIR}test-file-plug-ins/tests/batch-config.ini"
@ -675,7 +674,7 @@ cppcheck:
- apt-get update - apt-get update
- apt-get install -y cppcheck - apt-get install -y cppcheck
- cppcheck -q -j8 --enable=all --force --output-file=cppcheck.xml --xml --xml-version=2 - cppcheck -q -j8 --enable=all --force --output-file=cppcheck.xml --xml --xml-version=2
-i _build${ARTIFACTS_SUFFIX} -i _build-x64-cross -i _babl -i _gegl -i _install${ARTIFACTS_SUFFIX} -i .local -i .cache -i _ccache -i gimp-x64 . -i _build -i _build-cross -i _babl -i _gegl -i _install -i .local -i .cache -i _ccache -i gimp-x64 .
- mkdir report - mkdir report
- cppcheck-htmlreport --source-dir=. --title=gimp --file=cppcheck.xml --report-dir=report - cppcheck-htmlreport --source-dir=. --title=gimp --file=cppcheck.xml --report-dir=report
artifacts: artifacts:
@ -696,7 +695,7 @@ sources-debian:
stage: distribution stage: distribution
cache: [] cache: []
script: script:
- mv _build${ARTIFACTS_SUFFIX}/meson-dist/gimp-*.tar.xz . - mv _build/meson-dist/gimp-*.tar.xz .
- FILENAME=`ls gimp-*.tar.xz` && - FILENAME=`ls gimp-*.tar.xz` &&
sha256sum gimp-*.tar.xz > ${FILENAME}.SHA256SUMS && sha256sum gimp-*.tar.xz > ${FILENAME}.SHA256SUMS &&
sha512sum gimp-*.tar.xz > ${FILENAME}.SHA512SUMS sha512sum gimp-*.tar.xz > ${FILENAME}.SHA512SUMS
@ -719,36 +718,36 @@ dev-docs:
script: script:
- apt-get update - apt-get update
- apt-get install -y xz-utils - apt-get install -y xz-utils
- BABL_VER=$(grep BABL_VERSION _babl/_build${ARTIFACTS_SUFFIX}/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') && - BABL_VER=$(grep BABL_VERSION _babl/_build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') &&
BABL_API_VER=$(grep BABL_API_VERSION _babl/_build${ARTIFACTS_SUFFIX}/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') && BABL_API_VER=$(grep BABL_API_VERSION _babl/_build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') &&
DIR_NAME=babl-api-docs-$BABL_VER && DIR_NAME=babl-api-docs-$BABL_VER &&
mkdir $DIR_NAME && mkdir $DIR_NAME &&
mv "${GIMP_PREFIX}/share/doc/babl-$BABL_API_VER" $DIR_NAME/ && mv "${GIMP_PREFIX}/share/doc/babl-$BABL_API_VER" $DIR_NAME/ &&
TAR_NAME="$DIR_NAME.tar.xz" && TAR_NAME="$DIR_NAME.tar.xz" &&
tar --dereference -cJf ${TAR_NAME} $DIR_NAME && tar --dereference -cJf ${TAR_NAME} $DIR_NAME &&
sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS && sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS &&
sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS
- GEGL_MAJ_VER=$(grep GEGL_MAJOR_VERSION _gegl/_build${ARTIFACTS_SUFFIX}/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') && - GEGL_MAJ_VER=$(grep GEGL_MAJOR_VERSION _gegl/_build/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') &&
GEGL_MIN_VER=$(grep GEGL_MINOR_VERSION _gegl/_build${ARTIFACTS_SUFFIX}/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') && GEGL_MIN_VER=$(grep GEGL_MINOR_VERSION _gegl/_build/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') &&
GEGL_MIC_VER=$(grep GEGL_MICRO_VERSION _gegl/_build${ARTIFACTS_SUFFIX}/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') && GEGL_MIC_VER=$(grep GEGL_MICRO_VERSION _gegl/_build/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') &&
GEGL_VER="$GEGL_MAJ_VER.$GEGL_MIN_VER.$GEGL_MIC_VER" && GEGL_VER="$GEGL_MAJ_VER.$GEGL_MIN_VER.$GEGL_MIC_VER" &&
GEGL_API_VER="$GEGL_MAJ_VER.$GEGL_MIN_VER" && GEGL_API_VER="$GEGL_MAJ_VER.$GEGL_MIN_VER" &&
DIR_NAME=gegl-api-docs-$GEGL_VER && DIR_NAME=gegl-api-docs-$GEGL_VER &&
mkdir $DIR_NAME && mkdir $DIR_NAME &&
mv "${GIMP_PREFIX}/share/doc/gegl-$GEGL_API_VER" $DIR_NAME/ && mv "${GIMP_PREFIX}/share/doc/gegl-$GEGL_API_VER" $DIR_NAME/ &&
TAR_NAME="$DIR_NAME.tar.xz" && TAR_NAME="$DIR_NAME.tar.xz" &&
tar --dereference -cJf ${TAR_NAME} $DIR_NAME && tar --dereference -cJf ${TAR_NAME} $DIR_NAME &&
sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS && sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS &&
sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS
- GIMP_VER=$(grep GIMP_VERSION _build${ARTIFACTS_SUFFIX}/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') && - GIMP_VER=$(grep GIMP_VERSION _build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') &&
APP_VER=$(echo $GIMP_VER | sed 's/\([0-9]\+\.[0-9]\+\)\..*/\1/') && APP_VER=$(echo $GIMP_VER | sed 's/\([0-9]\+\.[0-9]\+\)\..*/\1/') &&
DIR_NAME=gimp-api-docs-$GIMP_VER && DIR_NAME=gimp-api-docs-$GIMP_VER &&
mkdir $DIR_NAME && mkdir $DIR_NAME &&
mv "${GIMP_PREFIX}/share/doc/gimp-$APP_VER" $DIR_NAME/reference && mv "${GIMP_PREFIX}/share/doc/gimp-$APP_VER" $DIR_NAME/reference &&
mv _build${ARTIFACTS_SUFFIX}/devel-docs/g-ir-docs $DIR_NAME/ && mv _build/devel-docs/g-ir-docs $DIR_NAME/ &&
TAR_NAME="$DIR_NAME.tar.xz" && TAR_NAME="$DIR_NAME.tar.xz" &&
tar --dereference -cJf ${TAR_NAME} $DIR_NAME && tar --dereference -cJf ${TAR_NAME} $DIR_NAME &&
sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS && sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS &&
sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS
artifacts: artifacts:
paths: paths:

View file

@ -9,24 +9,15 @@ set -e
# AGNOSTIC VARIABLES (only touch them to make even more portable, without casuistry) # AGNOSTIC VARIABLES (only touch them to make even more portable, without casuistry)
## This script is arch-agnostic. The packager can specify it when calling the script
if [ -z "$1" ]; then
export ARCH=$(uname -m)
else
export ARCH=$1
fi
INSTALL_ARTIF=$(echo _install*)
BUILD_ARTIF=$(echo _build*)
## This script is "filesystem-agnostic". The packager can quickly choose either ## This script is "filesystem-agnostic". The packager can quickly choose either
## putting everything in /usr or in AppDir(root) just specifying the 2nd parameter. ## putting everything in /usr or in AppDir(root) just specifying the 2nd parameter.
GIMP_DISTRIB="$CI_PROJECT_DIR/build/linux/appimage/AppDir" GIMP_DISTRIB="$CI_PROJECT_DIR/build/linux/appimage/AppDir"
if [ "$GITLAB_CI" ] || [ -z "$GIMP_PREFIX" ]; then if [ "$GITLAB_CI" ] || [ -z "$GIMP_PREFIX" ]; then
GIMP_PREFIX="$GIMP_DISTRIB/usr" GIMP_PREFIX="$GIMP_DISTRIB/usr"
fi fi
if [ -z "$2" ] || [ "$2" = "usr" ]; then if [ -z "$1" ] || [ "$1" = "usr" ]; then
OPT_PREFIX="${GIMP_PREFIX}" OPT_PREFIX="${GIMP_PREFIX}"
elif [ "$2" = "AppDir" ]; then elif [ "$1" = "AppDir" ]; then
OPT_PREFIX="${GIMP_DISTRIB}" OPT_PREFIX="${GIMP_DISTRIB}"
fi fi
@ -114,7 +105,7 @@ conf_app GTK_PATH "/usr" "${LIB_DIR}/${LIB_SUBDIR}gtk-3.0"
conf_app GTK_IM_MODULE_FILE "/usr" "${LIB_DIR}/${LIB_SUBDIR}gtk-3.0/*.*.*" conf_app GTK_IM_MODULE_FILE "/usr" "${LIB_DIR}/${LIB_SUBDIR}gtk-3.0/*.*.*"
## Core features ## Core features
cp -r $INSTALL_ARTIF/* $OPT_PREFIX cp -r _install/* $OPT_PREFIX
conf_app BABL_PATH "$OPT_PREFIX" "${LIB_DIR}/${LIB_SUBDIR}babl-*" conf_app BABL_PATH "$OPT_PREFIX" "${LIB_DIR}/${LIB_SUBDIR}babl-*"
conf_app GEGL_PATH "$OPT_PREFIX" "${LIB_DIR}/${LIB_SUBDIR}gegl-*" conf_app GEGL_PATH "$OPT_PREFIX" "${LIB_DIR}/${LIB_SUBDIR}gegl-*"
conf_app GIMP3_SYSCONFDIR "$OPT_PREFIX" "etc/gimp/*" conf_app GIMP3_SYSCONFDIR "$OPT_PREFIX" "etc/gimp/*"
@ -182,7 +173,7 @@ elif [ "$2" = "AppDir" ]; then
sed -i "s|OPT_PREFIX_WILD||g" $GIMP_DISTRIB/AppRun sed -i "s|OPT_PREFIX_WILD||g" $GIMP_DISTRIB/AppRun
fi fi
GIMP_APP_VERSION=$(grep GIMP_APP_VERSION $BUILD_ARTIF/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') GIMP_APP_VERSION=$(grep GIMP_APP_VERSION _build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/')
sed -i "s|GIMP_APP_VERSION|${GIMP_APP_VERSION}|" $GIMP_DISTRIB/AppRun sed -i "s|GIMP_APP_VERSION|${GIMP_APP_VERSION}|" $GIMP_DISTRIB/AppRun
@ -203,7 +194,7 @@ fi
# MAKE APPIMAGE # MAKE APPIMAGE
"./$legacy_appimagetool" --appimage-extract-and-run $GIMP_DISTRIB # -u "zsync|https://download.gimp.org/gimp/v${GIMP_APP_VERSION}/GIMP-latest-${ARCH}.AppImage.zsync" "./$legacy_appimagetool" --appimage-extract-and-run $GIMP_DISTRIB # -u "zsync|https://download.gimp.org/gimp/v${GIMP_APP_VERSION}/GIMP-latest-$(uname -m).AppImage.zsync"
mkdir build/linux/appimage/_Output mkdir build/linux/appimage/_Output
GIMP_VERSION=$(grep GIMP_VERSION $BUILD_ARTIF/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') GIMP_VERSION=$(grep GIMP_VERSION _build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/')
mv GNU*.AppImage build/linux/appimage/_Output/GIMP-${GIMP_VERSION}-${ARCH}.AppImage mv GNU*.AppImage build/linux/appimage/_Output/GIMP-${GIMP_VERSION}-$(uname -m).AppImage

View file

@ -1,14 +1,10 @@
#!/bin/sh #!/bin/sh
# Flatpak design mandates to build natively
ARCH=$(uname -m)
# Install part of the deps # Install part of the deps
if [ -z "$GITLAB_CI" ]; then if [ -z "$GITLAB_CI" ]; then
flatpak update -y flatpak update -y
flatpak remote-add --if-not-exists --user --from gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo flatpak remote-add --if-not-exists --user --from gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
flatpak install --user gnome-nightly org.gnome.Platform/$ARCH/master org.gnome.Sdk/$ARCH/master -y flatpak install --user gnome-nightly org.gnome.Platform/$(uname -m)/master org.gnome.Sdk/$(uname -m)/master -y
fi fi
flatpak remote-add --if-not-exists --user --from flathub https://dl.flathub.org/repo/flathub.flatpakrepo flatpak remote-add --if-not-exists --user --from flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub org.freedesktop.Sdk.Extension.llvm18 -y flatpak install --user flathub org.freedesktop.Sdk.Extension.llvm18 -y
@ -22,7 +18,7 @@ if [ -z "$GITLAB_CI" ] && [ "$1" != '--ci' ]; then
exit 1 exit 1
fi fi
if [ -z "$GIMP_PREFIX" ]; then if [ -z "$GIMP_PREFIX" ]; then
export GIMP_PREFIX="$PWD/../_install-$ARCH" export GIMP_PREFIX="$PWD/../_install"
fi fi
if [ ! -d "$GIMP_PREFIX" ]; then if [ ! -d "$GIMP_PREFIX" ]; then
mkdir -p "$GIMP_PREFIX" mkdir -p "$GIMP_PREFIX"
@ -33,7 +29,7 @@ if [ -z "$GITLAB_CI" ] && [ "$1" != '--ci' ]; then
elif [ "$GITLAB_CI" ] || [ "$1" = '--ci' ]; then elif [ "$GITLAB_CI" ] || [ "$1" = '--ci' ]; then
export GIMP_PREFIX="$PWD/_install-$ARCH" export GIMP_PREFIX="$PWD/_install"
# (The deps building is too long and no complete output would be collected, # (The deps building is too long and no complete output would be collected,
# even from GitLab runner messages. So, let's silent and save logs as a file.) # even from GitLab runner messages. So, let's silent and save logs as a file.)

View file

@ -1,9 +1,5 @@
#!/bin/sh #!/bin/sh
# Flatpak design mandates to build natively
ARCH=$(uname -m)
if [ -z "$GITLAB_CI" ] && [ "$1" != '--ci' ]; then if [ -z "$GITLAB_CI" ] && [ "$1" != '--ci' ]; then
# Make the script work locally # Make the script work locally
if [ "$0" != 'build/linux/flatpak/2_build-gimp-flatpak.sh' ]; then if [ "$0" != 'build/linux/flatpak/2_build-gimp-flatpak.sh' ]; then
@ -12,25 +8,25 @@ if [ -z "$GITLAB_CI" ] && [ "$1" != '--ci' ]; then
fi fi
git submodule update --init git submodule update --init
if [ -z "$GIMP_PREFIX" ]; then if [ -z "$GIMP_PREFIX" ]; then
export GIMP_PREFIX="$PWD/../_install-$ARCH" export GIMP_PREFIX="$PWD/../_install"
fi fi
# Build GIMP only # Build GIMP only
if [ ! -f "_build-$ARCH/build.ninja" ]; then if [ ! -f "_build/build.ninja" ]; then
mkdir -p _build-$ARCH && cd _build-$ARCH mkdir -p _build && cd _build
flatpak-builder --run --ccache "$GIMP_PREFIX" ../build/linux/flatpak/org.gimp.GIMP-nightly.json meson setup .. -Dprefix=/app/ -Dlibdir=/app/lib/ flatpak-builder --run --ccache "$GIMP_PREFIX" ../build/linux/flatpak/org.gimp.GIMP-nightly.json meson setup .. -Dprefix=/app/ -Dlibdir=/app/lib/
if [ ! -f '.gitignore' ]; then if [ ! -f '.gitignore' ]; then
echo '*' > .gitignore echo '*' > .gitignore
fi fi
else else
cd _build-$ARCH cd _build
fi fi
flatpak-builder --run --ccache "$GIMP_PREFIX" ../build/linux/flatpak/org.gimp.GIMP-nightly.json ninja flatpak-builder --run --ccache "$GIMP_PREFIX" ../build/linux/flatpak/org.gimp.GIMP-nightly.json ninja
flatpak-builder --run "$GIMP_PREFIX" ../build/linux/flatpak/org.gimp.GIMP-nightly.json ninja install flatpak-builder --run "$GIMP_PREFIX" ../build/linux/flatpak/org.gimp.GIMP-nightly.json ninja install
elif [ "$GITLAB_CI" ] || [ "$1" = '--ci' ]; then elif [ "$GITLAB_CI" ] || [ "$1" = '--ci' ]; then
export GIMP_PREFIX="$PWD/_install-$ARCH" export GIMP_PREFIX="$PWD/_install"
if [ "$1" != '--ci' ]; then if [ "$1" != '--ci' ]; then
# Extract deps from previous job # Extract deps from previous job

View file

@ -55,7 +55,7 @@ export PATH="$PWD/.local/bin:$PATH"
export XDG_DATA_HOME="$PWD/.local/share" export XDG_DATA_HOME="$PWD/.local/share"
crossroad w64 gimp --run="${GIMP_DIR}build/windows/1_build-deps-crossroad.sh" crossroad w64 gimp --run="${GIMP_DIR}build/windows/1_build-deps-crossroad.sh"
else else
export ARTIFACTS_SUFFIX="-x64-cross" export ARTIFACTS_SUFFIX="-cross"
## Install the required (pre-built) packages for babl, GEGL and GIMP ## Install the required (pre-built) packages for babl, GEGL and GIMP
crossroad source msys2 crossroad source msys2

View file

@ -2,16 +2,6 @@
set -e set -e
# $MSYSTEM_CARCH and $MINGW_PACKAGE_PREFIX are defined by MSYS2.
# https://github.com/msys2/MSYS2-packages/blob/master/filesystem/msystem
if [ "$MSYSTEM_CARCH" = "aarch64" ]; then
export ARTIFACTS_SUFFIX="-a64"
elif [ "$MSYSTEM_CARCH" = "x86_64" ]; then
export ARTIFACTS_SUFFIX="-x64"
else # [ "$MSYSTEM_CARCH" = "i686" ];
export ARTIFACTS_SUFFIX="-x86"
fi
if [ -z "$GITLAB_CI" ]; then if [ -z "$GITLAB_CI" ]; then
# Make the script work locally # Make the script work locally
if [ "$0" != "build/windows/1_build-deps-msys2.sh" ]; then if [ "$0" != "build/windows/1_build-deps-msys2.sh" ]; then
@ -87,9 +77,9 @@ clone_or_pull gegl
# Build babl and GEGL # Build babl and GEGL
# We need to create the condition this ugly way to not break CI # We need to create the condition this ugly way to not break CI
if [ "$GITLAB_CI" ]; then if [ "$GITLAB_CI" ]; then
export GIMP_PREFIX="$PWD/_install${ARTIFACTS_SUFFIX}" export GIMP_PREFIX="$PWD/_install"
elif [ -z "$GITLAB_CI" ] && [ -z "$GIMP_PREFIX" ]; then elif [ -z "$GITLAB_CI" ] && [ -z "$GIMP_PREFIX" ]; then
export GIMP_PREFIX="$PWD/_install${ARTIFACTS_SUFFIX}" export GIMP_PREFIX="$PWD/_install"
fi fi
## Universal variables from .gitlab-ci.yml ## Universal variables from .gitlab-ci.yml
IFS=$'\n' VAR_ARRAY=($(cat ${GIMP_DIR}.gitlab-ci.yml | sed -n '/export PATH=/,/GI_TYPELIB_PATH}\"/p' | sed 's/ - //')) IFS=$'\n' VAR_ARRAY=($(cat ${GIMP_DIR}.gitlab-ci.yml | sed -n '/export PATH=/,/GI_TYPELIB_PATH}\"/p' | sed 's/ - //'))
@ -101,10 +91,10 @@ done
configure_or_build () configure_or_build ()
{ {
if [ ! -f "_${1}/_build/build.ninja" ]; then if [ ! -f "_${1}/_build/build.ninja" ]; then
mkdir -p _${1}/_build${ARTIFACTS_SUFFIX} && cd _${1}/_build${ARTIFACTS_SUFFIX} mkdir -p _${1}/_build && cd _${1}/_build
meson setup .. -Dprefix="${GIMP_PREFIX}" $2 meson setup .. -Dprefix="${GIMP_PREFIX}" $2
else else
cd _${1}/_build${ARTIFACTS_SUFFIX} cd _${1}/_build
fi fi
ninja ninja
ninja install ninja install

View file

@ -18,25 +18,25 @@ fi
# FIXME: We need native/Linux gimp-console. # FIXME: We need native/Linux gimp-console.
if [ ! -d '_build-x64' ]; then if [ ! -d '_build' ]; then
echo -e '\033[31m(ERROR)\033[0m: Before running this script, first build GIMP natively in _build-x64' echo -e '\033[31m(ERROR)\033[0m: Before running this script, first build GIMP natively in _build'
fi fi
if [ ! -d "${PARENT_DIR}_install-x64" ]; then if [ ! -d "${PARENT_DIR}_install" ]; then
echo -e "\033[31m(ERROR)\033[0m: Before running this script, first install GIMP natively in ${PARENT_DIR}_install-x64" echo -e "\033[31m(ERROR)\033[0m: Before running this script, first install GIMP natively in ${PARENT_DIR}_install"
fi fi
if [ ! -d '_build-x64' ] || [ ! -d "${PARENT_DIR}_install-x64" ]; then if [ ! -d '_build' ] || [ ! -d "${PARENT_DIR}_install" ]; then
echo 'Patches are very welcome: https://gitlab.gnome.org/GNOME/gimp/-/issues/11544' echo 'Patches are very welcome: https://gitlab.gnome.org/GNOME/gimp/-/issues/11544'
exit 1 exit 1
fi fi
GIMP_APP_VERSION=$(grep GIMP_APP_VERSION _build-x64/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') GIMP_APP_VERSION=$(grep GIMP_APP_VERSION _build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/')
mkdir -p $PWD/${PARENT_DIR}.local/bin mkdir -p $PWD/${PARENT_DIR}.local/bin
GIMP_CONSOLE_PATH=$PWD/${PARENT_DIR}.local/bin/gimp-console-$GIMP_APP_VERSION GIMP_CONSOLE_PATH=$PWD/${PARENT_DIR}.local/bin/gimp-console-$GIMP_APP_VERSION
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 ./ && LIB_DIR=$(gcc -print-multi-os-directory | sed 's/\.\.\///g') || LIB_DIR="lib"
gcc -print-multiarch 2>/dev/null | grep . && LIB_SUBDIR=$(echo $(gcc -print-multiarch)'/') gcc -print-multiarch 2>/dev/null | grep . && LIB_SUBDIR=$(echo $(gcc -print-multiarch)'/')
echo "#!/bin/sh" > $GIMP_CONSOLE_PATH echo "#!/bin/sh" > $GIMP_CONSOLE_PATH
echo export LD_LIBRARY_PATH="$PWD/${PARENT_DIR}_install-x64/${LIB_DIR}/${LIB_SUBDIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" >> $GIMP_CONSOLE_PATH echo export LD_LIBRARY_PATH="$PWD/${PARENT_DIR}_install/${LIB_DIR}/${LIB_SUBDIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" >> $GIMP_CONSOLE_PATH
echo export GI_TYPELIB_PATH="$PWD/${PARENT_DIR}_install-x64/${LIB_DIR}/${LIB_SUBDIR}girepository-1.0${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}" >> $GIMP_CONSOLE_PATH echo export GI_TYPELIB_PATH="$PWD/${PARENT_DIR}_install/${LIB_DIR}/${LIB_SUBDIR}girepository-1.0${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}" >> $GIMP_CONSOLE_PATH
echo "$PWD/${PARENT_DIR}_install-x64/bin/gimp-console-$GIMP_APP_VERSION \"\$@\"" >> $GIMP_CONSOLE_PATH echo "$PWD/${PARENT_DIR}_install/bin/gimp-console-$GIMP_APP_VERSION \"\$@\"" >> $GIMP_CONSOLE_PATH
chmod u+x $GIMP_CONSOLE_PATH chmod u+x $GIMP_CONSOLE_PATH
@ -45,7 +45,7 @@ export PATH="$PWD/${PARENT_DIR}.local/bin:$PWD/bin:$PATH"
export XDG_DATA_HOME="$PWD/${PARENT_DIR}.local/share" export XDG_DATA_HOME="$PWD/${PARENT_DIR}.local/share"
crossroad w64 gimp --run="build/windows/2_build-gimp-crossroad.sh" crossroad w64 gimp --run="build/windows/2_build-gimp-crossroad.sh"
else else
export ARTIFACTS_SUFFIX="-x64-cross" export ARTIFACTS_SUFFIX="-cross"
## The required packages for GIMP are taken from the previous job ## The required packages for GIMP are taken from the previous job

View file

@ -2,16 +2,6 @@
set -e set -e
# $MSYSTEM_CARCH, $MSYSTEM_PREFIX and $MINGW_PACKAGE_PREFIX are defined by MSYS2.
# https://github.com/msys2/MSYS2-packages/blob/master/filesystem/msystem
if [ "$MSYSTEM_CARCH" = "aarch64" ]; then
export ARTIFACTS_SUFFIX="-a64"
elif [ "$MSYSTEM_CARCH" = "x86_64" ]; then
export ARTIFACTS_SUFFIX="-x64"
else # [ "$MSYSTEM_CARCH" = "i686" ];
export ARTIFACTS_SUFFIX="-x86"
fi
if [ -z "$GITLAB_CI" ]; then if [ -z "$GITLAB_CI" ]; then
# Make the script work locally # Make the script work locally
if [ "$0" != "build/windows/2_build-gimp-msys2.sh" ]; then if [ "$0" != "build/windows/2_build-gimp-msys2.sh" ]; then
@ -34,9 +24,9 @@ fi
# Build GIMP # Build GIMP
# We need to create the condition this ugly way to not break CI # We need to create the condition this ugly way to not break CI
if [ "$GITLAB_CI" ]; then if [ "$GITLAB_CI" ]; then
export GIMP_PREFIX="$PWD/_install${ARTIFACTS_SUFFIX}" export GIMP_PREFIX="$PWD/_install"
elif [ -z "$GITLAB_CI" ] && [ -z "$GIMP_PREFIX" ]; then elif [ -z "$GITLAB_CI" ] && [ -z "$GIMP_PREFIX" ]; then
export GIMP_PREFIX="$PWD/../_install${ARTIFACTS_SUFFIX}" export GIMP_PREFIX="$PWD/../_install"
fi fi
## Universal variables from .gitlab-ci.yml ## 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=$'\n' VAR_ARRAY=($(cat .gitlab-ci.yml | sed -n '/export PATH=/,/GI_TYPELIB_PATH}\"/p' | sed 's/ - //'))
@ -45,8 +35,8 @@ for VAR in "${VAR_ARRAY[@]}"; do
eval "$VAR" || continue eval "$VAR" || continue
done done
if [ ! -f "_build${ARTIFACTS_SUFFIX}/build.ninja" ]; then if [ ! -f "_build/build.ninja" ]; then
mkdir -p "_build${ARTIFACTS_SUFFIX}" && cd "_build${ARTIFACTS_SUFFIX}" mkdir -p "_build" && cd "_build"
# We disable javascript as we are not able for the time being to add a # We disable javascript as we are not able for the time being to add a
# javascript interpreter with GObject Introspection (GJS/spidermonkey # javascript interpreter with GObject Introspection (GJS/spidermonkey
# and Seed/Webkit are the 2 contenders so far, but they are not # and Seed/Webkit are the 2 contenders so far, but they are not
@ -61,7 +51,7 @@ if [ ! -f "_build${ARTIFACTS_SUFFIX}/build.ninja" ]; then
-Denable-default-bin=enabled \ -Denable-default-bin=enabled \
-Dbuild-id=org.gimp.GIMP_official $MESON_OPTIONS -Dbuild-id=org.gimp.GIMP_official $MESON_OPTIONS
else else
cd "_build${ARTIFACTS_SUFFIX}" cd "_build"
fi fi
ninja ninja
ninja install ninja install

View file

@ -2,8 +2,10 @@
set -e set -e
# $MSYSTEM_CARCH and $MSYSTEM_PREFIX are defined by MSYS2. # NOTE: The bundling scripts, different from building scripts, need to set
# https://github.com/msys2/MSYS2-packages/blob/master/filesystem/msystem # the ARTIFACTS_SUFFIX, even locally: 1) to avoid confusion (bundle dirs are
# relocatable so can be copied to a machine with other arch); and 2) to our
# dist scripts fallback code be able to identify what they are distributing
if [ "$MSYSTEM_CARCH" = "aarch64" ]; then if [ "$MSYSTEM_CARCH" = "aarch64" ]; then
export ARTIFACTS_SUFFIX="-a64" export ARTIFACTS_SUFFIX="-a64"
elif [ "$CI_JOB_NAME" = "gimp-win-x64-cross" ] || [ "$MSYSTEM_CARCH" = "x86_64" ]; then elif [ "$CI_JOB_NAME" = "gimp-win-x64-cross" ] || [ "$MSYSTEM_CARCH" = "x86_64" ]; then
@ -26,13 +28,13 @@ fi
# Bundle deps and GIMP files # Bundle deps and GIMP files
if [[ "$CI_JOB_NAME" =~ "cross" ]]; then if [[ "$CI_JOB_NAME" =~ "cross" ]]; then
export GIMP_PREFIX="`realpath ./_install`${ARTIFACTS_SUFFIX}-cross" export GIMP_PREFIX="`realpath ./_install-cross`"
export MSYS_PREFIX="$GIMP_PREFIX" export MSYS_PREFIX="$GIMP_PREFIX"
else else
if [ "$GITLAB_CI" ]; then if [ "$GITLAB_CI" ]; then
export GIMP_PREFIX="$PWD/_install${ARTIFACTS_SUFFIX}" export GIMP_PREFIX="$PWD/_install"
elif [ -z "$GITLAB_CI" ] && [ -z "$GIMP_PREFIX" ]; then elif [ -z "$GITLAB_CI" ] && [ -z "$GIMP_PREFIX" ]; then
export GIMP_PREFIX="$PWD/../_install${ARTIFACTS_SUFFIX}" export GIMP_PREFIX="$PWD/../_install"
fi fi
export MSYS_PREFIX="$MSYSTEM_PREFIX" export MSYS_PREFIX="$MSYSTEM_PREFIX"
fi fi

View file

@ -12,7 +12,7 @@ param ($GIMP_VERSION,
if ((-Not $GIMP_VERSION) -or (-Not $GIMP_APP_VERSION) -or (-Not $GIMP_API_VERSION)) if ((-Not $GIMP_VERSION) -or (-Not $GIMP_APP_VERSION) -or (-Not $GIMP_API_VERSION))
{ {
$CONFIG_PATH = Resolve-Path -Path "_build-*\config.h" | Select-Object -ExpandProperty Path $CONFIG_PATH = '_build\config.h'
} }
if (-Not $GIMP_VERSION) if (-Not $GIMP_VERSION)
@ -133,7 +133,7 @@ fix_msg $INNOPATH\Languages
fix_msg $INNOPATH\Languages\Unofficial fix_msg $INNOPATH\Languages\Unofficial
$gen_path = Resolve-Path -Path "_build-*\build\windows\installer" | Select-Object -ExpandProperty Path $gen_path = '_build\build\windows\installer'
if (Test-Path -Path $gen_path) if (Test-Path -Path $gen_path)
{ {
# Copy generated language files into the source directory # Copy generated language files into the source directory

View file

@ -14,7 +14,7 @@ Set-Alias -Name 'signtool' -Value 'C:\Program Files (x86)\Windows Kits\10\bin\10
# Global variables # Global variables
$config_path = Resolve-Path -Path "_build-*\config.h" | Select-Object -ExpandProperty Path $config_path = '_build\config.h'
## Identity Name (internal) and Display Name (in the Store) ## Identity Name (internal) and Display Name (in the Store)
$gimp_unstable = Get-Content -Path "$config_path" | Select-String 'GIMP_UNSTABLE' | $gimp_unstable = Get-Content -Path "$config_path" | Select-String 'GIMP_UNSTABLE' |
@ -102,7 +102,7 @@ Configure-Arch "$arch_x64" 'x64'
# 2. CREATE ASSETS # 2. CREATE ASSETS
## Copy pre-generated icons to each arch ## Copy pre-generated icons to each arch
$icons_path = Resolve-Path -Path "..\..\..\_build-*\build\windows\store\Assets" $icons_path = '..\..\..\_build\build\windows\store\Assets'
if (Test-Path -Path "$icons_path") if (Test-Path -Path "$icons_path")
{ {
foreach ($arch in $archsArray) foreach ($arch in $archsArray)