2021-05-17 20:34:29 +08:00
|
|
|
# Default commit CI should only run the following pipelines:
|
2024-03-28 02:20:25 +08:00
|
|
|
# - Linux build (base & fast)
|
|
|
|
# - Win crossbuild (base & fast)
|
2024-04-30 17:50:58 +08:00
|
|
|
# - Execution tests (dynamic code analysis)
|
2021-05-17 20:34:29 +08:00
|
|
|
# Scheduled CI ($CI_PIPELINE_SOURCE == "schedule") will run regularly:
|
2024-03-28 02:20:25 +08:00
|
|
|
# - Linux GCC build (rare usefulness)
|
|
|
|
# - Linux build without vector icons (rare usefulness)
|
|
|
|
# - Linux Flatpak build (base but slow)
|
2023-11-18 00:08:07 +08:00
|
|
|
# - Win builds: Inno Windows installer and .msixbundle (base but slow)
|
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)
|
2021-05-17 20:34:29 +08:00
|
|
|
# Releases ($CI_COMMIT_TAG != null) should run only:
|
2024-03-28 02:20:25 +08:00
|
|
|
# - Source tarball (base & fast)
|
|
|
|
# - Developer documentation (base & fast)
|
2023-11-18 00:08:07 +08:00
|
|
|
# - Win builds: Inno Windows installer and .msixupload (base but slow)
|
2021-05-17 20:34:29 +08:00
|
|
|
#
|
|
|
|
# To force step-specific pipelines without waiting for commits and/or
|
|
|
|
# pipelines, these are the variable you should set:
|
2024-03-28 02:20:25 +08:00
|
|
|
# - GIMP_CI_MESON_CLANG: trigger the Debian Clang build with AppImage artifact.
|
|
|
|
# - GIMP_CI_MESON_GCC: trigger the Debian GCC build with AppImage artifact.
|
|
|
|
# - GIMP_CI_RASTER_ICONS: trigger the Debian Clang build with AppImage artifact without vector icons.
|
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_CROSSROAD_WIN64: trigger the crossroad build for Win 64-bit.
|
|
|
|
# - GIMP_CI_MSYS2_WIN_AARCH64: trigger the native MSYS2 build for Win Aarch64.
|
2021-05-17 20:34:29 +08:00
|
|
|
# - 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.
|
gitlab-ci: Move 'analysis' stage to a more "mainstream" position
I suppose the intention of having this stage at the end was to make clear: no
job depends on it. However, this place is not common or ideal but one of two:
1) before building, which is more linear; or 2) after building (the choosen)
even if this isn't dynamic analysis (tests), since they are both related and
some compilers and build systems do static analysis. Anyway, not after dist.
The new place is a bit more clear to devs used at "build, test, deploy" praxis
and maybe will be now better noticed by the existing devs before distributing.
It's not perfect, since I explained above that there are two places/approaches.
Obviously, the stage continues to be OPTIONAL to pass, nothing was changed.
---
Also, dropped the deprecated "only:" (in clang-format job) in favor of "rules:"
and made the artifacts paths of clang-format and cppcheck more consistent.
2024-04-20 09:28:16 +08:00
|
|
|
# - GIMP_CI_CPPCHECK: trigger cppcheck static analysis.
|
2024-03-28 02:20:25 +08:00
|
|
|
# - GIMP_CI_SOURCES: trigger the Debian Clang build and the source tarball job.
|
2024-04-16 08:12:39 +08:00
|
|
|
# - GIMP_CI_FLATPAK: trigger the flatpak build and 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
|
|
|
# - GIMP_CI_WIN_INSTALLER: trigger all native MSYS2 builds then creates Inno Windows installer.
|
2023-11-18 00:08:07 +08:00
|
|
|
# - GIMP_CI_MS_STORE: trigger arm64 and x64 native MSYS2 builds then creates a .msixbundle.
|
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
|
|
|
|
2024-04-25 08:00:39 +08:00
|
|
|
# Make pipelines auto cancelable when explicity set (e.g. in 'rules')
|
|
|
|
# GitLab is quite sensitive about the "if" order so we organize them
|
|
|
|
# in a way to avoid as much as possible hardcoding and leaks in "rules"
|
2024-04-16 18:50:35 +08:00
|
|
|
workflow:
|
|
|
|
auto_cancel:
|
|
|
|
on_new_commit: interruptible
|
|
|
|
|
2024-04-25 08:00:39 +08:00
|
|
|
## On merge requests.
|
|
|
|
.pipeline_merge: &CI_MERGE
|
|
|
|
if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
2024-04-16 18:50:35 +08:00
|
|
|
interruptible: true
|
2024-04-25 08:00:39 +08:00
|
|
|
variables: {}
|
|
|
|
|
|
|
|
## Merge requests with appropriate label.
|
|
|
|
#'interruptible: true' needs to be hardcoded
|
|
|
|
|
|
|
|
## On commits except tags.
|
|
|
|
.pipeline_commit: &CI_COMMIT
|
|
|
|
if: '$CI_PIPELINE_SOURCE == "push" && $CI_OPEN_MERGE_REQUESTS == null && $CI_COMMIT_TAG == null'
|
|
|
|
interruptible: true
|
|
|
|
variables: {}
|
|
|
|
|
|
|
|
## On releases.
|
|
|
|
.pipeline_release: &CI_RELEASE
|
|
|
|
if: '$CI_COMMIT_TAG != null'
|
|
|
|
interruptible: false
|
|
|
|
variables: {}
|
|
|
|
|
|
|
|
.default:
|
|
|
|
## Custom builds though web GUI, API or schedules.
|
|
|
|
interruptible: false
|
|
|
|
|
2024-05-01 00:07:12 +08:00
|
|
|
|
2024-04-25 08:00:39 +08:00
|
|
|
# Common jobs behavior
|
2024-04-16 18:50:35 +08:00
|
|
|
retry:
|
|
|
|
max: 1
|
|
|
|
when:
|
|
|
|
- 'runner_system_failure'
|
|
|
|
- 'scheduler_failure'
|
2024-04-14 18:48:25 +08:00
|
|
|
# Default Docker image (unless otherwise defined)
|
|
|
|
image: debian:bookworm
|
2024-04-12 06:17:57 +08:00
|
|
|
# Caching support
|
|
|
|
variables:
|
|
|
|
CCACHE_BASEDIR: "$CI_PROJECT_DIR"
|
|
|
|
CCACHE_DIR: "$CI_PROJECT_DIR/_ccache"
|
|
|
|
CC: "ccache clang"
|
|
|
|
CXX: "ccache clang++"
|
2024-06-01 00:09:33 +08:00
|
|
|
CC_LD: lld
|
|
|
|
CXX_LD: lld
|
2024-04-12 06:17:57 +08:00
|
|
|
cache:
|
2024-03-28 02:20:25 +08:00
|
|
|
key: ${CI_JOB_NAME}${VARIANT}
|
2024-04-12 06:17:57 +08:00
|
|
|
paths:
|
|
|
|
- _ccache/
|
2024-04-14 03:22:05 +08:00
|
|
|
# Universal variables (works in all POSIX OSes and archs)
|
2024-04-12 06:17:57 +08:00
|
|
|
before_script:
|
|
|
|
- export PATH="$GIMP_PREFIX/bin:$PATH"
|
2024-05-19 18:55:17 +08:00
|
|
|
- gcc -print-multi-os-directory 2>/dev/null | grep ./ && LIB_DIR=$(gcc -print-multi-os-directory | sed 's/\.\.\///g') || LIB_DIR="lib"
|
2024-04-21 22:42:18 +08:00
|
|
|
- gcc -print-multiarch 2>/dev/null | grep . && LIB_SUBDIR=$(echo $(gcc -print-multiarch)'/')
|
2024-04-12 06:17:57 +08:00
|
|
|
- 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:
|
2024-04-21 01:34:14 +08:00
|
|
|
name: "${CI_JOB_NAME}${VARIANT}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
2024-04-12 06:17:57 +08:00
|
|
|
when: always
|
|
|
|
|
2019-07-29 07:11:44 +08:00
|
|
|
variables:
|
2024-04-21 07:17:57 +08:00
|
|
|
# Common cloning procedure
|
2019-10-02 02:36:09 +08:00
|
|
|
GIT_DEPTH: "1"
|
2024-04-14 06:06:57 +08:00
|
|
|
GIT_SUBMODULE_STRATEGY: recursive
|
2024-04-21 07:17:57 +08:00
|
|
|
# CI-wide Debian variables
|
2024-07-20 06:54:58 +08:00
|
|
|
GIMP_PREFIX: "${CI_PROJECT_DIR}/_install"
|
2024-06-14 09:25:29 +08:00
|
|
|
# Enable colorful output when supported (e.g. ninja, cppcheck)
|
|
|
|
CLICOLOR_FORCE: "1"
|
2019-07-29 07:11:44 +08:00
|
|
|
|
2024-04-14 18:48:25 +08:00
|
|
|
|
2024-05-01 00:07:12 +08:00
|
|
|
stages:
|
|
|
|
- prepare
|
|
|
|
- dependencies
|
|
|
|
- gimp
|
|
|
|
- analysis
|
|
|
|
- distribution
|
|
|
|
|
2024-04-14 18:48:25 +08:00
|
|
|
## prepare build-oriented Docker images ##
|
2020-05-30 06:41:22 +08:00
|
|
|
|
2024-04-21 01:34:14 +08:00
|
|
|
.debian:
|
2021-05-06 21:38:23 +08:00
|
|
|
rules:
|
2024-04-25 08:00:39 +08:00
|
|
|
- <<: *CI_MERGE
|
|
|
|
- <<: *CI_COMMIT
|
|
|
|
- if: '$GIMP_CI_MESON_CLANG != null'
|
|
|
|
variables: {}
|
2024-03-28 19:41:26 +08:00
|
|
|
- if: '$GIMP_CI_MESON_GCC != null'
|
2024-04-21 01:34:14 +08:00
|
|
|
variables:
|
|
|
|
CC: "ccache cc"
|
|
|
|
CXX: "ccache c++"
|
2024-06-01 00:09:33 +08:00
|
|
|
CC_LD: bfd
|
|
|
|
CXX_LD: bfd
|
2024-04-21 01:34:14 +08:00
|
|
|
VARIANT: "-gcc"
|
2022-01-27 23:32:02 +08:00
|
|
|
- if: '$GIMP_CI_RASTER_ICONS != null'
|
2024-04-21 01:34:14 +08:00
|
|
|
variables:
|
|
|
|
MESON_OPTIONS: "-Dvector-icons=false"
|
|
|
|
VARIANT: "-raster"
|
2024-03-28 19:41:26 +08:00
|
|
|
- if: '$GIMP_CI_CROSSROAD_WIN64 != 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'
|
2024-04-25 08:00:39 +08:00
|
|
|
- <<: *CI_RELEASE
|
2024-04-21 01:34:14 +08:00
|
|
|
|
|
|
|
image-debian-x64:
|
|
|
|
rules:
|
|
|
|
- !reference [.debian, rules]
|
2020-05-30 06:41:22 +08:00
|
|
|
stage: prepare
|
|
|
|
image:
|
|
|
|
name: gcr.io/kaniko-project/executor:debug
|
|
|
|
entrypoint: [""]
|
2024-04-12 06:17:57 +08:00
|
|
|
variables:
|
|
|
|
GIT_STRATEGY: none
|
|
|
|
cache: {}
|
2020-05-30 06:41:22 +08:00
|
|
|
script:
|
2022-04-01 20:43:33 +08:00
|
|
|
- export container=docker
|
2020-05-30 06:41:22 +08:00
|
|
|
- mkdir -p /kaniko/.docker
|
|
|
|
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
|
2023-06-11 06:30:45 +08:00
|
|
|
- echo "FROM debian:bookworm" > Dockerfile
|
2020-05-30 06:41:22 +08:00
|
|
|
- echo "RUN apt-get update" >> Dockerfile
|
|
|
|
- echo "RUN apt-get install -y --no-install-recommends \\" >> Dockerfile
|
2024-07-29 03:38:10 +08:00
|
|
|
# 'ca-certificates' is NOT a gimp dep, it is installed only to our Docker image work
|
|
|
|
- echo "ca-certificates
|
2024-04-12 06:17:57 +08:00
|
|
|
ccache
|
|
|
|
clang
|
2024-06-01 00:09:33 +08:00
|
|
|
lld
|
2024-08-02 05:19:47 +08:00
|
|
|
libomp-dev
|
2024-09-08 02:43:30 +08:00
|
|
|
libunwind-dev
|
2024-08-02 05:19:47 +08:00
|
|
|
appstream
|
|
|
|
at-spi2-core
|
2023-06-06 17:27:05 +08:00
|
|
|
desktop-file-utils
|
|
|
|
ffmpeg
|
|
|
|
gettext
|
|
|
|
ghostscript
|
|
|
|
gi-docgen
|
|
|
|
git
|
2024-03-28 02:20:25 +08:00
|
|
|
gjs
|
2023-06-06 17:27:05 +08:00
|
|
|
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
|
2024-09-08 02:43:30 +08:00
|
|
|
libmaxflow-dev
|
2023-06-06 17:27:05 +08:00
|
|
|
libmng-dev
|
|
|
|
libmypaint-dev
|
|
|
|
libopenexr-dev
|
2024-04-22 00:40:41 +08:00
|
|
|
libopenjp2-7-dev
|
2023-06-06 17:27:05 +08:00
|
|
|
libpoppler-glib-dev
|
2024-09-08 02:43:30 +08:00
|
|
|
libqoi-dev
|
2023-06-06 17:27:05 +08:00
|
|
|
libraw-dev
|
|
|
|
libraw20
|
|
|
|
librsvg2-dev
|
|
|
|
libspiro-dev
|
|
|
|
libsuitesparse-dev
|
|
|
|
libtiff-dev
|
|
|
|
libtiff5-dev
|
|
|
|
libtool
|
|
|
|
libumfpack5
|
|
|
|
libwebp-dev
|
|
|
|
libwmf-dev
|
|
|
|
libxmu-dev
|
|
|
|
libxpm-dev
|
|
|
|
luajit
|
2024-09-08 02:43:30 +08:00
|
|
|
lua-lgi
|
2023-06-06 17:27:05 +08:00
|
|
|
meson
|
|
|
|
mypaint-brushes
|
|
|
|
poppler-data
|
|
|
|
python3
|
gitlab-ci, build: create Windows installer files with the Linux build.
The creation of the BMP welcome images for the Windows installer (part of
-Dwindows-installer=true build option) fails in the Windows job. After much
debugging, I could run GIMP, yet it was not enough. One of my hypothesis so far
is that the environment variables for DLLs won't work, since all the DLLs must
be in the same directory as the main binary (though with the WSL thing, I am
unsure, maybe it is still supposed to work), which only happens once GIMP is
installed. So GIMP runs successfully but not plug-ins.
Anyway I wasted too much time working on this and without a local Windows, it
just takes too long (mostly testing thanks to the CI) and is frustrating. Let's
just move to building both the localization files and the images on the main
Debian job (gimp-meson-debian), then use these as dependencies of the
win-installer-nightly job, i.e. when building the installer.
2023-06-28 06:24:41 +08:00
|
|
|
python3-gi
|
2023-06-06 17:27:05 +08:00
|
|
|
valac
|
|
|
|
xauth
|
|
|
|
xsltproc
|
|
|
|
xvfb
|
|
|
|
xz-utils
|
|
|
|
yelp-tools" >> Dockerfile
|
2020-05-30 06:41:22 +08:00
|
|
|
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:build-debian-latest --cache=true --cache-ttl=120h
|
|
|
|
|
2023-06-11 06:30:45 +08:00
|
|
|
## GNU/Linux 64-bit CIs (Debian bookworm) ##
|
2019-11-25 02:41:06 +08:00
|
|
|
|
2024-03-28 02:20:25 +08:00
|
|
|
deps-debian-x64:
|
2024-04-12 06:17:57 +08:00
|
|
|
extends: .default
|
2024-03-28 02:20:25 +08:00
|
|
|
rules:
|
2024-04-21 01:34:14 +08:00
|
|
|
- !reference [.debian, rules]
|
2024-04-12 06:17:57 +08:00
|
|
|
needs: ["image-debian-x64"]
|
2019-10-02 03:36:19 +08:00
|
|
|
stage: dependencies
|
2020-05-30 06:41:22 +08:00
|
|
|
image: $CI_REGISTRY_IMAGE:build-debian-latest
|
2024-04-14 03:22:05 +08:00
|
|
|
script:
|
|
|
|
# Clone babl and GEGL
|
2024-02-19 19:06:15 +08:00
|
|
|
- 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
|
2024-07-28 18:42:02 +08:00
|
|
|
- git clone $babl_branch --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/babl.git
|
|
|
|
- git clone $gegl_branch --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/gegl.git
|
2024-04-14 03:22:05 +08:00
|
|
|
# Build babl and GEGL
|
2024-07-28 18:42:02 +08:00
|
|
|
- mkdir babl/_build && cd babl/_build
|
2024-03-28 19:41:26 +08:00
|
|
|
- meson setup .. -Dprefix="${GIMP_PREFIX}"
|
2024-04-12 06:17:57 +08:00
|
|
|
- ninja
|
|
|
|
- ninja install
|
|
|
|
- ccache --show-stats
|
2024-07-28 18:42:02 +08:00
|
|
|
- mkdir ../../gegl/_build && cd ../../gegl/_build
|
2024-09-08 02:43:30 +08:00
|
|
|
- meson setup .. -Dprefix="${GIMP_PREFIX}" -Dworkshop=true
|
2024-04-12 06:17:57 +08:00
|
|
|
- ninja
|
|
|
|
- ninja install
|
|
|
|
- ccache --show-stats
|
|
|
|
artifacts:
|
|
|
|
paths:
|
2024-07-20 06:54:58 +08:00
|
|
|
- _install/
|
2024-07-28 18:42:02 +08:00
|
|
|
- babl/_build/meson-logs/meson-log.txt
|
|
|
|
- gegl/_build/meson-logs/meson-log.txt
|
2024-04-13 03:20:20 +08:00
|
|
|
expire_in: 2 hours
|
2024-04-12 06:17:57 +08:00
|
|
|
|
2024-03-28 02:20:25 +08:00
|
|
|
gimp-debian-x64:
|
|
|
|
extends: .default
|
2024-04-12 06:17:57 +08:00
|
|
|
rules:
|
2024-04-21 01:34:14 +08:00
|
|
|
- !reference [.debian, rules]
|
2024-04-12 06:17:57 +08:00
|
|
|
needs: ["deps-debian-x64"]
|
2019-07-29 07:11:44 +08:00
|
|
|
stage: gimp
|
2020-05-30 06:41:22 +08:00
|
|
|
image: $CI_REGISTRY_IMAGE:build-debian-latest
|
2019-08-09 22:18:43 +08:00
|
|
|
script:
|
2024-03-28 02:20:25 +08:00
|
|
|
# Check building
|
2024-07-20 06:54:58 +08:00
|
|
|
- mkdir -p _build && cd _build
|
2024-03-28 19:41:26 +08:00
|
|
|
- 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
|
2024-03-28 02:20:25 +08:00
|
|
|
-Drelocatable-bundle=no
|
|
|
|
$MESON_OPTIONS
|
2024-04-12 06:17:57 +08:00
|
|
|
- ninja
|
2024-03-28 02:20:25 +08:00
|
|
|
# Check execution
|
2024-04-12 06:17:57 +08:00
|
|
|
- ninja test
|
2024-03-28 02:20:25 +08:00
|
|
|
# Check source
|
2024-04-21 01:34:14 +08:00
|
|
|
- if [ $(git diff |wc -l) -ne 0 ]; then
|
|
|
|
git diff;
|
|
|
|
exit 1;
|
|
|
|
fi
|
|
|
|
- if [ "$VARIANT" != "-gcc" ] && [ "$VARIANT" != "-raster" ] && [ "$CI_PIPELINE_SOURCE" != "merge_request_event" ]; then
|
2024-03-28 02:20:25 +08:00
|
|
|
ninja dist;
|
2022-08-02 05:17:00 +08:00
|
|
|
fi
|
2024-09-16 18:04:29 +08:00
|
|
|
# Check install
|
|
|
|
- ninja install
|
2024-03-28 02:20:25 +08:00
|
|
|
- cd ..
|
2024-08-31 21:58:01 +08:00
|
|
|
# Make sure that any Debian pipeline is easily testable relocatable on local Debian
|
2024-06-21 01:31:10 +08:00
|
|
|
- bash build/linux/appimage/2_bundle-gimp-appimage.sh
|
2023-05-24 06:38:00 +08:00
|
|
|
artifacts:
|
2024-03-28 02:20:25 +08:00
|
|
|
expose_as: 'Linux appimage'
|
2024-04-12 06:17:57 +08:00
|
|
|
paths:
|
2024-03-28 02:20:25 +08:00
|
|
|
- build/linux/appimage/_Output/
|
2024-07-20 06:54:58 +08:00
|
|
|
- _install/
|
|
|
|
- _build/meson-logs/meson-log.txt
|
|
|
|
- _build/meson-dist/
|
|
|
|
- _build/config.h
|
|
|
|
- _build/devel-docs/
|
2023-05-24 06:38:00 +08:00
|
|
|
reports:
|
2024-07-20 06:54:58 +08:00
|
|
|
junit: "_build/meson-logs/testlog.junit.xml"
|
2024-03-28 02:20:25 +08:00
|
|
|
expire_in: 2 days
|
2023-09-28 19:55:38 +08:00
|
|
|
|
2024-07-07 04:52:17 +08:00
|
|
|
.flatpak-x64:
|
2024-04-13 03:20:20 +08:00
|
|
|
extends: .default
|
2024-01-19 20:54:18 +08:00
|
|
|
rules:
|
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Flatpak package.*/'
|
2024-04-25 08:00:39 +08:00
|
|
|
interruptible: true
|
|
|
|
- if: '$GIMP_CI_FLATPAK != null'
|
2024-04-13 03:20:20 +08:00
|
|
|
tags:
|
|
|
|
- flatpak
|
|
|
|
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
|
2024-07-07 04:52:17 +08:00
|
|
|
|
|
|
|
deps-flatpak-x64:
|
|
|
|
extends: .flatpak-x64
|
|
|
|
rules:
|
|
|
|
- !reference [.flatpak-x64, rules]
|
|
|
|
needs: []
|
|
|
|
stage: dependencies
|
|
|
|
# FIXME: GitLab CI caching does NOT work with flatpak
|
2024-05-21 22:53:34 +08:00
|
|
|
# See: https://gitlab.gnome.org/Infrastructure/Infrastructure/-/issues/1502
|
|
|
|
cache: []
|
|
|
|
# key: ${CI_JOB_NAME}-pkg
|
|
|
|
# paths:
|
2024-07-07 04:52:17 +08:00
|
|
|
# .flatpak-builder/
|
|
|
|
# key: $CI_JOB_NAME
|
|
|
|
# paths:
|
|
|
|
# _ccache/
|
2024-04-14 03:22:05 +08:00
|
|
|
script:
|
2024-05-21 22:53:34 +08:00
|
|
|
- bash build/linux/flatpak/1_build-deps-flatpak.sh
|
2024-01-19 20:54:18 +08:00
|
|
|
artifacts:
|
|
|
|
paths:
|
2024-07-07 04:52:17 +08:00
|
|
|
- .flatpak-builder.tar
|
2024-01-19 20:54:18 +08:00
|
|
|
- flatpak-builder.log
|
2024-07-07 04:52:17 +08:00
|
|
|
- babl-meson-log.tar
|
|
|
|
- gegl-meson-log.tar
|
|
|
|
expire_in: 2 hours
|
|
|
|
|
|
|
|
gimp-flatpak-x64:
|
|
|
|
extends: .flatpak-x64
|
|
|
|
rules:
|
|
|
|
- !reference [.flatpak-x64, rules]
|
|
|
|
needs: ["deps-flatpak-x64"]
|
|
|
|
stage: gimp
|
|
|
|
# FIXME: GitLab CI caching does NOT work with flatpak
|
|
|
|
# See: https://gitlab.gnome.org/Infrastructure/Infrastructure/-/issues/1502
|
|
|
|
cache: []
|
|
|
|
# key: $CI_JOB_NAME
|
|
|
|
# paths:
|
|
|
|
# _ccache/
|
|
|
|
script:
|
|
|
|
- bash build/linux/flatpak/2_build-gimp-flatpak.sh
|
|
|
|
artifacts:
|
|
|
|
paths:
|
2024-04-13 03:20:20 +08:00
|
|
|
- repo.tar
|
2024-07-07 04:52:17 +08:00
|
|
|
- gimp-meson-log.tar
|
2024-04-16 08:12:39 +08:00
|
|
|
expire_in: 2 days
|
2023-09-28 19:55:38 +08:00
|
|
|
|
2021-05-05 07:00:39 +08:00
|
|
|
## WINDOWS 64-bit CI (cross-build crossroad) ##
|
2021-05-02 21:43:25 +08:00
|
|
|
|
2024-04-13 07:33:27 +08:00
|
|
|
.win-cross:
|
|
|
|
extends: .default
|
2024-04-21 01:34:14 +08:00
|
|
|
rules:
|
2024-04-25 08:00:39 +08:00
|
|
|
- <<: *CI_MERGE
|
2024-09-22 18:17:02 +08:00
|
|
|
when: never
|
2024-04-25 08:00:39 +08:00
|
|
|
- <<: *CI_COMMIT
|
2024-09-22 18:17:02 +08:00
|
|
|
when: never
|
2024-04-21 01:34:14 +08:00
|
|
|
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
2024-09-22 18:17:02 +08:00
|
|
|
when: never
|
2024-04-21 01:34:14 +08:00
|
|
|
image: $CI_REGISTRY_IMAGE:build-debian-latest
|
2024-04-13 07:33:27 +08:00
|
|
|
|
|
|
|
deps-win-x64-cross:
|
|
|
|
extends: .win-cross
|
|
|
|
rules:
|
2024-04-21 01:34:14 +08:00
|
|
|
- !reference [.win-cross, rules]
|
2024-04-13 03:20:20 +08:00
|
|
|
needs: ["image-debian-x64"]
|
2019-10-02 03:36:19 +08:00
|
|
|
stage: dependencies
|
2024-05-16 06:29:07 +08:00
|
|
|
variables:
|
|
|
|
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
|
|
|
|
cache:
|
|
|
|
- key: ${CI_JOB_NAME}-pkg
|
|
|
|
paths:
|
|
|
|
- .cache/
|
|
|
|
- !reference [.default, cache]
|
2024-03-28 19:41:26 +08:00
|
|
|
script:
|
2024-06-21 01:31:10 +08:00
|
|
|
- bash build/windows/1_build-deps-crossroad.sh
|
2019-10-02 03:36:19 +08:00
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- .local/
|
2024-07-28 18:42:02 +08:00
|
|
|
- babl/_build-cross/meson-logs/meson-log.txt
|
|
|
|
- gegl/_build-cross/meson-logs/meson-log.txt
|
2024-04-13 03:20:20 +08:00
|
|
|
expire_in: 2 hours
|
2019-09-25 20:27:09 +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-win-x64-cross:
|
2024-04-13 07:33:27 +08:00
|
|
|
extends: .win-cross
|
2021-04-26 23:45:11 +08:00
|
|
|
rules:
|
2024-04-21 01:34:14 +08:00
|
|
|
- !reference [.win-cross, rules]
|
2024-04-13 03:20:20 +08:00
|
|
|
needs: ["deps-win-x64-cross", "gimp-debian-x64"]
|
2019-10-02 03:36:19 +08:00
|
|
|
stage: gimp
|
2024-03-28 19:41:26 +08:00
|
|
|
script:
|
2024-06-21 01:31:10 +08:00
|
|
|
- bash build/windows/2_build-gimp-crossroad.sh
|
2024-04-13 03:20:20 +08:00
|
|
|
artifacts:
|
|
|
|
expose_as: 'Windows zip'
|
|
|
|
paths:
|
|
|
|
- gimp-x64/
|
2024-07-20 06:54:58 +08:00
|
|
|
- _build-cross/meson-logs/meson-log.txt
|
2024-04-13 03:20:20 +08:00
|
|
|
- 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
|
|
|
|
2024-08-16 08:41:54 +08:00
|
|
|
## WINDOWS pipelines (native MSYS2) ##
|
|
|
|
## Since our build pipelines are split (for good reasons) into deps and gimp jobs,
|
|
|
|
## 'matrix' isn't useful yet: https://gitlab.com/gitlab-org/gitlab/-/issues/396845
|
2024-04-11 21:39:21 +08:00
|
|
|
.win:
|
2024-04-12 06:17:57 +08:00
|
|
|
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:
|
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
2024-04-25 08:00:39 +08:00
|
|
|
interruptible: true
|
|
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
|
|
- <<: *CI_RELEASE
|
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:
|
|
|
|
CHERE_INVOKING: "yes"
|
2024-04-14 03:22:05 +08:00
|
|
|
# We use the same universal variables but not directly from PS
|
|
|
|
before_script: []
|
2024-04-11 21:39:21 +08:00
|
|
|
|
2024-08-16 08:41:54 +08:00
|
|
|
## WINDOWS Aarch64 CI (native MSYS2) ##
|
2024-04-11 21:39:21 +08:00
|
|
|
.win-a64:
|
|
|
|
extends: .win
|
|
|
|
rules:
|
2024-04-13 10:00:14 +08:00
|
|
|
- !reference [.win, rules]
|
2023-11-18 00:08:07 +08:00
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Microsoft Store.*/'
|
2024-04-25 08:00:39 +08:00
|
|
|
interruptible: true
|
|
|
|
- if: '$GIMP_CI_MS_STORE != null'
|
|
|
|
- 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
|
2024-04-11 21:39:21 +08:00
|
|
|
variables:
|
|
|
|
MSYSTEM: "CLANGARM64"
|
2024-01-16 01:55:35 +08:00
|
|
|
before_script:
|
2024-04-11 21:39:21 +08:00
|
|
|
# Verification to prevent the job from failing because stuck pacman (ARM only)
|
2024-01-16 18:35:48 +08:00
|
|
|
- $stuck = Test-Path -Path "C:\msys64\var\lib\pacman\db.lck" -PathType Leaf
|
|
|
|
- if ($stuck -eq "True") {
|
2024-02-08 05:42:57 +08:00
|
|
|
Remove-Item -Force -Path "C:\msys64\var\lib\pacman\db.lck";
|
2024-01-16 18:35:48 +08:00
|
|
|
Write-Output "Cleaned previous stuck pacman" }
|
2024-02-08 22:46:19 +08:00
|
|
|
- taskkill /F /FI "MODULES eq msys-2.0.dll"
|
2024-01-16 18:35:48 +08:00
|
|
|
- Start-Job -ScriptBlock{sleep 90; taskkill /t /F /IM "pacman.exe"}
|
2024-04-11 21:39:21 +08:00
|
|
|
|
|
|
|
deps-win-a64:
|
|
|
|
extends: .win-a64
|
|
|
|
rules:
|
|
|
|
- !reference [.win-a64, rules]
|
2024-04-13 03:20:20 +08:00
|
|
|
needs: []
|
2024-04-11 21:39:21 +08:00
|
|
|
stage: dependencies
|
|
|
|
script:
|
2024-06-21 01:31:10 +08:00
|
|
|
- C:\msys64\usr\bin\bash -lc "bash build/windows/1_build-deps-msys2.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:
|
2024-07-20 06:54:58 +08:00
|
|
|
- _install/
|
2024-07-28 18:42:02 +08:00
|
|
|
- babl/_build/meson-logs/meson-log.txt
|
|
|
|
- gegl/_build/meson-logs/meson-log.txt
|
2024-04-13 03:20:20 +08:00
|
|
|
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:
|
2024-04-11 21:39:21 +08:00
|
|
|
extends: .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
|
|
|
rules:
|
2024-04-11 21:39:21 +08:00
|
|
|
- !reference [.win-a64, rules]
|
2024-04-13 03:20:20 +08:00
|
|
|
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:
|
2024-06-21 01:31:10 +08:00
|
|
|
- C:\msys64\usr\bin\bash -lc "bash build/windows/2_build-gimp-msys2.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:
|
2024-04-13 03:20:20 +08:00
|
|
|
- gimp-a64/
|
2024-07-20 06:54:58 +08:00
|
|
|
- _build/meson-logs/meson-log.txt
|
2024-04-13 03:20:20 +08:00
|
|
|
- done-dll.list
|
2023-11-18 00:08:07 +08:00
|
|
|
# Needed by dist-installer-weekly and dist-store-weekly
|
2024-07-20 06:54:58 +08:00
|
|
|
- _build/config.h
|
|
|
|
- _build/build/windows/installer/
|
|
|
|
- _build/build/windows/store/
|
2024-04-25 01:56:24 +08:00
|
|
|
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 x86_64 CI (native MSYS2) ##
|
|
|
|
|
2024-04-11 21:39:21 +08:00
|
|
|
.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:
|
2024-04-13 10:00:14 +08:00
|
|
|
- !reference [.win, rules]
|
2023-11-18 00:08:07 +08:00
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Microsoft Store.*/'
|
2024-04-25 08:00:39 +08:00
|
|
|
interruptible: true
|
|
|
|
- if: '$GIMP_CI_MS_STORE != null'
|
|
|
|
- if: '$GIMP_CI_MSYS2_WIN64 != 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:
|
|
|
|
- win32-ps
|
2024-04-11 21:39:21 +08:00
|
|
|
variables:
|
|
|
|
MSYSTEM: "CLANG64"
|
|
|
|
|
|
|
|
deps-win-x64:
|
|
|
|
extends: .win-x64
|
|
|
|
rules:
|
|
|
|
- !reference [.win-x64, rules]
|
2024-04-13 03:20:20 +08:00
|
|
|
needs: []
|
2024-04-11 21:39:21 +08:00
|
|
|
stage: dependencies
|
2024-01-16 01:55:35 +08:00
|
|
|
script:
|
2024-06-21 01:31:10 +08:00
|
|
|
- C:\msys64\usr\bin\bash -lc "bash build/windows/1_build-deps-msys2.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:
|
2024-07-20 06:54:58 +08:00
|
|
|
- _install/
|
2024-04-13 03:20:20 +08:00
|
|
|
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:
|
2024-04-11 21:39:21 +08:00
|
|
|
extends: .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
|
|
|
rules:
|
2024-04-11 21:39:21 +08:00
|
|
|
- !reference [.win-x64, rules]
|
2024-04-13 03:20:20 +08:00
|
|
|
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
|
2024-01-16 01:55:35 +08:00
|
|
|
script:
|
2024-06-21 01:31:10 +08:00
|
|
|
- C:\msys64\usr\bin\bash -lc "bash build/windows/2_build-gimp-msys2.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:
|
2024-04-13 03:20:20 +08:00
|
|
|
- gimp-x64/
|
|
|
|
- done-dll.list
|
2024-04-25 01:56:24 +08:00
|
|
|
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 x86 CI (native MSYS2) ##
|
|
|
|
|
2024-04-11 21:39:21 +08:00
|
|
|
.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:
|
2024-04-13 10:00:14 +08:00
|
|
|
- !reference [.win, 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
|
|
|
- if: '$GIMP_CI_MSYS2_WIN32 != null'
|
|
|
|
tags:
|
|
|
|
- win32-ps
|
2024-04-11 21:39:21 +08:00
|
|
|
variables:
|
|
|
|
MSYSTEM: "MINGW32"
|
2024-04-12 06:17:57 +08:00
|
|
|
CC: "ccache cc"
|
|
|
|
CXX: "ccache c++"
|
2024-06-01 00:09:33 +08:00
|
|
|
CC_LD: bfd
|
|
|
|
CXX_LD: bfd
|
2024-04-11 21:39:21 +08:00
|
|
|
|
|
|
|
deps-win-x86:
|
|
|
|
extends: .win-x86
|
|
|
|
rules:
|
|
|
|
- !reference [.win-x86, rules]
|
2024-04-13 03:20:20 +08:00
|
|
|
needs: []
|
2024-04-11 21:39:21 +08:00
|
|
|
stage: dependencies
|
2024-01-16 01:55:35 +08:00
|
|
|
script:
|
2024-06-21 01:31:10 +08:00
|
|
|
- C:\msys64\usr\bin\bash -lc "bash build/windows/1_build-deps-msys2.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:
|
2024-07-20 06:54:58 +08:00
|
|
|
- _install/
|
2024-04-13 03:20:20 +08:00
|
|
|
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:
|
2024-04-11 21:39:21 +08:00
|
|
|
extends: .win-x86
|
2021-04-26 23:45:11 +08:00
|
|
|
rules:
|
2024-04-11 21:39:21 +08:00
|
|
|
- !reference [.win-x86, rules]
|
2024-04-13 03:20:20 +08:00
|
|
|
needs: ["deps-win-x86"]
|
2019-11-25 02:41:06 +08:00
|
|
|
stage: gimp
|
2024-01-16 01:55:35 +08:00
|
|
|
script:
|
2024-06-21 01:31:10 +08:00
|
|
|
- C:\msys64\usr\bin\bash -lc "bash build/windows/2_build-gimp-msys2.sh"
|
2024-08-06 19:47:55 +08:00
|
|
|
# We split 32-bit DWARF symbols here because LLVM-objcopy do NOT support them
|
|
|
|
- C:\msys64\usr\bin\bash -lc "bash build/windows/installer/3_dist-gimp-inno_sym.sh"
|
2019-11-25 02:41:06 +08:00
|
|
|
artifacts:
|
|
|
|
paths:
|
2024-04-13 03:20:20 +08:00
|
|
|
- gimp-x86/
|
|
|
|
- done-dll.list
|
2024-04-25 01:56:24 +08:00
|
|
|
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
|
|
|
|
2020-08-07 22:41:05 +08:00
|
|
|
|
gitlab-ci: Move 'analysis' stage to a more "mainstream" position
I suppose the intention of having this stage at the end was to make clear: no
job depends on it. However, this place is not common or ideal but one of two:
1) before building, which is more linear; or 2) after building (the choosen)
even if this isn't dynamic analysis (tests), since they are both related and
some compilers and build systems do static analysis. Anyway, not after dist.
The new place is a bit more clear to devs used at "build, test, deploy" praxis
and maybe will be now better noticed by the existing devs before distributing.
It's not perfect, since I explained above that there are two places/approaches.
Obviously, the stage continues to be OPTIONAL to pass, nothing was changed.
---
Also, dropped the deprecated "only:" (in clang-format job) in favor of "rules:"
and made the artifacts paths of clang-format and cppcheck more consistent.
2024-04-20 09:28:16 +08:00
|
|
|
## Analysis ##
|
|
|
|
|
2023-11-23 00:56:38 +08:00
|
|
|
file-plug-in-tests:
|
|
|
|
# FIXME: Do we need another job testing this under Windows? MSYS2 usually has
|
|
|
|
# the latest deps. It might be a good idea to test that too, maybe weekly?
|
|
|
|
extends: .default
|
|
|
|
rules:
|
|
|
|
# Don't run on release since the plug-in doesn't get installed in releases
|
|
|
|
- <<: *CI_MERGE
|
|
|
|
- <<: *CI_COMMIT
|
|
|
|
needs: ["deps-debian-x64", "gimp-debian-x64"]
|
|
|
|
stage: analysis
|
2024-04-30 17:50:58 +08:00
|
|
|
image: $CI_REGISTRY_IMAGE:build-debian-latest
|
2023-11-23 00:56:38 +08:00
|
|
|
variables:
|
|
|
|
GIMP_TESTS_DATA_FOLDER: "$CI_PROJECT_DIR/_data/gimp-test-images/"
|
|
|
|
GIMP_TESTS_LOG_FILE: "$CI_PROJECT_DIR/_log/import-tests.log"
|
|
|
|
REGRESSION_STRING: "Total number of regressions: 0"
|
|
|
|
cache:
|
2024-04-29 05:03:49 +08:00
|
|
|
- key: $CI_JOB_NAME
|
2023-11-23 00:56:38 +08:00
|
|
|
paths:
|
|
|
|
- _data
|
|
|
|
script:
|
2024-07-20 06:54:58 +08:00
|
|
|
- API_VER=$(grep GIMP_PKGCONFIG_VERSION _build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/')
|
|
|
|
- APP_VER=$(grep GIMP_APP_VERSION _build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/')
|
2023-11-23 00:56:38 +08:00
|
|
|
- pkg-config --variable=gimplibdir gimp-${API_VER} 2>/dev/null | grep . && PLUG_IN_DIR=$(echo $(pkg-config --variable=gimplibdir gimp-${API_VER})'/plug-ins/')
|
|
|
|
- export PYTHONPATH="${PLUG_IN_DIR}test-file-plug-ins"
|
|
|
|
- export GIMP_TESTS_CONFIG_FILE="${PLUG_IN_DIR}test-file-plug-ins/tests/batch-config.ini"
|
|
|
|
- mkdir _log
|
|
|
|
- mkdir _data && cd _data
|
|
|
|
- git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/Infrastructure/gimp-test-images.git gimp-test-images
|
|
|
|
- cd ..
|
|
|
|
- cat ${PLUG_IN_DIR}test-file-plug-ins/batch-import-tests.py | gimp-console-${APP_VER} -idf --batch-interpreter python-fu-eval -b - --quit
|
|
|
|
- if [ $(grep -c "${REGRESSION_STRING}" "${GIMP_TESTS_LOG_FILE}") -ne 1 ]; then
|
|
|
|
echo "There are file import regressions. Check the log at ${GIMP_TESTS_LOG_FILE}!";
|
|
|
|
exit 1;
|
|
|
|
fi
|
|
|
|
# FIXME No export testing for now until it's more developed. A limited test
|
|
|
|
# can be done from the plug-in for bmp export.
|
2024-04-29 05:03:49 +08:00
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- _log/
|
2024-05-03 02:36:13 +08:00
|
|
|
reports:
|
|
|
|
junit: "_log/import-tests.xml"
|
2024-04-29 05:03:49 +08:00
|
|
|
expire_in: 2 days
|
2023-11-23 00:56:38 +08:00
|
|
|
|
gitlab-ci: Move 'analysis' stage to a more "mainstream" position
I suppose the intention of having this stage at the end was to make clear: no
job depends on it. However, this place is not common or ideal but one of two:
1) before building, which is more linear; or 2) after building (the choosen)
even if this isn't dynamic analysis (tests), since they are both related and
some compilers and build systems do static analysis. Anyway, not after dist.
The new place is a bit more clear to devs used at "build, test, deploy" praxis
and maybe will be now better noticed by the existing devs before distributing.
It's not perfect, since I explained above that there are two places/approaches.
Obviously, the stage continues to be OPTIONAL to pass, nothing was changed.
---
Also, dropped the deprecated "only:" (in clang-format job) in favor of "rules:"
and made the artifacts paths of clang-format and cppcheck more consistent.
2024-04-20 09:28:16 +08:00
|
|
|
clang-format:
|
|
|
|
extends: .default
|
|
|
|
rules:
|
2024-04-25 08:00:39 +08:00
|
|
|
- <<: *CI_MERGE
|
gitlab-ci: Move 'analysis' stage to a more "mainstream" position
I suppose the intention of having this stage at the end was to make clear: no
job depends on it. However, this place is not common or ideal but one of two:
1) before building, which is more linear; or 2) after building (the choosen)
even if this isn't dynamic analysis (tests), since they are both related and
some compilers and build systems do static analysis. Anyway, not after dist.
The new place is a bit more clear to devs used at "build, test, deploy" praxis
and maybe will be now better noticed by the existing devs before distributing.
It's not perfect, since I explained above that there are two places/approaches.
Obviously, the stage continues to be OPTIONAL to pass, nothing was changed.
---
Also, dropped the deprecated "only:" (in clang-format job) in favor of "rules:"
and made the artifacts paths of clang-format and cppcheck more consistent.
2024-04-20 09:28:16 +08:00
|
|
|
needs: []
|
|
|
|
stage: analysis
|
|
|
|
cache: []
|
|
|
|
script:
|
|
|
|
- apt-get update
|
|
|
|
- apt-get install -y clang-format
|
|
|
|
git
|
|
|
|
- .gitlab/run_style_check_diff.sh
|
|
|
|
allow_failure: true
|
|
|
|
artifacts:
|
|
|
|
when: on_failure
|
|
|
|
paths:
|
|
|
|
- fetch_upstream.log
|
|
|
|
- fetch_origin.log
|
2024-04-25 01:56:24 +08:00
|
|
|
expire_in: 2 days
|
gitlab-ci: Move 'analysis' stage to a more "mainstream" position
I suppose the intention of having this stage at the end was to make clear: no
job depends on it. However, this place is not common or ideal but one of two:
1) before building, which is more linear; or 2) after building (the choosen)
even if this isn't dynamic analysis (tests), since they are both related and
some compilers and build systems do static analysis. Anyway, not after dist.
The new place is a bit more clear to devs used at "build, test, deploy" praxis
and maybe will be now better noticed by the existing devs before distributing.
It's not perfect, since I explained above that there are two places/approaches.
Obviously, the stage continues to be OPTIONAL to pass, nothing was changed.
---
Also, dropped the deprecated "only:" (in clang-format job) in favor of "rules:"
and made the artifacts paths of clang-format and cppcheck more consistent.
2024-04-20 09:28:16 +08:00
|
|
|
|
|
|
|
cppcheck:
|
|
|
|
extends: .default
|
|
|
|
rules:
|
|
|
|
- if: '$GIMP_CI_CPPCHECK != null'
|
|
|
|
needs: []
|
|
|
|
stage: analysis
|
|
|
|
cache: []
|
|
|
|
script:
|
|
|
|
- apt-get update
|
|
|
|
- apt-get install -y cppcheck
|
|
|
|
- cppcheck -q -j8 --enable=all --force --output-file=cppcheck.xml --xml --xml-version=2
|
2024-07-28 18:42:02 +08:00
|
|
|
-i _build -i _build-cross -i babl -i gegl -i _install -i .local -i .cache -i _ccache -i gimp-x64 .
|
gitlab-ci: Move 'analysis' stage to a more "mainstream" position
I suppose the intention of having this stage at the end was to make clear: no
job depends on it. However, this place is not common or ideal but one of two:
1) before building, which is more linear; or 2) after building (the choosen)
even if this isn't dynamic analysis (tests), since they are both related and
some compilers and build systems do static analysis. Anyway, not after dist.
The new place is a bit more clear to devs used at "build, test, deploy" praxis
and maybe will be now better noticed by the existing devs before distributing.
It's not perfect, since I explained above that there are two places/approaches.
Obviously, the stage continues to be OPTIONAL to pass, nothing was changed.
---
Also, dropped the deprecated "only:" (in clang-format job) in favor of "rules:"
and made the artifacts paths of clang-format and cppcheck more consistent.
2024-04-20 09:28:16 +08:00
|
|
|
- mkdir report
|
|
|
|
- cppcheck-htmlreport --source-dir=. --title=gimp --file=cppcheck.xml --report-dir=report
|
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- report/
|
2024-04-25 01:56:24 +08:00
|
|
|
expire_in: 8 days
|
gitlab-ci: Move 'analysis' stage to a more "mainstream" position
I suppose the intention of having this stage at the end was to make clear: no
job depends on it. However, this place is not common or ideal but one of two:
1) before building, which is more linear; or 2) after building (the choosen)
even if this isn't dynamic analysis (tests), since they are both related and
some compilers and build systems do static analysis. Anyway, not after dist.
The new place is a bit more clear to devs used at "build, test, deploy" praxis
and maybe will be now better noticed by the existing devs before distributing.
It's not perfect, since I explained above that there are two places/approaches.
Obviously, the stage continues to be OPTIONAL to pass, nothing was changed.
---
Also, dropped the deprecated "only:" (in clang-format job) in favor of "rules:"
and made the artifacts paths of clang-format and cppcheck more consistent.
2024-04-20 09:28:16 +08:00
|
|
|
|
|
|
|
|
2020-08-07 22:41:05 +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:
|
2024-04-13 03:20:20 +08:00
|
|
|
extends: .default
|
2022-08-02 02:13:32 +08:00
|
|
|
rules:
|
2024-04-25 08:00:39 +08:00
|
|
|
- <<: *CI_COMMIT
|
2024-04-13 03:20:20 +08:00
|
|
|
- if: '$GIMP_CI_SOURCES != null'
|
2024-04-25 08:00:39 +08:00
|
|
|
- <<: *CI_RELEASE
|
2024-04-13 03:20:20 +08:00
|
|
|
needs: ["gimp-debian-x64"]
|
2022-08-02 02:13:32 +08:00
|
|
|
stage: distribution
|
2024-04-13 03:20:20 +08:00
|
|
|
cache: []
|
2022-08-02 02:13:32 +08:00
|
|
|
script:
|
2024-07-20 06:54:58 +08:00
|
|
|
- mv _build/meson-dist/gimp-*.tar.xz .
|
2022-08-09 00:15:33 +08:00
|
|
|
- FILENAME=`ls gimp-*.tar.xz` &&
|
2022-08-02 02:13:32 +08:00
|
|
|
sha256sum gimp-*.tar.xz > ${FILENAME}.SHA256SUMS &&
|
|
|
|
sha512sum gimp-*.tar.xz > ${FILENAME}.SHA512SUMS
|
2024-04-13 03:20:20 +08:00
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- gimp-*.tar.xz
|
|
|
|
- gimp-*.tar.xz.SHA256SUMS
|
|
|
|
- gimp-*.tar.xz.SHA512SUMS
|
|
|
|
expire_in: 2 days
|
2022-08-02 02:13:32 +08:00
|
|
|
|
2022-03-27 22:20:20 +08:00
|
|
|
dev-docs:
|
2024-04-13 03:20:20 +08:00
|
|
|
extends: .default
|
2022-03-27 22:20:20 +08:00
|
|
|
rules:
|
2024-04-25 08:00:39 +08:00
|
|
|
- <<: *CI_COMMIT
|
2024-04-13 03:20:20 +08:00
|
|
|
- if: '$GIMP_CI_SOURCES != null'
|
2024-04-25 08:00:39 +08:00
|
|
|
- <<: *CI_RELEASE
|
2024-04-13 03:20:20 +08:00
|
|
|
needs: ["deps-debian-x64", "gimp-debian-x64"]
|
2022-03-27 22:20:20 +08:00
|
|
|
stage: distribution
|
2024-04-13 03:20:20 +08:00
|
|
|
cache: []
|
2022-03-27 22:20:20 +08:00
|
|
|
script:
|
2024-04-14 18:48:25 +08:00
|
|
|
- apt-get update
|
|
|
|
- apt-get install -y xz-utils
|
2024-07-28 18:42:02 +08:00
|
|
|
- BABL_VER=$(grep BABL_VERSION babl/_build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') &&
|
|
|
|
BABL_API_VER=$(grep BABL_API_VERSION babl/_build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') &&
|
2024-07-20 06:54:58 +08:00
|
|
|
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 &&
|
2023-08-12 23:33:54 +08:00
|
|
|
sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS
|
2024-07-28 18:42:02 +08:00
|
|
|
- GEGL_MAJ_VER=$(grep GEGL_MAJOR_VERSION gegl/_build/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') &&
|
|
|
|
GEGL_MIN_VER=$(grep GEGL_MINOR_VERSION gegl/_build/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') &&
|
|
|
|
GEGL_MIC_VER=$(grep GEGL_MICRO_VERSION gegl/_build/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') &&
|
2024-07-20 06:54:58 +08:00
|
|
|
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 &&
|
2023-08-12 23:33:54 +08:00
|
|
|
sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS
|
2024-07-20 06:54:58 +08:00
|
|
|
- GIMP_VER=$(grep GIMP_VERSION _build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') &&
|
|
|
|
APP_VER=$(echo $GIMP_VER | sed 's/\([0-9]\+\.[0-9]\+\)\..*/\1/') &&
|
|
|
|
DIR_NAME=gimp-api-docs-$GIMP_VER &&
|
|
|
|
mkdir $DIR_NAME &&
|
|
|
|
mv "${GIMP_PREFIX}/share/doc/gimp-$APP_VER" $DIR_NAME/reference &&
|
|
|
|
mv _build/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 &&
|
data, devel-docs, gitlab-ci: improve the docs tarball.
- Use a relative path for GIMP_LOGO_PATH inside the gi-docgen generated
HTML, and not an absolute path taken from build dir (otherwise this
would break, for installed docs, but also for the tarball and the
developer website!).
- Also use either gimp-logo.png or gimp-devel-logo.png depending on
whether we are on a stable or unstable branch.
- Install these in images/ inside the GIMP docs folder, which
corresponds to the relative path given to GIMP_LOGO_PATH.
- The installed root dir will be $datadir/doc/gimp-2.99/, e.g.
/usr/share/doc/gimp-2.99/
- Inside this folder, the library references will be in libgimp-3.0/ and
libgimpui-3.0/ (instead of weird Gimp-3.0/ and GimpUi-3.0/). Note that
the root dir uses the application version (2.99) whereas the library
folder use the API versions. These are different in development phase.
- Archive the gi-docgen installed files, not taken from the build dir,
to avoid packaging temp files, such as the .toml files. Note that
`g-ir-docs` files are still taken from the build dir, as we don't
install them yet.
- Finally package all this in a directory before archiving in a tar.xz,
named the same as the directory (e.g. gimp-api-docs-2.99.13/ inside
gimp-api-docs-2.99.13.tar.xz).
2022-09-09 22:37:40 +08:00
|
|
|
sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS
|
2024-04-13 03:20:20 +08:00
|
|
|
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
|
|
|
|
|
2024-05-21 22:53:34 +08:00
|
|
|
include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml'
|
2024-04-13 03:20:20 +08:00
|
|
|
dist-flatpak-weekly:
|
2024-05-21 22:53:34 +08:00
|
|
|
extends:
|
|
|
|
- .default
|
|
|
|
- .publish_nightly
|
2024-04-13 03:20:20 +08:00
|
|
|
rules:
|
2024-05-26 22:32:41 +08:00
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Flatpak package.*/'
|
|
|
|
interruptible: true
|
2024-04-13 03:20:20 +08:00
|
|
|
- if: '$GIMP_CI_FLATPAK != null'
|
2024-04-16 08:12:39 +08:00
|
|
|
needs: ["gimp-flatpak-x64"]
|
2024-04-13 03:20:20 +08:00
|
|
|
stage: distribution
|
2024-05-21 22:53:34 +08:00
|
|
|
cache: []
|
2024-05-26 22:32:41 +08:00
|
|
|
script:
|
2024-06-21 01:31:10 +08:00
|
|
|
- bash build/linux/flatpak/3_dist-gimp-flatpak.sh
|
2024-04-16 08:12:39 +08:00
|
|
|
artifacts:
|
|
|
|
expose_as: 'Linux flatpak'
|
|
|
|
paths:
|
|
|
|
- gimp-git.flatpak
|
2024-04-25 01:56:24 +08:00
|
|
|
expire_in: 8 days
|
2024-04-13 03:20:20 +08:00
|
|
|
|
|
|
|
dist-installer-weekly:
|
|
|
|
extends: .win
|
|
|
|
rules:
|
|
|
|
- !reference [.win, rules]
|
2024-04-16 08:12:39 +08:00
|
|
|
needs: ["gimp-win-a64", "gimp-win-x64", "gimp-win-x86"]
|
2024-04-13 03:20:20 +08:00
|
|
|
stage: distribution
|
|
|
|
tags:
|
2024-04-22 20:44:39 +08:00
|
|
|
- windows-aarch64
|
2024-05-24 01:28:58 +08:00
|
|
|
variables:
|
|
|
|
MSYSTEM: "CLANGARM64"
|
2024-05-01 00:37:10 +08:00
|
|
|
cache: []
|
2024-04-13 03:20:20 +08:00
|
|
|
script:
|
2024-08-06 19:47:55 +08:00
|
|
|
- C:\msys64\usr\bin\bash -lc "bash build/windows/installer/3_dist-gimp-inno_sym.sh"
|
2024-08-07 08:37:07 +08:00
|
|
|
- build/windows/installer/3_dist-gimp-inno.ps1
|
2024-04-13 03:20:20 +08:00
|
|
|
artifacts:
|
|
|
|
expose_as: 'Windows exe'
|
|
|
|
paths:
|
|
|
|
- build/windows/installer/_Output/
|
2024-08-07 08:37:07 +08:00
|
|
|
- inno.log
|
2024-04-25 01:56:24 +08:00
|
|
|
expire_in: 8 days
|
2023-11-18 00:08:07 +08:00
|
|
|
|
|
|
|
dist-store-weekly:
|
|
|
|
extends: .win
|
|
|
|
rules:
|
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Microsoft Store.*/'
|
2024-04-25 08:00:39 +08:00
|
|
|
interruptible: true
|
|
|
|
- if: '$GIMP_CI_MS_STORE != null'
|
|
|
|
- <<: *CI_RELEASE
|
2023-11-18 00:08:07 +08:00
|
|
|
needs: ["gimp-win-a64", "gimp-win-x64"]
|
|
|
|
stage: distribution
|
|
|
|
tags:
|
|
|
|
- win32-ps
|
|
|
|
cache: []
|
|
|
|
script:
|
2024-08-07 05:34:42 +08:00
|
|
|
- build\windows\store\3_dist-gimp-winsdk.ps1
|
2023-11-18 00:08:07 +08:00
|
|
|
artifacts:
|
|
|
|
expose_as: 'Windows msix'
|
|
|
|
paths:
|
|
|
|
- build/windows/store/_Output/
|
2024-07-14 02:49:40 +08:00
|
|
|
- winsdk.log
|
2024-04-25 01:56:24 +08:00
|
|
|
expire_in: 8 days
|