mirror of
https://gitlab.gnome.org/GNOME/gimp
synced 2024-10-18 13:53:46 +00:00
979900fcdf
Aaaargh! I think this was the main issue which would explain why the problem was mostly happening on the packaging job. In this job, we were still consistently calling `pacman --noconfirm -Suy` (i.e.g "Synchronizing package databases") which we had stopped to do for the CI builds as that was highly increasing chances of locking pacman's process.
1135 lines
38 KiB
YAML
1135 lines
38 KiB
YAML
# Default commit CI should only run the following pipelines:
|
|
# - Linux native GCC build (base & fast)
|
|
# - Win64 crossbuild (base & fast)
|
|
# Scheduled CI ($CI_PIPELINE_SOURCE == "schedule") will run regularly:
|
|
# - Linux native CLang build (rare usefulness)
|
|
# - Win32 crossbuild (rare usefulness)
|
|
# - Win Aarch64/64/32 native builds (base but slow)
|
|
# - Flatpak build (slow and doesn't need constant publishing)
|
|
# - cppcheck (static code analysis)
|
|
# Releases ($CI_COMMIT_TAG != null) should run only:
|
|
# - Win Aarch64/64/32 native builds (Inno Windows installer creation)
|
|
#
|
|
# To force step-specific pipelines without waiting for commits and/or
|
|
# pipelines, these are the variable you should set:
|
|
# - GIMP_CI_MESON_GCC: trigger the Debian gcc build.
|
|
# - GIMP_CI_MESON_CLANG: trigger the Debian clang build.
|
|
# - GIMP_CI_RASTER_ICONS: trigger the Debian build without vector icons.
|
|
# - GIMP_CI_CROSSROAD_WIN64: trigger the crossroad build for Win 64-bit.
|
|
# - GIMP_CI_CROSSROAD_WIN32: trigger the crossroad build for Win 32-bit.
|
|
# - GIMP_CI_MSYS2_WIN_AARCH64: trigger the native MSYS2 build for Win Aarch64.
|
|
# - GIMP_CI_MSYS2_WIN64: trigger the native MSYS2 build for Win 64-bit.
|
|
# - GIMP_CI_MSYS2_WIN32: trigger the native MSYS2 build for Win 32-bit.
|
|
# - GIMP_CI_FLATPAK: trigger the (normally) weekly flatpak build and publishing.
|
|
# - GIMP_CI_WIN_INSTALLER: trigger all native MSYS2 builds then creates Inno Windows installer.
|
|
# - GIMP_CI_SOURCES: trigger the Debian gcc build and the source tarball job.
|
|
# - GIMP_CI_CPPCHECK: trigger cppcheck static analysis.
|
|
|
|
|
|
include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml'
|
|
|
|
image: debian:bookworm
|
|
|
|
stages:
|
|
- prepare
|
|
- dependencies
|
|
- gimp
|
|
- packaging
|
|
- distribution
|
|
- analysis
|
|
|
|
variables:
|
|
GIT_DEPTH: "1"
|
|
INSTALL_DIR: "_install-x64"
|
|
GIMP_PREFIX: "${CI_PROJECT_DIR}/${INSTALL_DIR}"
|
|
APT_CACHE: "${CI_PROJECT_DIR}/apt-cache"
|
|
|
|
## prepare docker images ##
|
|
|
|
image-debian-x64:
|
|
rules:
|
|
# On commits and merge requests.
|
|
- if: '$CI_PIPELINE_SOURCE == "push"'
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_MESON_GCC != null'
|
|
- if: '$GIMP_CI_MESON_CLANG != null'
|
|
- if: '$GIMP_CI_RASTER_ICONS != null'
|
|
- if: '$GIMP_CI_SOURCES != null'
|
|
- if: '$GIMP_CI_FLATPAK != null'
|
|
# This is needed for the BMP image generation for the installer.
|
|
# See commit e1203e9f76f.
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
stage: prepare
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
cache: {}
|
|
image:
|
|
name: gcr.io/kaniko-project/executor:debug
|
|
entrypoint: [""]
|
|
script:
|
|
- export container=docker
|
|
- mkdir -p /kaniko/.docker
|
|
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
|
|
- echo "FROM debian:bookworm" > Dockerfile
|
|
- echo "RUN apt-get update" >> Dockerfile
|
|
- echo "RUN apt-get install -y --no-install-recommends \\" >> Dockerfile
|
|
- echo "appstream
|
|
at-spi2-core
|
|
build-essential
|
|
desktop-file-utils
|
|
ffmpeg
|
|
gettext
|
|
ghostscript
|
|
gi-docgen
|
|
git
|
|
glib-networking
|
|
gobject-introspection
|
|
graphviz
|
|
graphviz-dev
|
|
hicolor-icon-theme
|
|
iso-codes
|
|
libaa1-dev
|
|
libappstream-glib-dev
|
|
libbz2-dev
|
|
libcfitsio-dev
|
|
libdbus-glib-1-dev
|
|
libexif-dev
|
|
libgexiv2-dev
|
|
libgirepository1.0-dev
|
|
libgs-dev
|
|
libgtk-3-bin
|
|
libgtk-3-dev
|
|
libgudev-1.0-dev
|
|
libheif-dev
|
|
libjson-glib-dev
|
|
libjxl-dev
|
|
liblcms2-dev
|
|
liblzma-dev
|
|
libmng-dev
|
|
libmypaint-dev
|
|
libopenexr-dev
|
|
libpoppler-glib-dev
|
|
libraw-dev
|
|
libraw20
|
|
librsvg2-dev
|
|
libspiro-dev
|
|
libsuitesparse-dev
|
|
libtiff-dev
|
|
libtiff5-dev
|
|
libtool
|
|
libumfpack5
|
|
libwebp-dev
|
|
libwmf-dev
|
|
libxmu-dev
|
|
libxpm-dev
|
|
luajit
|
|
meson
|
|
mypaint-brushes
|
|
poppler-data
|
|
python3
|
|
python3-gi
|
|
python3-pip
|
|
valac
|
|
xauth
|
|
xsltproc
|
|
xvfb
|
|
xz-utils
|
|
yelp-tools" >> Dockerfile
|
|
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:build-debian-latest --cache=true --cache-ttl=120h
|
|
|
|
|
|
image-win-x64-cross:
|
|
rules:
|
|
# On commits except tags.
|
|
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
|
|
# On merge requests.
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
|
stage: prepare
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
cache: {}
|
|
image:
|
|
name: gcr.io/kaniko-project/executor:debug
|
|
entrypoint: [""]
|
|
script:
|
|
- export container=docker
|
|
- mkdir -p /kaniko/.docker
|
|
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
|
|
- echo "FROM debian:testing" > Dockerfile
|
|
- echo "RUN apt-get update" >> Dockerfile
|
|
- echo "RUN apt-get install -y --no-install-recommends \\" >> Dockerfile
|
|
# libjxl uses C++ features that require posix threads so we install
|
|
# specifically g++-mingw-w64-x86-64-posix and gcc-mingw-w64-x86-64-posix.
|
|
# Note that we can't install both the -posix and -win32 versions since
|
|
# update gcc-mingw-w64 (25).
|
|
- echo "build-essential
|
|
cmake
|
|
cpio
|
|
g++-mingw-w64-x86-64-posix
|
|
gcc-mingw-w64-x86-64-posix
|
|
gettext
|
|
git
|
|
libgdk-pixbuf2.0-dev
|
|
libgirepository1.0-dev
|
|
libglib2.0-bin
|
|
librsvg2-dev
|
|
meson
|
|
pkg-config
|
|
python3
|
|
python3-distutils
|
|
python3-docutils
|
|
python3-pip
|
|
rpm
|
|
python3-zstandard
|
|
xsltproc
|
|
xvfb" >> Dockerfile
|
|
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:build-win64-latest --cache=true --cache-ttl=120h
|
|
|
|
|
|
image-win-x86-cross:
|
|
rules:
|
|
# Custom builds only (web GUI, API or schedules).
|
|
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
|
|
stage: prepare
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
cache: {}
|
|
image:
|
|
name: gcr.io/kaniko-project/executor:debug
|
|
entrypoint: [""]
|
|
script:
|
|
- export container=docker
|
|
- mkdir -p /kaniko/.docker
|
|
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
|
|
- echo "FROM debian:testing" > Dockerfile
|
|
- echo "RUN apt-get update" >> Dockerfile
|
|
- echo "RUN apt-get install -y --no-install-recommends \\" >> Dockerfile
|
|
- echo "build-essential
|
|
cpio
|
|
g++-mingw-w64-i686
|
|
gcc-mingw-w64-i686
|
|
gettext
|
|
git
|
|
libgdk-pixbuf2.0-dev
|
|
libglib2.0-bin
|
|
librsvg2-dev
|
|
meson
|
|
pkg-config
|
|
python3
|
|
python3-distutils
|
|
python3-docutils
|
|
python3-pip
|
|
python3-zstandard
|
|
rpm
|
|
xsltproc
|
|
xvfb" >> Dockerfile
|
|
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:build-win32-latest --cache=true --cache-ttl=120h
|
|
|
|
|
|
## GNU/Linux 64-bit CIs (Debian bookworm) ##
|
|
|
|
deps-debian-x64:
|
|
rules:
|
|
# On commits and merge requests.
|
|
- if: '$CI_PIPELINE_SOURCE == "push"'
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_SOURCES != null'
|
|
- if: '$GIMP_CI_MESON_GCC != null'
|
|
- if: '$GIMP_CI_MESON_CLANG != null'
|
|
- if: '$GIMP_CI_RASTER_ICONS != null'
|
|
- if: '$GIMP_CI_FLATPAK != null'
|
|
# This is needed for the BMP image generation for the installer.
|
|
# See commit e1203e9f76f.
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
stage: dependencies
|
|
image: $CI_REGISTRY_IMAGE:build-debian-latest
|
|
cache:
|
|
paths:
|
|
- apt-cache
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
expire_in: 2 hours
|
|
when: always
|
|
paths:
|
|
- "${INSTALL_DIR}"
|
|
- _babl/_build-x64
|
|
- _gegl/_build-x64
|
|
before_script:
|
|
- git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/babl.git _babl
|
|
- git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/gegl.git _gegl
|
|
- export PKG_CONFIG_PATH="${GIMP_PREFIX}/lib/pkgconfig"
|
|
- export PKG_CONFIG_PATH="${GIMP_PREFIX}/lib/`gcc -print-multiarch`/pkgconfig/:$PKG_CONFIG_PATH"
|
|
- export LD_LIBRARY_PATH="${GIMP_PREFIX}/lib:${LD_LIBRARY_PATH}"
|
|
- export LD_LIBRARY_PATH="${GIMP_PREFIX}/lib/`gcc -print-multiarch`:$LD_LIBRARY_PATH"
|
|
- export XDG_DATA_DIRS="${GIMP_PREFIX}/share:/usr/local/share:/usr/share"
|
|
script:
|
|
- mkdir _babl/_build-x64 && cd _babl/_build-x64
|
|
- meson setup .. -Dprefix="${GIMP_PREFIX}"
|
|
- ninja && ninja install
|
|
- mkdir ../../_gegl/_build-x64 && cd ../../_gegl/_build-x64
|
|
- meson setup .. -Dprefix="${GIMP_PREFIX}"
|
|
- ninja && ninja install
|
|
needs: ["image-debian-x64"]
|
|
|
|
.gimp-debian-base:
|
|
stage: gimp
|
|
image: $CI_REGISTRY_IMAGE:build-debian-latest
|
|
dependencies:
|
|
- deps-debian-x64
|
|
cache:
|
|
paths:
|
|
- apt-cache
|
|
artifacts:
|
|
expire_in: 1 days
|
|
when: always
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- _build-x64
|
|
- "${INSTALL_DIR}"
|
|
before_script:
|
|
- export PATH="${GIMP_PREFIX}/bin:$PATH"
|
|
- export PKG_CONFIG_PATH="${GIMP_PREFIX}/lib/pkgconfig:${GIMP_PREFIX}/share/pkgconfig"
|
|
- export PKG_CONFIG_PATH="${GIMP_PREFIX}/lib/`gcc -print-multiarch`/pkgconfig/:$PKG_CONFIG_PATH"
|
|
- export PKG_CONFIG_PATH="${GIMP_PREFIX}/share/`gcc -print-multiarch`/pkgconfig/:$PKG_CONFIG_PATH"
|
|
- export LD_LIBRARY_PATH="${GIMP_PREFIX}/lib:${LD_LIBRARY_PATH}"
|
|
- export LD_LIBRARY_PATH="${GIMP_PREFIX}/lib/`gcc -print-multiarch`:$LD_LIBRARY_PATH"
|
|
- export XDG_DATA_DIRS="${GIMP_PREFIX}/share:/usr/local/share:/usr/share"
|
|
- export GI_TYPELIB_PATH="${GIMP_PREFIX}/lib/`gcc -print-multiarch`/girepository-1.0/:${GI_TYPELIB_PATH}"
|
|
needs: ["deps-debian-x64"]
|
|
|
|
gimp-debian-x64:
|
|
rules:
|
|
# On commits and merge requests.
|
|
- if: '$CI_PIPELINE_SOURCE == "push"'
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_FLATPAK != null'
|
|
# This is needed for the BMP image generation for the installer.
|
|
# See commit e1203e9f76f.
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_MESON_GCC != null'
|
|
- if: '$GIMP_CI_SOURCES != null'
|
|
extends: .gimp-debian-base
|
|
script:
|
|
- mkdir -p _build-x64 && cd _build-x64
|
|
- meson setup .. -Dprefix="${GIMP_PREFIX}"
|
|
-Dgi-docgen=enabled
|
|
-Dg-ir-doc=true
|
|
-Dwindows-installer=true
|
|
- ninja && ninja test
|
|
# The src should not be changed by the build. If it is, something is
|
|
# wrong. Let's print out the diff for debugging in such case, and
|
|
# exit to fail the CI.
|
|
- if [ $(git diff |wc -l) -ne 0 ]; then
|
|
git diff;
|
|
exit 1;
|
|
fi
|
|
- ninja dist && ninja install
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
reports:
|
|
junit: "_build-x64/meson-logs/testlog.junit.xml"
|
|
paths:
|
|
- "_build-x64/config.h"
|
|
- "_build-x64/meson-logs"
|
|
- "_build-x64/meson-dist"
|
|
- "_build-x64/devel-docs"
|
|
- "_build-x64/build/flatpak/"
|
|
- "_build-x64/build/windows/installer/"
|
|
- "${INSTALL_DIR}"
|
|
|
|
gimp-debian-clang:
|
|
rules:
|
|
# Custom builds only (web GUI, API or schedules).
|
|
- if: '$GIMP_CI_MESON_CLANG != null'
|
|
extends: .gimp-debian-base
|
|
variables:
|
|
CC: "clang"
|
|
CXX: "clang++"
|
|
script:
|
|
- mkdir -p "$APT_CACHE"
|
|
- apt-get install -y --no-install-recommends -o dir::cache::archives="$APT_CACHE"
|
|
clang
|
|
libomp-dev
|
|
- mkdir -p _build-x64 && cd _build-x64
|
|
- meson setup .. -Dprefix="${GIMP_PREFIX}"
|
|
- ninja && ninja test
|
|
|
|
gimp-debian-raster-icons:
|
|
rules:
|
|
# Custom builds only (web GUI, API or schedules).
|
|
- if: '$GIMP_CI_RASTER_ICONS != null'
|
|
extends: .gimp-debian-base
|
|
script:
|
|
- mkdir -p _build-x64 && cd _build-x64
|
|
- meson setup .. -Dprefix="${GIMP_PREFIX}"
|
|
-Dvector-icons=false
|
|
- ninja && ninja test
|
|
|
|
packaging-flatpak-x64:
|
|
# See: https://gitlab.gnome.org/GNOME/Initiatives/-/wikis/DevOps-with-Flatpak
|
|
# XXX This job is mostly the same as .flatpak job of
|
|
# flatpak_ci_initiative.yml so far, except that we removed the
|
|
# automatic tests since rebuilding plug-ins was not working and
|
|
# one of the test (save-and-export) requires plug-ins to be built.
|
|
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
|
|
stage: packaging
|
|
dependencies:
|
|
- gimp-debian-x64
|
|
tags:
|
|
- flatpak
|
|
needs: ["gimp-debian-x64"]
|
|
rules:
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_FLATPAK != null'
|
|
# Merge requests with appropriate label.
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Flatpak package.*/'
|
|
variables:
|
|
GIT_SUBMODULE_STRATEGY: normal
|
|
# Replace with your manifest path
|
|
MANIFEST_PATH: "build/flatpak/org.gimp.GIMP-nightly.json"
|
|
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
|
|
# Replace with your application name, as written in the manifest
|
|
FLATPAK_MODULE: "gimp"
|
|
APP_ID: "org.gimp.GIMP"
|
|
BUNDLE: "gimp-git.flatpak"
|
|
before_script:
|
|
# Report the installed versions of the runtime
|
|
- flatpak info org.gnome.Platform
|
|
- flatpak info org.gnome.Sdk
|
|
|
|
# Print the date, since appstream depends on local timezone
|
|
- date && date -u
|
|
|
|
# Get pre-configured manifest from Debian job
|
|
- cp _build-x64/build/flatpak/*json build/flatpak/
|
|
|
|
# GNOME script to customize the manifest
|
|
- rewrite-flatpak-manifest ${MANIFEST_PATH} ${FLATPAK_MODULE} ${CONFIG_OPTS}
|
|
script:
|
|
# Build deps and GIMP
|
|
# (Our script is too long for Gitlab and no complete output would be collected
|
|
# To make debugging actually possible, let's save logs as a file.)
|
|
- flatpak-builder --user --disable-rofiles-fuse flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
|
|
2>&1 | tee flatpak-builder.log
|
|
|
|
# Generate a Flatpak bundle
|
|
- flatpak build-bundle repo ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${APP_ID} ${BRANCH}
|
|
- tar cf repo.tar repo/
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
paths:
|
|
- flatpak-builder.log
|
|
# These are the same as flatpak_ci_initiative.yml as according to
|
|
# docs, key values are not merged but replaced.
|
|
- "${BUNDLE}"
|
|
- 'repo.tar'
|
|
- '.flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/meson-log.txt'
|
|
- '.flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/testlog.txt'
|
|
expire_in: 1 week
|
|
cache:
|
|
- key: "$CI_JOB_NAME"
|
|
paths:
|
|
- '.flatpak-builder/downloads'
|
|
- '.flatpak-builder/git'
|
|
- key: "$CI_JOB_NAME"
|
|
paths:
|
|
- '.flatpak-builder/cache'
|
|
- '.flatpak-builder/ccache'
|
|
|
|
## WINDOWS 64-bit CI (cross-build crossroad) ##
|
|
|
|
deps-win-x64-cross:
|
|
rules:
|
|
# On commits except tags.
|
|
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
|
|
# On merge requests.
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
|
stage: dependencies
|
|
image: $CI_REGISTRY_IMAGE:build-win64-latest
|
|
variables:
|
|
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
|
|
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
|
|
# Needed because by default, Debian has now changed
|
|
# "sysconfig.get_default_scheme()" from "posix_prefix" to "posix_local" which
|
|
# adds a local/ folder to the install prefix of setup.py. This environment
|
|
# variable overrides this behavior.
|
|
DEB_PYTHON_INSTALL_LAYOUT: "deb"
|
|
APT_CACHE: "${CI_PROJECT_DIR}/apt-cache"
|
|
cache:
|
|
paths:
|
|
- .cache/crossroad/
|
|
- apt-cache
|
|
before_script:
|
|
- apt-get update
|
|
- mkdir -p "$APT_CACHE"
|
|
- apt-get install -y --no-install-recommends -o dir::cache::archives="$APT_CACHE"
|
|
wine
|
|
wine64
|
|
- git clone --depth=${GIT_DEPTH} https://gitlab.freedesktop.org/crossroad/crossroad.git
|
|
- cd crossroad
|
|
- ./setup.py install --prefix=`pwd`/../.local
|
|
- cd ..
|
|
script:
|
|
- export PATH="`pwd`/.local/bin:$PATH"
|
|
- crossroad w64 gimp --run="build/windows/gitlab-ci/1_build-deps-crossroad.sh"
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 2 hours
|
|
paths:
|
|
- .local/
|
|
- _deps/_babl/_build-x64/
|
|
- _deps/_gegl/_build-x64/
|
|
needs: ["image-win-x64-cross"]
|
|
|
|
gimp-win-x64-cross:
|
|
rules:
|
|
# On commits except tags.
|
|
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
|
|
# On merge requests.
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
|
stage: gimp
|
|
image: $CI_REGISTRY_IMAGE:build-win64-latest
|
|
dependencies:
|
|
- deps-win-x64-cross
|
|
variables:
|
|
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
|
|
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
|
|
cache:
|
|
paths:
|
|
- .cache/crossroad/
|
|
- apt-cache
|
|
script:
|
|
- export PATH="`pwd`/.local/bin:$PATH"
|
|
- crossroad w64 gimp --run="build/windows/gitlab-ci/2_build-gimp-crossroad.sh"
|
|
needs: ["deps-win-x64-cross"]
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 1 day
|
|
paths:
|
|
- _build-x64/
|
|
- _install-x64/
|
|
|
|
packaging-win-x64-nightly:
|
|
rules:
|
|
# On commits except tags.
|
|
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
|
stage: packaging
|
|
dependencies:
|
|
- gimp-win-x64-cross
|
|
variables:
|
|
BUILD_TYPE: "CI_CROSS"
|
|
CROSSROAD_PLATFORM: "w64"
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 2 days
|
|
paths:
|
|
- gimp-x64
|
|
- done-dll.list
|
|
before_script:
|
|
- apt-get update
|
|
- apt-get install -y --no-install-recommends
|
|
binutils
|
|
binutils-mingw-w64-x86-64
|
|
file
|
|
libglib2.0-bin
|
|
python3
|
|
script:
|
|
- bash -x build/windows/gitlab-ci/3_package-gimp-uni_base.sh
|
|
- cd gimp-x64
|
|
- bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh
|
|
needs: ["gimp-win-x64-cross"]
|
|
|
|
## WINDOWS 32-bit CI (cross-build crossroad) ##
|
|
|
|
deps-win-x86-cross:
|
|
rules:
|
|
# Custom builds only (web GUI, API or schedules).
|
|
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
|
|
stage: dependencies
|
|
image: $CI_REGISTRY_IMAGE:build-win32-latest
|
|
variables:
|
|
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
|
|
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
|
|
DEB_PYTHON_INSTALL_LAYOUT: "deb"
|
|
cache:
|
|
paths:
|
|
- .cache/crossroad/
|
|
- apt-cache
|
|
before_script:
|
|
- apt-get update
|
|
- mkdir -p "$APT_CACHE"
|
|
- apt-get install -y --no-install-recommends -o dir::cache::archives="$APT_CACHE"
|
|
wine
|
|
- git clone --depth=${GIT_DEPTH} https://gitlab.freedesktop.org/crossroad/crossroad.git
|
|
- cd crossroad
|
|
- ./setup.py install --prefix=`pwd`/../.local
|
|
- cd ..
|
|
script:
|
|
- export PATH="`pwd`/.local/bin:$PATH"
|
|
- crossroad w32 gimp --run="build/windows/gitlab-ci/1_build-deps-crossroad.sh"
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 2 hours
|
|
paths:
|
|
- .local/
|
|
- _deps/_babl/_build-x86/
|
|
- _deps/_gegl/_build-x86/
|
|
needs: ["image-win-x86-cross"]
|
|
|
|
gimp-win-x86-cross:
|
|
rules:
|
|
# Custom builds only (web GUI, API or schedules).
|
|
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
|
|
stage: gimp
|
|
image: $CI_REGISTRY_IMAGE:build-win32-latest
|
|
dependencies:
|
|
- deps-win-x86-cross
|
|
- deps-win-x64-cross
|
|
variables:
|
|
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
|
|
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
|
|
cache:
|
|
paths:
|
|
- .cache/crossroad/
|
|
- apt-cache
|
|
script:
|
|
- export PATH="`pwd`/.local/bin:$PATH"
|
|
- crossroad w32 gimp --run="build/windows/gitlab-ci/2_build-gimp-crossroad.sh"
|
|
needs: ["deps-win-x86-cross", "deps-win-x64-cross"]
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 1 day
|
|
paths:
|
|
- _build-x86/
|
|
- _install-x86/
|
|
|
|
packaging-win-x86-nightly:
|
|
rules:
|
|
# Custom builds only (web GUI, API or schedules).
|
|
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
|
|
stage: packaging
|
|
dependencies:
|
|
- gimp-win-x86-cross
|
|
variables:
|
|
BUILD_TYPE: "CI_CROSS"
|
|
CROSSROAD_PLATFORM: "w32"
|
|
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 2 days
|
|
paths:
|
|
- gimp-x86
|
|
- done-dll.list
|
|
before_script:
|
|
- apt-get update
|
|
- apt-get install -y --no-install-recommends
|
|
binutils
|
|
binutils-mingw-w64-i686
|
|
file
|
|
libglib2.0-bin
|
|
python3
|
|
script:
|
|
- bash -x build/windows/gitlab-ci/3_package-gimp-uni_base.sh
|
|
- cd gimp-x86
|
|
- bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh
|
|
needs: ["gimp-win-x86-cross"]
|
|
|
|
|
|
## WINDOWS Aarch64 CI (native MSYS2) ##
|
|
|
|
deps-win-a64:
|
|
rules:
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_MSYS2_WIN_AARCH64 != null'
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
# Merge requests with appropriate label.
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
|
stage: dependencies
|
|
variables:
|
|
BUILD_TYPE: "CI_NATIVE"
|
|
MSYSTEM: "CLANGARM64"
|
|
CHERE_INVOKING: "yes"
|
|
tags:
|
|
- windows-aarch64
|
|
before_script:
|
|
# C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
script:
|
|
# Verification to prevent the job from failing because stuck pacman (ARM only),
|
|
# since our runner keeps the status of the MSYS2 installation between jobs
|
|
- $stuck = Test-Path -Path "C:\msys64\var\lib\pacman\db.lck" -PathType Leaf
|
|
- if ($stuck -eq "True") {
|
|
Remove-Item -Force -Path "C:\msys64\var\lib\pacman\db.lck";
|
|
Write-Output "Cleaned previous stuck pacman" }
|
|
- taskkill /F /FI "MODULES eq msys-2.0.dll"
|
|
- Start-Job -ScriptBlock{sleep 90; taskkill /t /F /IM "pacman.exe"}
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/1_build-deps-msys2.sh"
|
|
retry: 2
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 2 hours
|
|
paths:
|
|
- _install-a64
|
|
needs: []
|
|
|
|
gimp-win-a64:
|
|
rules:
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_MSYS2_WIN_AARCH64 != null'
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
# Merge requests with appropriate label.
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
|
stage: gimp
|
|
variables:
|
|
BUILD_TYPE: "CI_NATIVE"
|
|
MSYSTEM: "CLANGARM64"
|
|
CHERE_INVOKING: "yes"
|
|
tags:
|
|
- windows-aarch64
|
|
before_script:
|
|
# C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
script:
|
|
- $stuck = Test-Path -Path "C:\msys64\var\lib\pacman\db.lck" -PathType Leaf
|
|
- if ($stuck -eq "True") {
|
|
Remove-Item -Force -Path "C:\msys64\var\lib\pacman\db.lck";
|
|
Write-Output "Cleaned previous stuck pacman" }
|
|
# Temporary patch until we use the latest LLVM.
|
|
- git apply ./build/windows/patches/0001-clang-rc-files-fix.patch
|
|
- git apply ./build/windows/patches/0004-clang-windres.patch
|
|
- taskkill /F /FI "MODULES eq msys-2.0.dll"
|
|
- Start-Job -ScriptBlock{sleep 90; taskkill /t /F /IM "pacman.exe"}
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/2_build-gimp-msys2.sh"
|
|
retry: 2
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 1 day
|
|
paths:
|
|
- _install-a64
|
|
- _build-a64/build/windows/installer/
|
|
- _build-a64/meson-*/
|
|
cache:
|
|
paths:
|
|
- _ccache/
|
|
needs: ["deps-win-a64"]
|
|
|
|
packaging-win-a64:
|
|
rules:
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
# Merge requests with appropriate label.
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
|
stage: packaging
|
|
variables:
|
|
BUILD_TYPE: "CI_NATIVE"
|
|
MSYSTEM: "CLANGARM64"
|
|
CHERE_INVOKING: "yes"
|
|
tags:
|
|
- windows-aarch64
|
|
before_script:
|
|
# C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
script:
|
|
- $stuck = Test-Path -Path "C:\msys64\var\lib\pacman\db.lck" -PathType Leaf
|
|
- if ($stuck -eq "True") {
|
|
Remove-Item -Force -Path "C:\msys64\var\lib\pacman\db.lck";
|
|
Write-Output "Cleaned previous stuck pacman" }
|
|
- taskkill /F /FI "MODULES eq msys-2.0.dll"
|
|
- Start-Job -ScriptBlock{sleep 90; taskkill /t /F /IM "pacman.exe"}
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/3_package-gimp-uni_base.sh"
|
|
- cd gimp-a64
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh"
|
|
retry: 2
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 1 day
|
|
paths:
|
|
- gimp-a64
|
|
- done-dll.list
|
|
needs: ["gimp-win-a64"]
|
|
|
|
## WINDOWS x86_64 CI (native MSYS2) ##
|
|
|
|
deps-win-x64:
|
|
rules:
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_MSYS2_WIN64 != null'
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
# Merge requests with appropriate label.
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
|
stage: dependencies
|
|
variables:
|
|
BUILD_TYPE: "CI_NATIVE"
|
|
MSYSTEM: "MINGW64"
|
|
CHERE_INVOKING: "yes"
|
|
tags:
|
|
- win32-ps
|
|
before_script:
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
script:
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/1_build-deps-msys2.sh"
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 2 hours
|
|
paths:
|
|
- _install-x64
|
|
needs: []
|
|
|
|
gimp-win-x64:
|
|
rules:
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_MSYS2_WIN64 != null'
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
# Merge requests with appropriate label.
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
|
stage: gimp
|
|
variables:
|
|
BUILD_TYPE: "CI_NATIVE"
|
|
MSYSTEM: "MINGW64"
|
|
CHERE_INVOKING: "yes"
|
|
tags:
|
|
- win32-ps
|
|
before_script:
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
script:
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/2_build-gimp-msys2.sh"
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 1 day
|
|
paths:
|
|
- _install-x64
|
|
- _build-x64/build/windows/installer/
|
|
- _build-x64/meson-*/
|
|
cache:
|
|
paths:
|
|
- _ccache/
|
|
needs: ["deps-win-x64"]
|
|
|
|
packaging-win-x64:
|
|
rules:
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
# Merge requests with appropriate label.
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
|
stage: packaging
|
|
variables:
|
|
MSYSTEM: "MINGW64"
|
|
CHERE_INVOKING: "yes"
|
|
tags:
|
|
- win32-ps
|
|
before_script:
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
script:
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/3_package-gimp-uni_base.sh"
|
|
- cd gimp-x64
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh"
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 1 day
|
|
paths:
|
|
- gimp-x64
|
|
- done-dll.list
|
|
needs: ["gimp-win-x64"]
|
|
|
|
## WINDOWS x86 CI (native MSYS2) ##
|
|
|
|
deps-win-x86:
|
|
rules:
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_MSYS2_WIN32 != null'
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
# Merge requests with appropriate label.
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
|
stage: dependencies
|
|
variables:
|
|
BUILD_TYPE: "CI_NATIVE"
|
|
MSYSTEM: "MINGW32"
|
|
CHERE_INVOKING: "yes"
|
|
tags:
|
|
- win32-ps
|
|
before_script:
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
script:
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/1_build-deps-msys2.sh"
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 2 hours
|
|
paths:
|
|
- _install-x86
|
|
needs: []
|
|
|
|
gimp-win-x86:
|
|
rules:
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_MSYS2_WIN32 != null'
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
# Merge requests with appropriate label.
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
|
stage: gimp
|
|
variables:
|
|
BUILD_TYPE: "CI_NATIVE"
|
|
MSYSTEM: "MINGW32"
|
|
CHERE_INVOKING: "yes"
|
|
tags:
|
|
- win32-ps
|
|
before_script:
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
script:
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/2_build-gimp-msys2.sh"
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 1 day
|
|
paths:
|
|
- _install-x86
|
|
- _build-x86/meson-*/
|
|
cache:
|
|
paths:
|
|
- _ccache/
|
|
needs: ["deps-win-x86"]
|
|
|
|
packaging-win-x86:
|
|
rules:
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
# Merge requests with appropriate label.
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
|
stage: packaging
|
|
variables:
|
|
MSYSTEM: "MINGW32"
|
|
CHERE_INVOKING: "yes"
|
|
tags:
|
|
- win32-ps
|
|
before_script:
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
script:
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/3_package-gimp-uni_base.sh"
|
|
- cd gimp-x86
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh"
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 1 day
|
|
paths:
|
|
- gimp-x86
|
|
- done-dll.list
|
|
needs: ["gimp-win-x86"]
|
|
|
|
clang-format:
|
|
only:
|
|
- merge_requests
|
|
stage: analysis
|
|
before_script:
|
|
- apt-get update
|
|
- apt-get install -y clang-format
|
|
git
|
|
allow_failure: true
|
|
script:
|
|
- .gitlab/run_style_check_diff.sh
|
|
artifacts:
|
|
paths: ['fetch_upstream.log', 'fetch_origin.log']
|
|
when: on_failure
|
|
expire_in: 1 week
|
|
needs: []
|
|
|
|
cppcheck:
|
|
rules:
|
|
# Custom builds only (web GUI, API or schedules).
|
|
- if: '$GIMP_CI_CPPCHECK != null'
|
|
stage: analysis
|
|
before_script:
|
|
- apt-get update
|
|
- apt-get install -y cppcheck
|
|
script:
|
|
- cppcheck -q -j8 --enable=all --force --output-file=cppcheck.xml --xml --xml-version=2
|
|
-i _build-x64 -i _build-x86 -i _deps -i _install-x64 -i _install-x86 -i .local -i .cache .
|
|
- mkdir report
|
|
- cppcheck-htmlreport --source-dir=. --title=gimp --file=cppcheck.xml --report-dir=report
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
expire_in: 1 week
|
|
when: always
|
|
paths:
|
|
- report
|
|
needs: []
|
|
|
|
## Ready-to-distribute ##
|
|
|
|
dist-flatpak-weekly:
|
|
extends: '.publish_nightly'
|
|
stage: distribution
|
|
rules:
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_FLATPAK != null'
|
|
needs: ["packaging-flatpak-x64"]
|
|
dependencies:
|
|
- 'packaging-flatpak-x64'
|
|
|
|
win-installer-weekly:
|
|
rules:
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
|
# Merge requests with appropriate label.
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
|
variables:
|
|
CHERE_INVOKING: "yes"
|
|
tags:
|
|
- win32-ps
|
|
stage: distribution
|
|
dependencies:
|
|
- packaging-win-a64
|
|
- packaging-win-x64
|
|
- packaging-win-x86
|
|
# This is needed for the BMP image generation for the installer.
|
|
# See commit e1203e9f76f.
|
|
- gimp-debian-x64
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 1 week
|
|
paths:
|
|
- build/windows/installer/_Output
|
|
- installer.log
|
|
script:
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/4_installer-gimp-msys2.sh > installer.log 2>&1"
|
|
needs: ["packaging-win-a64", "packaging-win-x64", "packaging-win-x86", "gimp-debian-x64"]
|
|
|
|
sources-debian:
|
|
rules:
|
|
# On commits.
|
|
- if: '$CI_PIPELINE_SOURCE == "push"'
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_SOURCES != null'
|
|
stage: distribution
|
|
dependencies:
|
|
- gimp-debian-x64
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 2 days
|
|
paths:
|
|
- gimp-*.tar.xz
|
|
- gimp-*.tar.xz.SHA256SUMS
|
|
- gimp-*.tar.xz.SHA512SUMS
|
|
script:
|
|
- mv _build-x64/meson-dist/gimp-*.tar.xz .
|
|
- FILENAME=`ls gimp-*.tar.xz` &&
|
|
sha256sum gimp-*.tar.xz > ${FILENAME}.SHA256SUMS &&
|
|
sha512sum gimp-*.tar.xz > ${FILENAME}.SHA512SUMS
|
|
needs: ["gimp-debian-x64"]
|
|
|
|
dev-docs:
|
|
rules:
|
|
# On commits.
|
|
- if: '$CI_PIPELINE_SOURCE == "push"'
|
|
# On releases.
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
# Custom builds though web GUI, API or schedules.
|
|
- if: '$GIMP_CI_SOURCES != null'
|
|
stage: distribution
|
|
image: $CI_REGISTRY_IMAGE:build-debian-latest
|
|
dependencies:
|
|
- deps-debian-x64
|
|
- gimp-debian-x64
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
|
when: always
|
|
expire_in: 2 days
|
|
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
|
|
script:
|
|
- BABL_VER=$(grep BABL_VERSION _babl/_build-x64/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') &&
|
|
BABL_API_VER=$(grep BABL_API_VERSION _babl/_build-x64/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') &&
|
|
DIR_NAME=babl-api-docs-$BABL_VER &&
|
|
mkdir $DIR_NAME &&
|
|
mv "${GIMP_PREFIX}/share/doc/babl-$BABL_API_VER" $DIR_NAME/ &&
|
|
TAR_NAME="$DIR_NAME.tar.xz" &&
|
|
tar -cJf ${TAR_NAME} $DIR_NAME &&
|
|
sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS &&
|
|
sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS
|
|
- GEGL_MAJ_VER=$(grep GEGL_MAJOR_VERSION _gegl/_build-x64/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') &&
|
|
GEGL_MIN_VER=$(grep GEGL_MINOR_VERSION _gegl/_build-x64/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') &&
|
|
GEGL_MIC_VER=$(grep GEGL_MICRO_VERSION _gegl/_build-x64/config.h |head -1 |sed 's/^[^0-9]*\([0-9]*\).*$/\1/') &&
|
|
GEGL_VER="$GEGL_MAJ_VER.$GEGL_MIN_VER.$GEGL_MIC_VER" &&
|
|
GEGL_API_VER="$GEGL_MAJ_VER.$GEGL_MIN_VER" &&
|
|
DIR_NAME=gegl-api-docs-$GEGL_VER &&
|
|
mkdir $DIR_NAME &&
|
|
mv "${GIMP_PREFIX}/share/doc/gegl-$GEGL_API_VER" $DIR_NAME/ &&
|
|
TAR_NAME="$DIR_NAME.tar.xz" &&
|
|
tar -cJf ${TAR_NAME} $DIR_NAME &&
|
|
sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS &&
|
|
sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS
|
|
- GIMP_VER=$(grep GIMP_VERSION _build-x64/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-x64/devel-docs/g-ir-docs $DIR_NAME/ &&
|
|
TAR_NAME="$DIR_NAME.tar.xz" &&
|
|
tar -cJf ${TAR_NAME} $DIR_NAME &&
|
|
sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS &&
|
|
sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS
|
|
needs: ["deps-debian-x64", "gimp-debian-x64"]
|
|
|