gimp/.gitlab-ci.yml

981 lines
33 KiB
YAML
Raw Normal View History

# Default commit CI should only run the following pipelines:
# - Linux native CLang build (base & fast)
# - Win64 crossbuild (base & fast)
# Scheduled CI ($CI_PIPELINE_SOURCE == "schedule") will run regularly:
# - Linux native GCC build (rare usefulness)
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
# - Win Aarch64/64/32 native builds (base but slow)
# - Flatpak build (slow and doesn't need constant publishing)
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
# - cppcheck (static code analysis)
# Releases ($CI_COMMIT_TAG != null) should run only:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
# - Win Aarch64/64/32 native builds (Inno Windows installer creation)
#
# To force step-specific pipelines without waiting for commits and/or
# pipelines, these are the variable you should set:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
# - GIMP_CI_MESON_CLANG: trigger the Debian clang build.
# - GIMP_CI_MESON_GCC: trigger the Debian gcc build.
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
# - GIMP_CI_RASTER_ICONS: trigger the Debian build without vector icons.
# - GIMP_CI_CROSSROAD_WIN64: trigger the crossroad build for Win 64-bit.
# - GIMP_CI_CROSSROAD_WIN32: trigger the crossroad build for Win 32-bit.
# - 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.
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
# - GIMP_CI_MSYS2_WIN32: trigger the native MSYS2 build for Win 32-bit.
# - GIMP_CI_SOURCES: trigger the Debian build and the source tarball job.
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
# - GIMP_CI_FLATPAK: trigger the (normally) weekly flatpak build and publishing.
# - GIMP_CI_WIN_INSTALLER: trigger all native MSYS2 builds then creates Inno Windows installer.
# - GIMP_CI_CPPCHECK: trigger cppcheck static analysis.
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
image: debian:bookworm
2019-08-21 19:54:38 +08:00
stages:
- prepare
- dependencies
- gimp
- packaging
- distribution
- analysis
# GitLab "default:" is buggy so let's use extensions and references
.default:
# Caching support
variables:
CCACHE_BASEDIR: "$CI_PROJECT_DIR"
CCACHE_DIR: "$CI_PROJECT_DIR/_ccache"
CC: "ccache clang"
CXX: "ccache clang++"
cache:
key: $CI_JOB_NAME
paths:
- _ccache/
# Universal variables (works in all OSes and archs)
before_script:
- export PATH="$GIMP_PREFIX/bin:$PATH"
- gcc -print-multi-os-directory | grep . && LIB_DIR=$(gcc -print-multi-os-directory | sed 's/\.\.\///g') || LIB_DIR="lib"
- gcc -print-multiarch | grep . && LIB_SUBDIR=$(echo $(gcc -print-multiarch)'/')
- 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 XDG_DATA_DIRS="${GIMP_PREFIX}/share:/usr/share${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}"
- export GI_TYPELIB_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}girepository-1.0${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}"
# Common artifacts behavior
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
when: always
variables:
GIT_DEPTH: "1"
ARTIFACTS_SUFFIX: "-x64"
GIMP_PREFIX: "${CI_PROJECT_DIR}/_install${ARTIFACTS_SUFFIX}"
## prepare docker images ##
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
image-debian-x64:
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_MESON_CLANG != null'
- if: '$GIMP_CI_MESON_GCC != null'
- if: '$GIMP_CI_RASTER_ICONS != null'
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- if: '$GIMP_CI_SOURCES != null'
- if: '$GIMP_CI_FLATPAK != null'
# On merge requests and commits.
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_PIPELINE_SOURCE == "push"'
# On releases.
- if: '$CI_COMMIT_TAG != null'
stage: prepare
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
variables:
GIT_STRATEGY: none
cache: {}
script:
- export container=docker
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- echo "FROM debian:bookworm" > Dockerfile
- echo "RUN apt-get update" >> Dockerfile
- echo "RUN apt-get install -y --no-install-recommends \\" >> Dockerfile
# libjxl uses C++ features that require posix threads so we install
# specifically g++-mingw-w64-x86-64-posix and gcc-mingw-w64-x86-64-posix.
# Note that we can't install both the -posix and -win32 versions since
# update gcc-mingw-w64 (25). This is for crossroad builds only
- echo "appstream
at-spi2-core
build-essential
ccache
clang
cpio
desktop-file-utils
ffmpeg
g++-mingw-w64-x86-64-posix
gcc-mingw-w64-x86-64-posix
g++-mingw-w64-i686
gcc-mingw-w64-i686
gettext
ghostscript
gi-docgen
git
glib-networking
gobject-introspection
graphviz
graphviz-dev
hicolor-icon-theme
iso-codes
libaa1-dev
libappstream-glib-dev
libbz2-dev
libcfitsio-dev
libdbus-glib-1-dev
libexif-dev
libgexiv2-dev
libgirepository1.0-dev
libgs-dev
libgtk-3-bin
libgtk-3-dev
libgudev-1.0-dev
libheif-dev
libjson-glib-dev
libjxl-dev
liblcms2-dev
liblzma-dev
libmng-dev
libmypaint-dev
libomp-dev
libopenexr-dev
libpoppler-glib-dev
libraw-dev
libraw20
librsvg2-dev
libspiro-dev
libsuitesparse-dev
libtiff-dev
libtiff5-dev
libtool
libumfpack5
libwebp-dev
libwmf-dev
libxmu-dev
libxpm-dev
luajit
meson
mypaint-brushes
poppler-data
python3
python3-distutils
python3-docutils
python3-gi
python3-pip
python3-zstandard
rpm
valac
xauth
xsltproc
xvfb
xz-utils
yelp-tools" >> Dockerfile
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:build-debian-latest --cache=true --cache-ttl=120h
## GNU/Linux 64-bit CIs (Debian bookworm) ##
.deps-debian-base:
extends: .default
needs: ["image-debian-x64"]
stage: dependencies
image: $CI_REGISTRY_IMAGE:build-debian-latest
before_script:
- if [ "$CI_COMMIT_TAG" != "" ]; then
repo=https://gitlab.gnome.org/GNOME/babl.git;
babl_tag=$(git ls-remote --tags --exit-code --refs "$repo" |
grep -oi "BABL_[0-9]*_[0-9]*_[0-9]*" |
sort --version-sort | tail -1);
babl_branch="--branch=$babl_tag";
repo=https://gitlab.gnome.org/GNOME/gegl.git;
gegl_tag=$(git ls-remote --tags --exit-code --refs "$repo" |
grep -oi "GEGL_[0-9]*_[0-9]*_[0-9]*" |
sort --version-sort | tail -1);
gegl_branch="--branch=$gegl_tag";
fi
- 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
# Universal variables
- !reference [.default, before_script]
- mkdir -p _ccache/
script:
- mkdir _babl/_build${ARTIFACTS_SUFFIX} && cd _babl/_build${ARTIFACTS_SUFFIX}
- meson setup .. -Dprefix="${GIMP_PREFIX}"
- ninja
- ninja install
- ccache --show-stats
- mkdir ../../_gegl/_build${ARTIFACTS_SUFFIX} && cd ../../_gegl/_build${ARTIFACTS_SUFFIX}
- meson setup .. -Dprefix="${GIMP_PREFIX}"
- ninja
- ninja install
- ccache --show-stats
artifacts:
paths:
- _install${ARTIFACTS_SUFFIX}/
- _babl/_build${ARTIFACTS_SUFFIX}/
- _gegl/_build${ARTIFACTS_SUFFIX}/
expire_in: 2 hours
deps-debian-x64:
extends: .deps-debian-base
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_MESON_CLANG != null'
- if: '$GIMP_CI_RASTER_ICONS != null'
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
- if: '$GIMP_CI_SOURCES != null'
- if: '$GIMP_CI_FLATPAK != null'
# On merge requests and commits.
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_PIPELINE_SOURCE == "push"'
# On releases.
- if: '$CI_COMMIT_TAG != null'
# GitLab "rules:variables:" is buggy so let's use jobs
deps-debian-gcc:
extends: .deps-debian-base
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_MESON_GCC != null'
variables:
CC: "ccache gcc"
CXX: "ccache gcc"
.gimp-debian-base:
extends: .default
needs: ["deps-debian-x64"]
stage: gimp
image: $CI_REGISTRY_IMAGE:build-debian-latest
before_script:
# Universal variables
- !reference [.default, before_script]
- mkdir -p _ccache/
- git submodule update --init
- mkdir -p _build${ARTIFACTS_SUFFIX} && cd _build${ARTIFACTS_SUFFIX}
after_script:
- ccache --show-stats
artifacts:
paths:
- _install${ARTIFACTS_SUFFIX}/
- _build${ARTIFACTS_SUFFIX}/
expire_in: 1 days
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
gimp-debian-x64:
extends: .gimp-debian-base
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_MESON_CLANG != null'
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
- if: '$GIMP_CI_SOURCES != null'
- if: '$GIMP_CI_FLATPAK != null'
# On merge requests and commits.
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_PIPELINE_SOURCE == "push"'
# On releases.
- if: '$CI_COMMIT_TAG != null'
2019-08-09 22:18:43 +08:00
script:
- meson setup .. -Dprefix="${GIMP_PREFIX}"
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
-Dgi-docgen=enabled
-Dg-ir-doc=true
- ninja
- ninja test
# The src should not be changed by the build. If it is, something is
# wrong. Let's print out the diff for debugging in such case, and
# exit to fail the CI.
- if [ $(git diff |wc -l) -ne 0 ]; then
git diff;
exit 1;
fi
- ninja dist
- ninja install
artifacts:
paths:
- _install${ARTIFACTS_SUFFIX}/
- _build${ARTIFACTS_SUFFIX}/config.h
- _build${ARTIFACTS_SUFFIX}/meson-dist/
- _build${ARTIFACTS_SUFFIX}/devel-docs/
- _build${ARTIFACTS_SUFFIX}/build/flatpak/
- _build${ARTIFACTS_SUFFIX}/meson-logs/
reports:
junit: "_build${ARTIFACTS_SUFFIX}/meson-logs/testlog.junit.xml"
2019-08-09 22:18:43 +08:00
gimp-debian-gcc:
extends: .gimp-debian-base
rules:
# Custom builds only (web GUI, API or schedules).
- if: '$GIMP_CI_MESON_GCC != null'
needs: ["deps-debian-gcc"]
variables:
CC: "ccache gcc"
CXX: "ccache gcc"
2020-01-03 07:19:10 +08:00
script:
- meson setup .. -Dprefix="${GIMP_PREFIX}"
- ninja
- ninja test
2020-01-03 07:19:10 +08:00
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
gimp-debian-raster-icons:
extends: .gimp-debian-base
rules:
# Custom builds only (web GUI, API or schedules).
- if: '$GIMP_CI_RASTER_ICONS != null'
script:
- meson setup .. -Dprefix="${GIMP_PREFIX}"
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
-Dvector-icons=false
- ninja
- ninja test
include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml'
packaging-flatpak-x64:
# See: https://gitlab.gnome.org/GNOME/Initiatives/-/wikis/DevOps-with-Flatpak
# XXX This job is mostly the same as .flatpak job of
# flatpak_ci_initiative.yml so far, except that we removed the
# automatic tests since rebuilding plug-ins was not working and
# one of the test (save-and-export) requires plug-ins to be built.
extends: .default
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_FLATPAK != null'
# Merge requests with appropriate label.
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Flatpak package.*/'
needs: ["gimp-debian-x64"]
stage: packaging
tags:
- flatpak
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
variables:
GIT_SUBMODULE_STRATEGY: normal
# Replace with your manifest path
MANIFEST_PATH: "build/flatpak/org.gimp.GIMP-nightly.json"
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
# Replace with your application name, as written in the manifest
FLATPAK_MODULE: "gimp"
APP_ID: "org.gimp.GIMP"
BUNDLE: "gimp-git.flatpak"
cache:
- key: "$CI_JOB_NAME"
paths:
- '.flatpak-builder/downloads'
- '.flatpak-builder/git'
- key: "$CI_JOB_NAME"
paths:
- '.flatpak-builder/cache'
- '.flatpak-builder/ccache'
before_script:
# Report the installed versions of the runtime
- flatpak info org.gnome.Platform
- flatpak info org.gnome.Sdk
# Install LLVM/Clang
- flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo
- flatpak install --user flathub org.freedesktop.Sdk.Extension.llvm17 -y
# Print the date, since appstream depends on local timezone
- date && date -u
# Get pre-configured manifest from Debian job
- cp _build${ARTIFACTS_SUFFIX}/build/flatpak/*json build/flatpak/
# GNOME script to customize the manifest
- rewrite-flatpak-manifest ${MANIFEST_PATH} ${FLATPAK_MODULE} ${CONFIG_OPTS}
script:
# Build deps and GIMP
# (Our script is too long for Gitlab and no complete output would be collected
# To make debugging actually possible, let's save logs as a file.)
- flatpak-builder --user --disable-rofiles-fuse flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
2>&1 | tee flatpak-builder.log
# Generate a Flatpak bundle
- flatpak build-bundle repo ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${APP_ID} ${BRANCH}
- tar cf repo.tar repo/
artifacts:
expose_as: 'Linux flatpak'
paths:
- flatpak-builder.log
# These are the same as flatpak_ci_initiative.yml as according to
# docs, key values are not merged but replaced.
- gimp-git.flatpak
- repo.tar
- '.flatpak-builder/build/gimp/_flatpak_build/meson-logs/meson-log.txt'
- '.flatpak-builder/build/gimp/_flatpak_build/meson-logs/testlog.txt'
expire_in: 1 week
## WINDOWS 64-bit CI (cross-build crossroad) ##
.win-cross:
extends: .default
variables:
# Needed because by default, Debian has now changed
# "sysconfig.get_default_scheme()" from "posix_prefix" to "posix_local" which
# adds a local/ folder to the install prefix of setup.py. This environment
# variable overrides this behavior.
DEB_PYTHON_INSTALL_LAYOUT: "deb"
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
cache:
key: $CI_JOB_NAME
paths:
- .cache/crossroad/
.win-x64-cross:
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
# On merge requests.
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
# On commits except tags.
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
deps-win-x64-cross:
extends: .win-cross
rules:
- !reference [.win-x64-cross, rules]
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
needs: ["image-debian-x64"]
stage: dependencies
image: $CI_REGISTRY_IMAGE:build-debian-latest
before_script:
- apt-get install -y --no-install-recommends
wine
wine64
- git clone --depth=${GIT_DEPTH} https://gitlab.freedesktop.org/crossroad/crossroad.git
- cd crossroad
- ./setup.py install --prefix=`pwd`/../.local
- cd ..
- export PATH="`pwd`/.local/bin:$PATH"
script:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- crossroad w64 gimp --run="build/windows/gitlab-ci/1_build-deps-crossroad.sh"
artifacts:
paths:
- .local/
- _deps/_babl/_build-x64-cross/
- _deps/_gegl/_build-x64-cross/
expire_in: 2 hours
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
gimp-win-x64-cross:
extends: .win-cross
rules:
- !reference [.win-x64-cross, rules]
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
needs: ["deps-win-x64-cross", "gimp-debian-x64"]
stage: gimp
image: $CI_REGISTRY_IMAGE:build-debian-latest
before_script:
- git submodule update --init
# So that we can use gimp-console from gimp-debian-x64 project.
- GIMP_APP_VERSION=$(grep GIMP_APP_VERSION _build${ARTIFACTS_SUFFIX}/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/')
- mkdir bin
- echo "#!/bin/sh" > bin/gimp-console-$GIMP_APP_VERSION
- gcc -print-multi-os-directory | grep . && LIB_DIR=$(gcc -print-multi-os-directory | sed 's/\.\.\///g') || LIB_DIR="lib"
- gcc -print-multiarch | grep . && LIB_SUBDIR=$(echo $(gcc -print-multiarch)'/')
- echo export LD_LIBRARY_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" >> bin/gimp-console-$GIMP_APP_VERSION
- echo export GI_TYPELIB_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}girepository-1.0${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}" >> bin/gimp-console-$GIMP_APP_VERSION
- echo "${GIMP_PREFIX}/bin/gimp-console-$GIMP_APP_VERSION \"\$@\"" >> bin/gimp-console-$GIMP_APP_VERSION
- chmod u+x bin/gimp-console-$GIMP_APP_VERSION
- export PATH="`pwd`/bin:$PATH"
# For crossroad
- export PATH="`pwd`/.local/bin:$PATH"
script:
- crossroad w64 gimp --run="build/windows/gitlab-ci/2_build-gimp-crossroad.sh"
artifacts:
paths:
- _build-x64-cross/
- _install-x64-cross/
expire_in: 1 day
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
packaging-win-x64-nightly:
extends: .win-cross
rules:
- !reference [.win-x64-cross, rules]
needs: ["gimp-win-x64-cross"]
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
stage: packaging
variables:
BUILD_TYPE: "CI_CROSS"
CROSSROAD_PLATFORM: "w64"
cache: []
before_script:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- apt-get update
- apt-get install -y --no-install-recommends
binutils
binutils-mingw-w64-x86-64
file
libglib2.0-bin
python3
script:
- bash -x build/windows/gitlab-ci/3_package-gimp-uni_base.sh
- cd gimp-x64
- bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh
artifacts:
expose_as: 'Windows zip'
paths:
- gimp-x64/
- done-dll.list
expire_in: 2 days
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
## WINDOWS 32-bit CI (cross-build crossroad) ##
.win-x86-cross:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
rules:
# Custom builds only (web GUI, API or schedules).
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
deps-win-x86-cross:
extends: .win-cross
rules:
- !reference [.win-x86-cross, rules]
needs: ["image-debian-x64"]
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
stage: dependencies
image: $CI_REGISTRY_IMAGE:build-debian-latest
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
before_script:
- apt-get update
- apt-get install -y --no-install-recommends
wine
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- git clone --depth=${GIT_DEPTH} https://gitlab.freedesktop.org/crossroad/crossroad.git
- cd crossroad
- ./setup.py install --prefix=`pwd`/../.local
- cd ..
- export PATH="`pwd`/.local/bin:$PATH"
script:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- crossroad w32 gimp --run="build/windows/gitlab-ci/1_build-deps-crossroad.sh"
artifacts:
paths:
- .local/
- _deps/_babl/_build-x86-cross/
- _deps/_gegl/_build-x86-cross/
expire_in: 2 hours
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
gimp-win-x86-cross:
extends: .win-cross
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
rules:
- !reference [.win-x86-cross, rules]
needs: ["deps-win-x86-cross", "gimp-win-x64-cross", "gimp-debian-x64"]
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
stage: gimp
image: $CI_REGISTRY_IMAGE:build-debian-latest
cache: []
before_script:
- git submodule update --init
# So that we can use gimp-console from gimp-debian-x64 project.
- GIMP_APP_VERSION=$(grep GIMP_APP_VERSION _build${ARTIFACTS_SUFFIX}/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/')
- mkdir bin
- echo "#!/bin/sh" > bin/gimp-console-$GIMP_APP_VERSION
- gcc -print-multi-os-directory | grep . && LIB_DIR=$(gcc -print-multi-os-directory | sed 's/\.\.\///g') || LIB_DIR="lib"
- gcc -print-multiarch | grep . && LIB_SUBDIR=$(echo $(gcc -print-multiarch)'/')
- echo export LD_LIBRARY_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" >> bin/gimp-console-$GIMP_APP_VERSION
- echo export GI_TYPELIB_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}girepository-1.0${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}" >> bin/gimp-console-$GIMP_APP_VERSION
- echo "${GIMP_PREFIX}/bin/gimp-console-$GIMP_APP_VERSION \"\$@\"" >> bin/gimp-console-$GIMP_APP_VERSION
- chmod u+x bin/gimp-console-$GIMP_APP_VERSION
- export PATH="`pwd`/bin:$PATH"
# For crossroad
- export PATH="`pwd`/.local/bin:$PATH"
script:
- crossroad w32 gimp --run="build/windows/gitlab-ci/2_build-gimp-crossroad.sh"
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
artifacts:
paths:
- _build-x86-cross/
- _install-x86-cross/
expire_in: 1 day
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
packaging-win-x86-nightly:
extends: .win-cross
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
rules:
- !reference [.win-x86-cross, rules]
needs: ["gimp-win-x86-cross"]
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
stage: packaging
variables:
BUILD_TYPE: "CI_CROSS"
CROSSROAD_PLATFORM: "w32"
cache: []
before_script:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- apt-get update
- apt-get install -y --no-install-recommends
binutils
binutils-mingw-w64-i686
file
libglib2.0-bin
python3
script:
- bash -x build/windows/gitlab-ci/3_package-gimp-uni_base.sh
- cd gimp-x86
- bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh
artifacts:
paths:
- gimp-x86/
- done-dll.list
expire_in: 2 days
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
## WINDOWS Aarch64 CI (native MSYS2) ##
.win:
extends: .default
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_WIN_INSTALLER != null'
# Merge requests with appropriate label.
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
# On releases.
- if: '$CI_COMMIT_TAG != null'
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
variables:
BUILD_TYPE: "CI_NATIVE"
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
CHERE_INVOKING: "yes"
before_script:
- New-Item -Path .\_ccache -ItemType Directory -Force
.win-a64:
extends: .win
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_MSYS2_WIN_AARCH64 != null'
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
tags:
- windows-aarch64
variables:
MSYSTEM: "CLANGARM64"
before_script:
# Verification to prevent the job from failing because stuck pacman (ARM only)
- $stuck = Test-Path -Path "C:\msys64\var\lib\pacman\db.lck" -PathType Leaf
- if ($stuck -eq "True") {
Remove-Item -Force -Path "C:\msys64\var\lib\pacman\db.lck";
Write-Output "Cleaned previous stuck pacman" }
- taskkill /F /FI "MODULES eq msys-2.0.dll"
- Start-Job -ScriptBlock{sleep 90; taskkill /t /F /IM "pacman.exe"}
deps-win-a64:
extends: .win-a64
# GitLab don't support extending 'rules'
rules:
- !reference [.win, rules]
- !reference [.win-a64, rules]
needs: []
stage: dependencies
script:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/1_build-deps-msys2.sh"
artifacts:
paths:
- _install-a64/
expire_in: 2 hours
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
gimp-win-a64:
extends: .win-a64
# GitLab don't support extending 'rules'
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
rules:
- !reference [.win, rules]
- !reference [.win-a64, rules]
needs: ["deps-win-a64"]
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
stage: gimp
script:
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/2_build-gimp-msys2.sh"
artifacts:
paths:
- _install-a64/
- _build-a64/build/windows/installer/
- _build-a64/meson-*/
# Needed by 4_dist-gimp-inno.ps1 in dist-installer-weekly
- _build-a64/config.h
expire_in: 1 day
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
packaging-win-a64:
extends: .win-a64
# GitLab don't support extending 'rules'
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
rules:
- !reference [.win, rules]
- !reference [.win-a64, rules]
needs: ["gimp-win-a64"]
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
stage: packaging
cache: []
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
script:
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/3_package-gimp-uni_base.sh"
- cd gimp-a64
- C:\msys64\usr\bin\bash -lc "bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh"
artifacts:
paths:
- gimp-a64/
# Just passing-through splash and language files for the Windows installer.
- _build-a64/build/windows/installer/
# Needed by 4_dist-gimp-inno.ps1 in dist-installer-weekly
- _build-a64/config.h
- done-dll.list
expire_in: 1 day
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
## WINDOWS x86_64 CI (native MSYS2) ##
.win-x64:
extends: .win
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_MSYS2_WIN64 != null'
tags:
- win32-ps
variables:
MSYSTEM: "CLANG64"
deps-win-x64:
extends: .win-x64
# GitLab don't support extending 'rules'
rules:
- !reference [.win, rules]
- !reference [.win-x64, rules]
needs: []
stage: dependencies
script:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/1_build-deps-msys2.sh"
artifacts:
paths:
- _install-x64/
expire_in: 2 hours
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
gimp-win-x64:
extends: .win-x64
# GitLab don't support extending 'rules'
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
rules:
- !reference [.win, rules]
- !reference [.win-x64, rules]
needs: ["deps-win-x64"]
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
stage: gimp
script:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/2_build-gimp-msys2.sh"
artifacts:
paths:
- _install-x64/
- _build-x64/meson-*/
expire_in: 1 day
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
packaging-win-x64:
extends: .win-x64
# GitLab don't support extending 'rules'
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
rules:
- !reference [.win, rules]
- !reference [.win-x64, rules]
needs: ["gimp-win-x64"]
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
stage: packaging
cache: []
script:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/3_package-gimp-uni_base.sh"
- cd gimp-x64
- C:\msys64\usr\bin\bash -lc "bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh"
artifacts:
paths:
- gimp-x64/
- done-dll.list
expire_in: 1 day
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
## WINDOWS x86 CI (native MSYS2) ##
.win-x86:
extends: .win
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_MSYS2_WIN32 != null'
tags:
- win32-ps
variables:
MSYSTEM: "MINGW32"
CC: "ccache cc"
CXX: "ccache c++"
deps-win-x86:
extends: .win-x86
# GitLab don't support extending 'rules'
rules:
- !reference [.win, rules]
- !reference [.win-x86, rules]
needs: []
stage: dependencies
script:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/1_build-deps-msys2.sh"
artifacts:
paths:
- _install-x86/
expire_in: 2 hours
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
gimp-win-x86:
extends: .win-x86
# GitLab don't support extending 'rules'
rules:
- !reference [.win, rules]
- !reference [.win-x86, rules]
needs: ["deps-win-x86"]
stage: gimp
script:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/2_build-gimp-msys2.sh"
artifacts:
paths:
- _install-x86/
- _build-x86/meson-*/
expire_in: 1 day
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
packaging-win-x86:
extends: .win-x86
# GitLab don't support extending 'rules'
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
rules:
- !reference [.win, rules]
- !reference [.win-x86, rules]
needs: ["gimp-win-x86"]
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
stage: packaging
cache: []
script:
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/3_package-gimp-uni_base.sh"
- cd gimp-x86
- C:\msys64\usr\bin\bash -lc "bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh"
artifacts:
paths:
- gimp-x86/
- done-dll.list
expire_in: 1 day
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
## Ready-to-distribute ##
gitlab-ci, build/windows: Unify CI jobs wording Debian changes: - Since autotools has gone, we don't need to specify 'meson' in the debian job and others. - The "INSTALL_PREFIX" was renamed for the more usual "GIMP_PREFIX" and the meson sintax of Debian jobs was also updated. Windows changes: - Then, clarify that the win64-nightly and win32-nightly jobs are, in fact, in the 'packaging' step, since we don't really "distribute" GIMP in .zip and the commands are almost the same of the packaging .SH script, without scripted optimizations for Inno Installer (or future .MSIX), crucial for distribution. - We don't need to specify "native" sufix in any build since they are the rule and cross builds are the exception. General changes: - The job names was changed to be more consistent and in accordance with the folders present in the artifacts. - The 'nightly' sufix was removed from the Inno Windows Installer job and others, since this doesn't reflect the real build frequency. - The scripts filenames are altered to stay "in order". This is not essential but ultra convenient since it is easy to view and search. (The -uni suffix is explained in a further commit) - All artifacts names now have the commit to avoid apparently duplicate files when downloading same step artifacts from different projects. - Finally, rearrange the order of jobs rationally: first the OSes and archs (from the most free and modern to the most closed and legacy), then the stages (from 'prepare' to 'analysis'), ending with the frequency of jobs (from the most frequent, called at each push, to the least/weekly). Overall, this changes, although difficult to review at the first sight, will avoid in the future quite "dumb" issues like: GNOME/gimp#10195
2023-12-08 04:12:44 +08:00
sources-debian:
extends: .default
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_SOURCES != null'
# On commits.
- if: '$CI_PIPELINE_SOURCE == "push"'
# On releases.
- if: '$CI_COMMIT_TAG != null'
needs: ["gimp-debian-x64"]
stage: distribution
cache: []
script:
- mv _build${ARTIFACTS_SUFFIX}/meson-dist/gimp-*.tar.xz .
- FILENAME=`ls gimp-*.tar.xz` &&
sha256sum gimp-*.tar.xz > ${FILENAME}.SHA256SUMS &&
sha512sum gimp-*.tar.xz > ${FILENAME}.SHA512SUMS
artifacts:
paths:
- gimp-*.tar.xz
- gimp-*.tar.xz.SHA256SUMS
- gimp-*.tar.xz.SHA512SUMS
expire_in: 2 days
dev-docs:
extends: .default
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_SOURCES != null'
# On commits.
- if: '$CI_PIPELINE_SOURCE == "push"'
# On releases.
- if: '$CI_COMMIT_TAG != null'
needs: ["deps-debian-x64", "gimp-debian-x64"]
stage: distribution
image: $CI_REGISTRY_IMAGE:build-debian-latest
cache: []
script:
- BABL_VER=$(grep BABL_VERSION _babl/_build${ARTIFACTS_SUFFIX}/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/') &&
DIR_NAME=babl-api-docs-$BABL_VER &&
mkdir $DIR_NAME &&
mv "${GIMP_PREFIX}/share/doc/babl-$BABL_API_VER" $DIR_NAME/ &&
TAR_NAME="$DIR_NAME.tar.xz" &&
tar --dereference -cJf ${TAR_NAME} $DIR_NAME &&
sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS &&
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_MIN_VER=$(grep GEGL_MINOR_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${ARTIFACTS_SUFFIX}/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') &&
GEGL_VER="$GEGL_MAJ_VER.$GEGL_MIN_VER.$GEGL_MIC_VER" &&
GEGL_API_VER="$GEGL_MAJ_VER.$GEGL_MIN_VER" &&
DIR_NAME=gegl-api-docs-$GEGL_VER &&
mkdir $DIR_NAME &&
mv "${GIMP_PREFIX}/share/doc/gegl-$GEGL_API_VER" $DIR_NAME/ &&
TAR_NAME="$DIR_NAME.tar.xz" &&
tar --dereference -cJf ${TAR_NAME} $DIR_NAME &&
sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS &&
sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS
- GIMP_VER=$(grep GIMP_VERSION _build${ARTIFACTS_SUFFIX}/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') &&
APP_VER=$(echo $GIMP_VER | sed 's/\([0-9]\+\.[0-9]\+\)\..*/\1/') &&
DIR_NAME=gimp-api-docs-$GIMP_VER &&
mkdir $DIR_NAME &&
mv "${GIMP_PREFIX}/share/doc/gimp-$APP_VER" $DIR_NAME/reference &&
mv _build${ARTIFACTS_SUFFIX}/devel-docs/g-ir-docs $DIR_NAME/ &&
TAR_NAME="$DIR_NAME.tar.xz" &&
tar --dereference -cJf ${TAR_NAME} $DIR_NAME &&
sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS &&
sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS
artifacts:
paths:
- babl-api-docs-*.tar.xz
- babl-api-docs-*.tar.xz.SHA256SUMS
- babl-api-docs-*.tar.xz.SHA512SUMS
- gegl-api-docs-*.tar.xz
- gegl-api-docs-*.tar.xz.SHA256SUMS
- gegl-api-docs-*.tar.xz.SHA512SUMS
- gimp-api-docs-*.tar.xz
- gimp-api-docs-*.tar.xz.SHA256SUMS
- gimp-api-docs-*.tar.xz.SHA512SUMS
expire_in: 2 days
dist-flatpak-weekly:
extends: '.publish_nightly'
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_FLATPAK != null'
needs: ["packaging-flatpak-x64"]
stage: distribution
dist-installer-weekly:
extends: .win
# GitLab don't support extending 'rules'
rules:
- !reference [.win, rules]
needs: ["packaging-win-a64", "packaging-win-x64", "packaging-win-x86"]
stage: distribution
tags:
- win32-ps
script:
- build/windows/gitlab-ci/4_dist-gimp-inno.ps1 | Out-File -FilePath installer.log
artifacts:
expose_as: 'Windows exe'
paths:
- build/windows/installer/_Output/
- installer.log
expire_in: 1 week
## Analysis ##
clang-format:
only:
- merge_requests
needs: []
stage: analysis
before_script:
- apt-get update
- apt-get install -y clang-format
git
script:
- .gitlab/run_style_check_diff.sh
allow_failure: true
artifacts:
when: on_failure
paths: ['fetch_upstream.log', 'fetch_origin.log']
expire_in: 1 week
cppcheck:
extends: .default
rules:
# Custom builds only (web GUI, API or schedules).
- if: '$GIMP_CI_CPPCHECK != null'
needs: []
stage: analysis
cache: []
before_script:
- apt-get update
- apt-get install -y cppcheck
script:
- cppcheck -q -j8 --enable=all --force --output-file=cppcheck.xml --xml --xml-version=2
-i _build-x64 -i _build-x86 -i _deps -i _install-x64 -i _install-x86 -i .local -i .cache .
- mkdir report
- cppcheck-htmlreport --source-dir=. --title=gimp --file=cppcheck.xml --report-dir=report
artifacts:
paths:
- report
expire_in: 1 week