2021-05-17 20:34:29 +08:00
|
|
|
# Default commit CI should only run the following pipelines:
|
2021-05-13 23:47:03 +08:00
|
|
|
# - Linux autotools and meson (base & fast)
|
2021-05-17 20:34:29 +08:00
|
|
|
# - Win64 crossbuild (base & fast)
|
|
|
|
# Scheduled CI ($CI_PIPELINE_SOURCE == "schedule") will run regularly:
|
2021-05-13 23:47:03 +08:00
|
|
|
# - Win 32/64 native builds (base but slow)
|
|
|
|
# - Win32 crossbuilds (rare usefulness)
|
|
|
|
# - Linux CLang (rare usefulness)
|
2021-05-17 20:34:29 +08:00
|
|
|
# - cppcheck (static code analysis)
|
2021-05-27 01:35:19 +08:00
|
|
|
# - Flatpak build (slow and doesn't need constant publishing)
|
2021-05-17 20:34:29 +08:00
|
|
|
# Releases ($CI_COMMIT_TAG != null) should run only:
|
2021-05-13 23:47:03 +08:00
|
|
|
# - Linux autotools (distcheck source tarball)
|
2021-05-17 20:34:29 +08:00
|
|
|
# - Win 32/64 native builds (Windows installer creation)
|
|
|
|
#
|
|
|
|
# To force step-specific pipelines without waiting for commits and/or
|
|
|
|
# pipelines, these are the variable you should set:
|
|
|
|
# - GIMP_CI_AUTOTOOLS: trigger the autotools/gcc build.
|
|
|
|
# - GIMP_CI_MESON_GCC: trigger the meson/gcc build.
|
|
|
|
# - GIMP_CI_MESON_CLANG: trigger the meson/clang build.
|
|
|
|
# - GIMP_CI_CROSSROAD_WIN32: trigger the crossroad/meson build for Win 32-bit.
|
|
|
|
# - GIMP_CI_CROSSROAD_WIN64: trigger the crossroad/meson build for Win 64-bit.
|
|
|
|
# - GIMP_CI_MSYS2_WIN32: trigger the native MSYS2 build for Win 32-bit.
|
|
|
|
# - GIMP_CI_MSYS2_WIN64: trigger the native MSYS2 build for Win 64-bit.
|
|
|
|
# - GIMP_CI_WIN_INSTALLER: trigger both native MSYS2 builds then creates Windows installer.
|
|
|
|
# - GIMP_CI_SOURCES: trigger the autotools/gcc build and the source tarball job.
|
|
|
|
# - GIMP_CI_CPPCHECK: trigger cppcheck static analysis.
|
2021-05-27 01:35:19 +08:00
|
|
|
# - GIMP_CI_FLATPAK: trigger the nightly flatpak build and publishing.
|
2022-01-27 23:32:02 +08:00
|
|
|
# - GIMP_CI_RASTER_ICONS: trigger the autotools and meson builds without vector icons.
|
2021-05-13 23:47:03 +08:00
|
|
|
|
2020-09-07 23:49:37 +08:00
|
|
|
include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml'
|
|
|
|
|
2020-01-02 02:57:06 +08:00
|
|
|
image: debian:testing
|
2019-08-21 19:54:38 +08:00
|
|
|
|
2019-07-29 07:11:44 +08:00
|
|
|
stages:
|
2020-05-30 06:41:22 +08:00
|
|
|
- prepare
|
2019-10-02 03:36:19 +08:00
|
|
|
- dependencies
|
2019-07-29 07:11:44 +08:00
|
|
|
- gimp
|
2021-05-22 01:34:00 +08:00
|
|
|
- packaging
|
2020-08-07 22:41:05 +08:00
|
|
|
- distribution
|
2021-05-22 01:34:00 +08:00
|
|
|
- analysis
|
2019-07-29 07:11:44 +08:00
|
|
|
|
|
|
|
variables:
|
2019-10-02 02:36:09 +08:00
|
|
|
GIT_DEPTH: "1"
|
2019-07-29 07:11:44 +08:00
|
|
|
INSTALL_DIR: "_install"
|
2019-08-21 19:54:38 +08:00
|
|
|
INSTALL_PREFIX: "${CI_PROJECT_DIR}/${INSTALL_DIR}"
|
2020-05-29 01:51:50 +08:00
|
|
|
APT_CACHE: "${CI_PROJECT_DIR}/apt-cache"
|
2019-07-29 07:11:44 +08:00
|
|
|
|
2020-05-30 06:41:22 +08:00
|
|
|
## prepare docker images ##
|
|
|
|
|
|
|
|
build-image:
|
2021-05-06 21:38:23 +08:00
|
|
|
rules:
|
2021-05-28 23:27:50 +08:00
|
|
|
# On commits and merge requests.
|
2021-05-17 20:34:29 +08:00
|
|
|
- if: '$CI_PIPELINE_SOURCE == "push"'
|
2021-05-28 23:27:50 +08:00
|
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
2021-05-17 20:34:29 +08:00
|
|
|
# On releases.
|
|
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_AUTOTOOLS != null'
|
|
|
|
- if: '$GIMP_CI_SOURCES != null'
|
|
|
|
- if: '$GIMP_CI_MESON_GCC != null'
|
|
|
|
- if: '$GIMP_CI_MESON_CLANG != null'
|
2022-01-27 23:32:02 +08:00
|
|
|
- if: '$GIMP_CI_RASTER_ICONS != null'
|
2020-05-30 06:41:22 +08:00
|
|
|
stage: prepare
|
|
|
|
variables:
|
|
|
|
GIT_STRATEGY: none
|
|
|
|
cache: {}
|
|
|
|
image:
|
|
|
|
name: gcr.io/kaniko-project/executor:debug
|
|
|
|
entrypoint: [""]
|
|
|
|
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
|
|
|
|
- echo "FROM debian:testing" > Dockerfile
|
|
|
|
- echo "RUN apt-get update" >> Dockerfile
|
|
|
|
- echo "RUN apt-get install -y --no-install-recommends \\" >> Dockerfile
|
Migrate from intltool to gettext
intltool has long been dead upstream. Let's not poke the dead corpse,
please.
This commit is quite large, but that's mostly since trying to support a
hybrid of both gettext and intltool with both Meson and Autotools was
really hard, so I stopped trying.
Due to gettext relying on quite some things being at the exactly right
place in the autotools build (like `ABOUT-NLS` and `config.rpath`) we
really needed to cleanup the `autogen.sh` to only call `aclocal` and
`autoreconf`. No more strange magic; I tried to do it without changing
too much in the file, and things just broke. If people want to do
something more custom, they can just change the script directly. This
change also uncovered some problems in our `configure.ac`, like using
deprecated macros.
The following major changes happened:
* meson: Changed `custom_target()` to `i18n.merge_file()` for all
supported file types
* Added `.its` and `.loc` files for the GIMP-specific XML formats, so
that gettext understands them
* For the `.isl` (Window installer stuff) file, there's no easy way to
do this in gettext, so instead we start from an XML file (again with
its own ITS rules etc), translate that with gettext, and then use
`xsltproc` with a bit of magic to output the .isl file for each
language
* the `po*/Makefile.in.in` files are migrated to `Makevars` files,
which gettext natively understands.
Fixes: https://gitlab.gnome.org/GNOME/gimp/-/issues/8028
2022-06-09 02:35:45 +08:00
|
|
|
- echo "appstream at-spi2-core automake autopoint build-essential desktop-file-utils ffmpeg gettext ghostscript git glib-networking gobject-introspection graphviz graphviz-dev hicolor-icon-theme iso-codes libappstream-glib-dev libbz2-dev libdbus-glib-1-dev libexif-dev libgexiv2-dev libgirepository1.0-dev libgtk-3-bin libgtk-3-dev libgudev-1.0-dev libjson-glib-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-pip valac xauth xsltproc xvfb yelp-tools" >> Dockerfile
|
2021-11-29 02:36:07 +08:00
|
|
|
- echo "RUN pip3 install --no-cache-dir gi-docgen jinja2 Markdown markupsafe pygments toml typogrify" >> 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
|
|
|
|
|
|
|
|
|
|
|
|
build-image-win64:
|
2021-04-26 23:45:11 +08:00
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# On commits except tags.
|
|
|
|
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
|
2021-05-28 23:27:50 +08:00
|
|
|
# On merge requests.
|
|
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
2021-05-17 20:34:29 +08:00
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
2020-05-30 06:41:22 +08:00
|
|
|
stage: prepare
|
|
|
|
variables:
|
|
|
|
GIT_STRATEGY: none
|
|
|
|
cache: {}
|
|
|
|
image:
|
|
|
|
name: gcr.io/kaniko-project/executor:debug
|
|
|
|
entrypoint: [""]
|
|
|
|
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
|
|
|
|
- echo "FROM debian:testing" > Dockerfile
|
|
|
|
- echo "RUN apt-get update" >> Dockerfile
|
|
|
|
- echo "RUN apt-get install -y --no-install-recommends \\" >> Dockerfile
|
Migrate from intltool to gettext
intltool has long been dead upstream. Let's not poke the dead corpse,
please.
This commit is quite large, but that's mostly since trying to support a
hybrid of both gettext and intltool with both Meson and Autotools was
really hard, so I stopped trying.
Due to gettext relying on quite some things being at the exactly right
place in the autotools build (like `ABOUT-NLS` and `config.rpath`) we
really needed to cleanup the `autogen.sh` to only call `aclocal` and
`autoreconf`. No more strange magic; I tried to do it without changing
too much in the file, and things just broke. If people want to do
something more custom, they can just change the script directly. This
change also uncovered some problems in our `configure.ac`, like using
deprecated macros.
The following major changes happened:
* meson: Changed `custom_target()` to `i18n.merge_file()` for all
supported file types
* Added `.its` and `.loc` files for the GIMP-specific XML formats, so
that gettext understands them
* For the `.isl` (Window installer stuff) file, there's no easy way to
do this in gettext, so instead we start from an XML file (again with
its own ITS rules etc), translate that with gettext, and then use
`xsltproc` with a bit of magic to output the .isl file for each
language
* the `po*/Makefile.in.in` files are migrated to `Makevars` files,
which gettext natively understands.
Fixes: https://gitlab.gnome.org/GNOME/gimp/-/issues/8028
2022-06-09 02:35:45 +08:00
|
|
|
- echo "automake autopoint build-essential cmake cpio g++-mingw-w64-x86-64 gcc-mingw-w64-x86-64 gettext git libgdk-pixbuf2.0-dev libglib2.0-bin librsvg2-dev meson pkg-config python3 python3-distutils python3-docutils python3-pip rpm xsltproc" >> 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-win64-latest --cache=true --cache-ttl=120h
|
|
|
|
|
|
|
|
|
|
|
|
build-image-win32:
|
2021-04-26 23:45:11 +08:00
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# Custom builds only (web GUI, API or schedules).
|
|
|
|
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
|
2020-05-30 06:41:22 +08:00
|
|
|
stage: prepare
|
|
|
|
variables:
|
|
|
|
GIT_STRATEGY: none
|
|
|
|
cache: {}
|
|
|
|
image:
|
|
|
|
name: gcr.io/kaniko-project/executor:debug
|
|
|
|
entrypoint: [""]
|
|
|
|
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
|
|
|
|
- echo "FROM debian:testing" > Dockerfile
|
|
|
|
- echo "RUN apt-get update" >> Dockerfile
|
|
|
|
- echo "RUN apt-get install -y --no-install-recommends \\" >> Dockerfile
|
Migrate from intltool to gettext
intltool has long been dead upstream. Let's not poke the dead corpse,
please.
This commit is quite large, but that's mostly since trying to support a
hybrid of both gettext and intltool with both Meson and Autotools was
really hard, so I stopped trying.
Due to gettext relying on quite some things being at the exactly right
place in the autotools build (like `ABOUT-NLS` and `config.rpath`) we
really needed to cleanup the `autogen.sh` to only call `aclocal` and
`autoreconf`. No more strange magic; I tried to do it without changing
too much in the file, and things just broke. If people want to do
something more custom, they can just change the script directly. This
change also uncovered some problems in our `configure.ac`, like using
deprecated macros.
The following major changes happened:
* meson: Changed `custom_target()` to `i18n.merge_file()` for all
supported file types
* Added `.its` and `.loc` files for the GIMP-specific XML formats, so
that gettext understands them
* For the `.isl` (Window installer stuff) file, there's no easy way to
do this in gettext, so instead we start from an XML file (again with
its own ITS rules etc), translate that with gettext, and then use
`xsltproc` with a bit of magic to output the .isl file for each
language
* the `po*/Makefile.in.in` files are migrated to `Makevars` files,
which gettext natively understands.
Fixes: https://gitlab.gnome.org/GNOME/gimp/-/issues/8028
2022-06-09 02:35:45 +08:00
|
|
|
- echo "automake autopoint 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 rpm xsltproc" >> 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-win32-latest --cache=true --cache-ttl=120h
|
|
|
|
|
|
|
|
|
2020-08-06 19:21:05 +08:00
|
|
|
## GNU/Linux 64-bit CIs (Debian testing) ##
|
2019-11-25 02:41:06 +08:00
|
|
|
|
2020-08-06 19:21:05 +08:00
|
|
|
deps-debian:
|
2021-05-06 21:38:23 +08:00
|
|
|
rules:
|
2021-05-28 23:27:50 +08:00
|
|
|
# On commits and merge requests.
|
2021-05-17 20:34:29 +08:00
|
|
|
- if: '$CI_PIPELINE_SOURCE == "push"'
|
2021-05-28 23:27:50 +08:00
|
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
2021-05-17 20:34:29 +08:00
|
|
|
# On releases.
|
|
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_AUTOTOOLS != null'
|
|
|
|
- if: '$GIMP_CI_SOURCES != null'
|
|
|
|
- if: '$GIMP_CI_MESON_GCC != null'
|
|
|
|
- if: '$GIMP_CI_MESON_CLANG != null'
|
2022-01-27 23:32:02 +08:00
|
|
|
- if: '$GIMP_CI_RASTER_ICONS != null'
|
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
|
2019-10-02 03:36:19 +08:00
|
|
|
cache:
|
2019-07-29 07:11:44 +08:00
|
|
|
paths:
|
2020-05-29 01:51:50 +08:00
|
|
|
- apt-cache
|
2019-07-29 07:11:44 +08:00
|
|
|
artifacts:
|
2020-05-04 00:29:43 +08:00
|
|
|
expire_in: 2 hours
|
2019-10-02 00:36:07 +08:00
|
|
|
when: always
|
2019-07-29 07:11:44 +08:00
|
|
|
paths:
|
2019-08-21 19:54:38 +08:00
|
|
|
- "${INSTALL_DIR}"
|
2019-10-02 03:36:19 +08:00
|
|
|
- _babl/_build
|
2019-10-02 00:36:07 +08:00
|
|
|
- _gegl/_build
|
2019-07-29 07:11:44 +08:00
|
|
|
before_script:
|
2020-01-02 02:57:06 +08:00
|
|
|
- git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/babl.git _babl
|
2019-08-21 19:54:38 +08:00
|
|
|
- git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/gegl.git _gegl
|
2020-01-02 02:57:06 +08:00
|
|
|
- export PKG_CONFIG_PATH="${INSTALL_PREFIX}/lib/pkgconfig"
|
|
|
|
- export PKG_CONFIG_PATH="${INSTALL_PREFIX}/lib/`gcc -print-multiarch`/pkgconfig/:$PKG_CONFIG_PATH"
|
|
|
|
- export LD_LIBRARY_PATH="${INSTALL_PREFIX}/lib:${LD_LIBRARY_PATH}"
|
|
|
|
- export LD_LIBRARY_PATH="${INSTALL_PREFIX}/lib/`gcc -print-multiarch`:$LD_LIBRARY_PATH"
|
|
|
|
- export XDG_DATA_DIRS="${INSTALL_PREFIX}/share:/usr/local/share:/usr/share"
|
2019-07-29 07:11:44 +08:00
|
|
|
script:
|
2019-10-02 03:36:19 +08:00
|
|
|
- cd _babl
|
|
|
|
- meson -Dprefix="${INSTALL_PREFIX}" _build
|
|
|
|
- ninja -C _build
|
|
|
|
- ninja -C _build install
|
|
|
|
- cd ../_gegl
|
2019-08-21 19:54:38 +08:00
|
|
|
- meson --prefix="${INSTALL_PREFIX}" _build
|
2019-08-17 03:30:57 +08:00
|
|
|
- ninja -C _build
|
|
|
|
- ninja -C _build install
|
2020-05-30 06:41:22 +08:00
|
|
|
needs: ["build-image"]
|
2019-07-29 07:11:44 +08:00
|
|
|
|
2020-08-06 19:21:05 +08:00
|
|
|
.gimp-debian-base:
|
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-10-02 03:36:19 +08:00
|
|
|
dependencies:
|
2020-08-06 19:21:05 +08:00
|
|
|
- deps-debian
|
2020-05-29 01:51:50 +08:00
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- apt-cache
|
2019-07-29 07:11:44 +08:00
|
|
|
artifacts:
|
2020-05-09 19:19:18 +08:00
|
|
|
expire_in: 1 days
|
2019-10-02 00:36:07 +08:00
|
|
|
when: always
|
2020-10-04 00:04:27 +08:00
|
|
|
name: "app-build-${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
2019-07-29 07:11:44 +08:00
|
|
|
paths:
|
2019-10-02 00:36:07 +08:00
|
|
|
- _build
|
|
|
|
#- "${INSTALL_DIR}"
|
2019-07-29 07:11:44 +08:00
|
|
|
before_script:
|
2020-01-02 02:57:06 +08:00
|
|
|
- export PKG_CONFIG_PATH="${INSTALL_PREFIX}/lib/pkgconfig:${INSTALL_PREFIX}/share/pkgconfig"
|
|
|
|
- export PKG_CONFIG_PATH="${INSTALL_PREFIX}/lib/`gcc -print-multiarch`/pkgconfig/:$PKG_CONFIG_PATH"
|
|
|
|
- export PKG_CONFIG_PATH="${INSTALL_PREFIX}/share/`gcc -print-multiarch`/pkgconfig/:$PKG_CONFIG_PATH"
|
|
|
|
- export LD_LIBRARY_PATH="${INSTALL_PREFIX}/lib:${LD_LIBRARY_PATH}"
|
|
|
|
- export LD_LIBRARY_PATH="${INSTALL_PREFIX}/lib/`gcc -print-multiarch`:$LD_LIBRARY_PATH"
|
|
|
|
- export XDG_DATA_DIRS="${INSTALL_PREFIX}/share:/usr/local/share:/usr/share"
|
|
|
|
- export PATH="${INSTALL_PREFIX}/bin:$PATH"
|
2020-08-06 19:21:05 +08:00
|
|
|
needs: ["deps-debian"]
|
2019-07-29 07:11:44 +08:00
|
|
|
|
2020-08-06 19:21:05 +08:00
|
|
|
gimp-distcheck-debian:
|
2021-05-17 20:34:29 +08:00
|
|
|
rules:
|
2021-05-28 23:27:50 +08:00
|
|
|
# On commits and merge requests.
|
2021-05-17 20:34:29 +08:00
|
|
|
- if: '$CI_PIPELINE_SOURCE == "push"'
|
2021-05-28 23:27:50 +08:00
|
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
2021-05-17 20:34:29 +08:00
|
|
|
# On releases.
|
|
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_AUTOTOOLS != null'
|
|
|
|
- if: '$GIMP_CI_SOURCES != null'
|
2020-08-06 19:21:05 +08:00
|
|
|
extends: .gimp-debian-base
|
2020-08-03 08:27:29 +08:00
|
|
|
script:
|
|
|
|
- mkdir _build
|
|
|
|
- cd _build
|
|
|
|
- ../autogen.sh
|
|
|
|
--prefix="${INSTALL_PREFIX}"
|
|
|
|
--enable-debug
|
2021-11-29 02:36:07 +08:00
|
|
|
--enable-gi-docgen
|
2022-03-27 22:20:20 +08:00
|
|
|
--enable-g-ir-doc
|
2021-05-20 08:55:54 +08:00
|
|
|
--enable-windows-installer
|
2020-08-03 08:27:29 +08:00
|
|
|
- make -j "$(nproc)"
|
2021-05-15 01:56:55 +08:00
|
|
|
- make -j "$(nproc)" check
|
2020-08-07 21:30:05 +08:00
|
|
|
- make -j "$(nproc)" distcheck
|
2020-08-03 08:27:29 +08:00
|
|
|
|
2020-08-06 19:21:05 +08:00
|
|
|
gimp-meson-debian:
|
2021-04-26 23:45:11 +08:00
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# On commits except tags.
|
|
|
|
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
|
2021-05-28 23:27:50 +08:00
|
|
|
# On merge requests.
|
|
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
2021-05-17 20:34:29 +08:00
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_MESON_GCC != null'
|
2020-08-06 19:21:05 +08:00
|
|
|
extends: .gimp-debian-base
|
2019-08-09 22:18:43 +08:00
|
|
|
script:
|
|
|
|
- meson _build
|
2022-03-27 22:20:20 +08:00
|
|
|
--prefix="${INSTALL_PREFIX}"
|
2019-08-09 22:18:43 +08:00
|
|
|
- ninja -C _build
|
2020-01-04 05:55:09 +08:00
|
|
|
- ninja -C _build test
|
2022-03-19 20:51:56 +08:00
|
|
|
- ninja -C _build dist
|
2019-08-09 22:18:43 +08:00
|
|
|
|
2020-08-06 19:21:05 +08:00
|
|
|
gimp-clang-debian:
|
2021-04-26 23:45:11 +08:00
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# Custom builds only (web GUI, API or schedules).
|
|
|
|
- if: '$GIMP_CI_MESON_CLANG != null'
|
2020-08-06 19:21:05 +08:00
|
|
|
extends: .gimp-debian-base
|
2020-01-03 07:19:10 +08:00
|
|
|
variables:
|
|
|
|
CC: "clang"
|
|
|
|
CXX: "clang++"
|
|
|
|
script:
|
2020-05-30 06:41:22 +08:00
|
|
|
- mkdir -p "$APT_CACHE"
|
2020-05-29 01:51:50 +08:00
|
|
|
- apt-get install -y --no-install-recommends -o dir::cache::archives="$APT_CACHE"
|
2020-03-16 05:21:19 +08:00
|
|
|
clang libomp-dev
|
2020-01-03 07:19:10 +08:00
|
|
|
- meson _build
|
|
|
|
--prefix="${INSTALL_PREFIX}"
|
2021-05-20 10:32:20 +08:00
|
|
|
- ninja -C _build
|
2020-01-04 05:55:09 +08:00
|
|
|
- ninja -C _build test
|
2020-01-03 07:19:10 +08:00
|
|
|
|
2022-01-27 23:32:02 +08:00
|
|
|
gimp-meson-raster-icons:
|
|
|
|
rules:
|
|
|
|
# Custom builds only (web GUI, API or schedules).
|
|
|
|
- if: '$GIMP_CI_RASTER_ICONS != null'
|
|
|
|
extends: .gimp-debian-base
|
|
|
|
script:
|
|
|
|
- meson _build
|
|
|
|
--prefix="${INSTALL_PREFIX}"
|
|
|
|
-Dvector-icons=false
|
|
|
|
- ninja -C _build
|
|
|
|
- ninja -C _build test
|
|
|
|
|
|
|
|
gimp-autotools-raster-icons:
|
|
|
|
rules:
|
|
|
|
# Custom builds only (web GUI, API or schedules).
|
|
|
|
- if: '$GIMP_CI_RASTER_ICONS != null'
|
|
|
|
extends: .gimp-debian-base
|
|
|
|
script:
|
|
|
|
- tools/generate-icon-makefiles.py
|
|
|
|
- diff="$(git diff)"
|
|
|
|
- if [ -n "$diff" ]; then
|
|
|
|
echo "Outdated icon-list.mk - please run tools/generate-icon-makefiles.py";
|
|
|
|
echo "$diff";
|
|
|
|
exit 1;
|
|
|
|
fi
|
|
|
|
- mkdir _build
|
|
|
|
- cd _build
|
|
|
|
- ../autogen.sh
|
|
|
|
--prefix="${INSTALL_PREFIX}"
|
|
|
|
--disable-vector-icons
|
|
|
|
- make -j "$(nproc)"
|
|
|
|
|
2021-05-05 07:00:39 +08:00
|
|
|
## WINDOWS 64-bit CI (native MSYS2) ##
|
2019-11-25 02:41:06 +08:00
|
|
|
|
2021-05-05 07:00:39 +08:00
|
|
|
deps-win64-native:
|
2021-05-06 21:38:23 +08:00
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# 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'
|
2021-05-28 19:35:40 +08:00
|
|
|
# Merge requests with appropriate label.
|
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
2021-05-05 07:00:39 +08:00
|
|
|
stage: dependencies
|
2021-05-02 21:43:25 +08:00
|
|
|
variables:
|
|
|
|
MSYSTEM: "MINGW64"
|
|
|
|
CHERE_INVOKING: "yes"
|
2021-05-05 07:00:39 +08:00
|
|
|
tags:
|
|
|
|
- win32-ps
|
|
|
|
script:
|
|
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/build-deps-msys2.sh"
|
|
|
|
artifacts:
|
|
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
|
|
|
when: always
|
|
|
|
expire_in: 2 hours
|
|
|
|
paths:
|
2021-05-11 03:50:49 +08:00
|
|
|
- _install-w64
|
2021-05-16 01:40:12 +08:00
|
|
|
- aalib-1.4.0/_build
|
2021-05-05 07:00:39 +08:00
|
|
|
needs: []
|
|
|
|
|
|
|
|
gimp-win64-native:
|
2021-05-06 21:38:23 +08:00
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# 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'
|
2021-05-28 19:35:40 +08:00
|
|
|
# Merge requests with appropriate label.
|
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
2021-05-02 21:43:25 +08:00
|
|
|
stage: gimp
|
2021-05-05 07:00:39 +08:00
|
|
|
variables:
|
|
|
|
MSYSTEM: "MINGW64"
|
|
|
|
CHERE_INVOKING: "yes"
|
2021-05-02 21:43:25 +08:00
|
|
|
tags:
|
|
|
|
- win32-ps
|
|
|
|
script:
|
|
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
2021-05-05 07:00:39 +08:00
|
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/build-gimp-msys2.sh"
|
2021-05-04 02:01:29 +08:00
|
|
|
artifacts:
|
2021-05-05 07:00:39 +08:00
|
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
2021-05-04 02:01:29 +08:00
|
|
|
when: always
|
gitlab-ci, build: CI job to package GIMP on Windows from MSYS2 build.
This new job resulted in a package which allows to run GIMP on Windows
(as tested in a VM; at least it starts, I can create a new canvas and
paint). Of course I think this will need to be tweaked a little bit
more, as I'm sure we miss things here and there.
At the very least, even though I add the Python and Luajit binaries,
GIMP on Windows didn't find them. This will need to be investigated.
Also it looks like opening from a remote location may not work. Not sure
if this about a missing GIO module or maybe something which works
differently on Windows (I was not even able to drag'n drop from the
browser!). Anyway this needs to be looked at as well.
Note that gdk-pixbuf-query-loaders is apparently unneeded when GIMP is
built this way (unlike with our crossroad build).
All this to say that this is still an early attempt to full CI build for
Windows.
It doesn't invalidate the crossroad build, because cross-compilation
builds from Linux will always stay very important for Linux developers
to be able to easily fix Windows bugs too; yet the crossroad build has 2
major issues:
1. We haven't figured out yet how to run GObject Introspection tools for
cross-builds, so the crossroad builds are not full-featured (and this
is quite a major feature we are missing!).
2. Also I will want to run the installer in the CI at some point and the
one we use can only run on Windows itself AFAIK. We could try to run
it through Wine, but still anyway the point 1. is already quite a
blocker, let's do the simple thing.
Note that we will likely want to move to meson for this build, because
autotools is very slow on Windows. But as long as the few blocker meson
bugs are not fixed, let's stick to the slow yet good build.
2021-05-07 00:40:37 +08:00
|
|
|
expire_in: 1 day
|
2021-05-04 02:01:29 +08:00
|
|
|
paths:
|
2021-05-22 01:34:00 +08:00
|
|
|
- _install-w64
|
2021-06-19 02:40:04 +08:00
|
|
|
- _build-w64/build/windows/installer/lang/
|
2021-06-22 17:39:07 +08:00
|
|
|
- _build-w64/config.log
|
2021-05-04 02:01:29 +08:00
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- _ccache/
|
2021-05-05 07:00:39 +08:00
|
|
|
needs: ["deps-win64-native"]
|
|
|
|
|
2021-05-22 01:34:00 +08:00
|
|
|
packaging-win64-native:
|
|
|
|
rules:
|
|
|
|
# On releases.
|
|
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
2021-05-28 19:35:40 +08:00
|
|
|
# Merge requests with appropriate label.
|
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
2021-05-22 01:34:00 +08:00
|
|
|
stage: packaging
|
|
|
|
variables:
|
|
|
|
MSYSTEM: "MINGW64"
|
|
|
|
CHERE_INVOKING: "yes"
|
|
|
|
tags:
|
|
|
|
- win32-ps
|
|
|
|
script:
|
|
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/package-gimp-msys2.sh"
|
|
|
|
- cd gimp-w64
|
|
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ../build/windows/gitlab-ci/split-debug-msys2.sh"
|
|
|
|
artifacts:
|
|
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
|
|
|
when: always
|
|
|
|
expire_in: 1 day
|
|
|
|
paths:
|
|
|
|
- gimp-w64
|
2021-06-19 02:40:04 +08:00
|
|
|
- _build-w64/build/windows/installer/lang/
|
2022-02-21 08:23:37 +08:00
|
|
|
- done-dll.list
|
2021-05-22 01:34:00 +08:00
|
|
|
needs: ["gimp-win64-native"]
|
|
|
|
|
2021-05-08 21:05:35 +08:00
|
|
|
## WINDOWS 32-bit CI (native MSYS2) ##
|
|
|
|
|
|
|
|
deps-win32-native:
|
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# 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'
|
2021-05-28 19:35:40 +08:00
|
|
|
# Merge requests with appropriate label.
|
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
2021-05-08 21:05:35 +08:00
|
|
|
stage: dependencies
|
|
|
|
variables:
|
|
|
|
MSYSTEM: "MINGW32"
|
|
|
|
CHERE_INVOKING: "yes"
|
|
|
|
tags:
|
|
|
|
- win32-ps
|
|
|
|
script:
|
|
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/build-deps-msys2.sh"
|
|
|
|
artifacts:
|
|
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
|
|
|
when: always
|
|
|
|
expire_in: 2 hours
|
|
|
|
paths:
|
2021-05-11 03:50:49 +08:00
|
|
|
- _install-w32
|
2021-05-08 21:05:35 +08:00
|
|
|
needs: []
|
|
|
|
|
|
|
|
gimp-win32-native:
|
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# 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'
|
2021-05-28 19:35:40 +08:00
|
|
|
# Merge requests with appropriate label.
|
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
2021-05-08 21:05:35 +08:00
|
|
|
stage: gimp
|
|
|
|
variables:
|
|
|
|
MSYSTEM: "MINGW32"
|
|
|
|
CHERE_INVOKING: "yes"
|
|
|
|
tags:
|
|
|
|
- win32-ps
|
|
|
|
script:
|
|
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/build-gimp-msys2.sh"
|
|
|
|
artifacts:
|
|
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
|
|
|
when: always
|
|
|
|
expire_in: 1 day
|
|
|
|
paths:
|
2021-05-22 01:34:00 +08:00
|
|
|
- _install-w32
|
2021-06-22 17:39:07 +08:00
|
|
|
- _build-w32/config.log
|
2021-05-08 21:05:35 +08:00
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- _ccache/
|
|
|
|
needs: ["deps-win32-native"]
|
|
|
|
|
2021-05-22 01:34:00 +08:00
|
|
|
packaging-win32-native:
|
|
|
|
rules:
|
|
|
|
# On releases.
|
|
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
2021-05-28 19:35:40 +08:00
|
|
|
# Merge requests with appropriate label.
|
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
2021-05-22 01:34:00 +08:00
|
|
|
stage: packaging
|
|
|
|
variables:
|
|
|
|
MSYSTEM: "MINGW32"
|
|
|
|
CHERE_INVOKING: "yes"
|
|
|
|
tags:
|
|
|
|
- win32-ps
|
|
|
|
script:
|
|
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/package-gimp-msys2.sh"
|
|
|
|
- cd gimp-w32
|
|
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ../build/windows/gitlab-ci/split-debug-msys2.sh"
|
|
|
|
artifacts:
|
|
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
|
|
|
when: always
|
|
|
|
expire_in: 1 day
|
|
|
|
paths:
|
|
|
|
- gimp-w32
|
2022-02-21 08:23:37 +08:00
|
|
|
- done-dll.list
|
2021-05-22 01:34:00 +08:00
|
|
|
needs: ["gimp-win32-native"]
|
|
|
|
|
2021-05-05 07:00:39 +08:00
|
|
|
## WINDOWS 64-bit CI (cross-build crossroad) ##
|
2021-05-02 21:43:25 +08:00
|
|
|
|
2019-11-26 02:16:40 +08:00
|
|
|
deps-win64:
|
2021-04-26 23:45:11 +08:00
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# On commits except tags.
|
|
|
|
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
|
2021-05-28 23:27:50 +08:00
|
|
|
# On merge requests.
|
|
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
2021-05-17 20:34:29 +08:00
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
2019-10-02 03:36:19 +08:00
|
|
|
stage: dependencies
|
2020-05-30 06:41:22 +08:00
|
|
|
image: $CI_REGISTRY_IMAGE:build-win64-latest
|
2019-10-02 03:36:19 +08:00
|
|
|
variables:
|
|
|
|
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
|
|
|
|
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
|
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- .cache/crossroad/
|
2020-05-29 01:51:50 +08:00
|
|
|
- apt-cache
|
2019-09-25 20:27:09 +08:00
|
|
|
before_script:
|
2020-10-02 19:21:21 +08:00
|
|
|
- apt-get update
|
|
|
|
- apt-get install -y --no-install-recommends wine wine64
|
|
|
|
|
2020-04-16 21:19:36 +08:00
|
|
|
- git clone --depth=${GIT_DEPTH} git://git.tuxfamily.org/gitroot/crossroad/crossroad.git
|
2019-09-25 20:27:09 +08:00
|
|
|
- cd crossroad
|
2019-10-02 03:36:19 +08:00
|
|
|
- ./setup.py install --prefix=`pwd`/../.local
|
2019-09-25 20:27:09 +08:00
|
|
|
- cd ..
|
2020-04-27 20:46:11 +08:00
|
|
|
- pip3 install zstandard
|
2019-10-02 03:36:19 +08:00
|
|
|
script:
|
|
|
|
- export PATH="`pwd`/.local/bin:$PATH"
|
2021-09-29 15:43:39 +08:00
|
|
|
# libjxl uses C++ features that require posix threads
|
|
|
|
- update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
|
|
|
|
- update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
|
2021-05-05 07:00:39 +08:00
|
|
|
- crossroad w64 gimp --run="build/windows/gitlab-ci/build-deps-crossroad.sh"
|
2019-10-02 03:36:19 +08:00
|
|
|
artifacts:
|
2020-10-04 00:04:27 +08:00
|
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
2019-10-02 03:36:19 +08:00
|
|
|
when: always
|
2020-05-04 00:29:43 +08:00
|
|
|
expire_in: 2 hours
|
2019-10-02 03:36:19 +08:00
|
|
|
paths:
|
|
|
|
- .local/
|
|
|
|
- _deps/
|
2020-05-30 06:41:22 +08:00
|
|
|
needs: ["build-image-win64"]
|
2019-09-25 20:27:09 +08:00
|
|
|
|
2019-11-26 02:16:40 +08:00
|
|
|
gimp-win64:
|
2021-04-26 23:45:11 +08:00
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# On commits except tags.
|
|
|
|
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
|
2021-05-28 23:27:50 +08:00
|
|
|
# On merge requests.
|
|
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
2021-05-17 20:34:29 +08:00
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
2019-10-02 03:36:19 +08:00
|
|
|
stage: gimp
|
2020-05-30 06:41:22 +08:00
|
|
|
image: $CI_REGISTRY_IMAGE:build-win64-latest
|
2019-10-02 03:36:19 +08:00
|
|
|
dependencies:
|
2019-11-26 02:16:40 +08:00
|
|
|
- deps-win64
|
2019-10-01 19:44:42 +08:00
|
|
|
variables:
|
|
|
|
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
|
2019-10-02 03:36:19 +08:00
|
|
|
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
|
2019-10-01 19:44:42 +08:00
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- .cache/crossroad/
|
2020-05-29 01:51:50 +08:00
|
|
|
- apt-cache
|
2019-09-25 20:27:09 +08:00
|
|
|
script:
|
2019-10-02 03:36:19 +08:00
|
|
|
- export PATH="`pwd`/.local/bin:$PATH"
|
|
|
|
- mkdir _build && cd _build
|
|
|
|
- echo 'crossroad meson ..
|
2021-12-29 19:55:09 +08:00
|
|
|
-Dgi-docgen=disabled && ninja && ninja install &&
|
2019-10-25 04:47:56 +08:00
|
|
|
cp -fr $CROSSROAD_PREFIX/ ../gimp-prefix/
|
2019-10-25 04:20:20 +08:00
|
|
|
' |
|
2019-10-02 03:36:19 +08:00
|
|
|
crossroad w64 gimp --run="-"
|
2019-11-26 02:16:40 +08:00
|
|
|
needs: ["deps-win64"]
|
2019-09-25 20:27:09 +08:00
|
|
|
artifacts:
|
2020-10-04 00:04:27 +08:00
|
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
2019-10-02 00:36:07 +08:00
|
|
|
when: always
|
2020-05-09 19:19:18 +08:00
|
|
|
expire_in: 1 day
|
2019-09-25 20:27:09 +08:00
|
|
|
paths:
|
|
|
|
- _build/
|
2019-10-25 04:47:56 +08:00
|
|
|
- gimp-prefix/
|
2019-11-25 02:41:06 +08:00
|
|
|
|
2021-05-05 07:00:39 +08:00
|
|
|
## WINDOWS 32-bit CI (cross-build crossroad) ##
|
2019-11-25 02:41:06 +08:00
|
|
|
|
2019-11-26 02:16:40 +08:00
|
|
|
deps-win32:
|
2021-04-26 23:45:11 +08:00
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# Custom builds only (web GUI, API or schedules).
|
|
|
|
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
|
2019-11-25 02:41:06 +08:00
|
|
|
stage: dependencies
|
2020-05-30 06:41:22 +08:00
|
|
|
image: $CI_REGISTRY_IMAGE:build-win32-latest
|
2019-11-25 02:41:06 +08:00
|
|
|
variables:
|
|
|
|
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
|
|
|
|
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
|
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- .cache/crossroad/
|
2020-05-29 01:51:50 +08:00
|
|
|
- apt-cache
|
2019-11-25 02:41:06 +08:00
|
|
|
before_script:
|
2020-04-16 21:19:36 +08:00
|
|
|
- git clone --depth=${GIT_DEPTH} git://git.tuxfamily.org/gitroot/crossroad/crossroad.git
|
2019-11-25 02:41:06 +08:00
|
|
|
- cd crossroad
|
|
|
|
- ./setup.py install --prefix=`pwd`/../.local
|
|
|
|
- cd ..
|
2020-04-27 20:46:11 +08:00
|
|
|
- pip3 install zstandard
|
2019-11-25 02:41:06 +08:00
|
|
|
script:
|
|
|
|
- export PATH="`pwd`/.local/bin:$PATH"
|
2021-05-05 07:00:39 +08:00
|
|
|
- crossroad w32 gimp --run="build/windows/gitlab-ci/build-deps-crossroad.sh"
|
2019-11-25 02:41:06 +08:00
|
|
|
artifacts:
|
2020-10-04 00:04:27 +08:00
|
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
2019-11-25 02:41:06 +08:00
|
|
|
when: always
|
2020-05-09 19:19:18 +08:00
|
|
|
expire_in: 2 hours
|
2019-11-25 02:41:06 +08:00
|
|
|
paths:
|
|
|
|
- .local/
|
|
|
|
- _deps/
|
2020-05-30 06:41:22 +08:00
|
|
|
needs: ["build-image-win32"]
|
2019-11-25 02:41:06 +08:00
|
|
|
|
2019-11-26 02:16:40 +08:00
|
|
|
gimp-win32:
|
2021-04-26 23:45:11 +08:00
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# Custom builds only (web GUI, API or schedules).
|
|
|
|
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
|
2019-11-25 02:41:06 +08:00
|
|
|
stage: gimp
|
2020-05-30 06:41:22 +08:00
|
|
|
image: $CI_REGISTRY_IMAGE:build-win32-latest
|
2019-11-25 02:41:06 +08:00
|
|
|
dependencies:
|
2019-11-26 02:16:40 +08:00
|
|
|
- deps-win32
|
2019-11-25 02:41:06 +08:00
|
|
|
variables:
|
|
|
|
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
|
|
|
|
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
|
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- .cache/crossroad/
|
2020-05-29 01:51:50 +08:00
|
|
|
- apt-cache
|
2019-11-25 02:41:06 +08:00
|
|
|
script:
|
|
|
|
- export PATH="`pwd`/.local/bin:$PATH"
|
|
|
|
- mkdir _build && cd _build
|
|
|
|
- echo 'crossroad meson ..
|
2021-11-29 02:36:07 +08:00
|
|
|
-Dwmf=disabled -Dmng=disabled -Dgi_docgen=false && ninja && ninja install &&
|
2019-11-25 02:41:06 +08:00
|
|
|
cp -fr $CROSSROAD_PREFIX/ ../gimp-prefix/
|
|
|
|
' |
|
|
|
|
crossroad w32 gimp --run="-"
|
2019-11-26 02:16:40 +08:00
|
|
|
needs: ["deps-win32"]
|
2019-11-25 02:41:06 +08:00
|
|
|
artifacts:
|
2020-10-04 00:04:27 +08:00
|
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
2019-11-25 02:41:06 +08:00
|
|
|
when: always
|
2020-05-04 00:29:43 +08:00
|
|
|
expire_in: 1 day
|
2019-11-25 02:41:06 +08:00
|
|
|
paths:
|
|
|
|
- _build/
|
|
|
|
- gimp-prefix/
|
2020-04-29 00:39:32 +08:00
|
|
|
|
2020-09-07 23:49:37 +08:00
|
|
|
|
|
|
|
## Linux Flatpak nightly CI ##
|
|
|
|
|
|
|
|
## To learn more about the CI, go to https://gitlab.gnome.org/GNOME/Initiatives/-/wikis/DevOps-with-Flatpak
|
|
|
|
|
|
|
|
flatpak:
|
2022-07-27 18:40:45 +08:00
|
|
|
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
|
2020-09-07 23:49:37 +08:00
|
|
|
stage: gimp
|
2021-07-26 03:58:04 +08:00
|
|
|
tags:
|
|
|
|
- flatpak
|
2020-09-07 23:49:37 +08:00
|
|
|
needs: []
|
2021-05-27 01:35:19 +08:00
|
|
|
rules:
|
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_FLATPAK != null'
|
2021-05-28 19:35:40 +08:00
|
|
|
# Merge requests with appropriate label.
|
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Flatpak package.*/'
|
2020-09-07 23:49:37 +08:00
|
|
|
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"
|
2021-07-26 03:58:04 +08:00
|
|
|
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
|
|
|
|
|
|
|
|
- rewrite-flatpak-manifest ${MANIFEST_PATH} ${FLATPAK_MODULE} ${CONFIG_OPTS}
|
2021-05-27 02:28:47 +08:00
|
|
|
# Our script is too long for Gitlab and ends up with:
|
|
|
|
# > Job's log exceeded limit of 16777216 bytes.
|
|
|
|
# > Job execution will continue but no more output will be collected.
|
|
|
|
# To make debugging actually possible, let's save logs as a file.
|
2021-09-05 20:26:44 +08:00
|
|
|
- flatpak-builder --user --disable-rofiles-fuse flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
|
|
|
|
> flatpak-builder.log 2>&1
|
2021-07-26 03:58:04 +08:00
|
|
|
# Generate a Flatpak bundle
|
|
|
|
- flatpak build-bundle repo ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${APP_ID} ${BRANCH}
|
|
|
|
- tar cf repo.tar repo/
|
|
|
|
|
|
|
|
# XXX This job is mostly the same as .flatpak job of
|
|
|
|
# flatpak_ci_initiative.yml so far, except that I removed the
|
|
|
|
# automatic tests inside the Flatpak env at the end. The reason is
|
|
|
|
# that this part suddenly stopped working (even though the flatpak
|
|
|
|
# itself is functional) because the rebuild somehow was not
|
|
|
|
# rebuilding plug-ins. Yet one of the test (save-and-export)
|
|
|
|
# requires plug-ins to be built.
|
|
|
|
|
2021-05-27 02:28:47 +08:00
|
|
|
artifacts:
|
2021-09-05 20:26:44 +08:00
|
|
|
when: always
|
2021-05-27 02:28:47 +08:00
|
|
|
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'
|
2021-07-26 03:58:04 +08:00
|
|
|
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'
|
2020-09-07 23:49:37 +08:00
|
|
|
|
2020-04-29 00:39:32 +08:00
|
|
|
cppcheck:
|
2021-05-15 01:56:55 +08:00
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# Custom builds only (web GUI, API or schedules).
|
|
|
|
- if: '$GIMP_CI_CPPCHECK != null'
|
2020-04-29 00:39:32 +08:00
|
|
|
stage: analysis
|
|
|
|
before_script:
|
|
|
|
- apt-get update
|
|
|
|
- apt-get install -y cppcheck
|
|
|
|
script:
|
2020-04-29 20:05:31 +08:00
|
|
|
- cppcheck -q -j8 --enable=all --force --output-file=cppcheck.xml --xml --xml-version=2
|
|
|
|
-i _build -i _deps -i gimp-prefix -i .local -i .cache .
|
2020-04-29 00:39:32 +08:00
|
|
|
- mkdir report
|
|
|
|
- cppcheck-htmlreport --source-dir=. --title=gimp --file=cppcheck.xml --report-dir=report
|
|
|
|
artifacts:
|
2020-10-04 00:04:27 +08:00
|
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
2020-04-29 00:39:32 +08:00
|
|
|
expire_in: 1 week
|
|
|
|
when: always
|
|
|
|
paths:
|
|
|
|
- report
|
2020-05-05 22:21:43 +08:00
|
|
|
needs: []
|
2020-08-07 22:41:05 +08:00
|
|
|
|
2022-01-20 04:44:45 +08:00
|
|
|
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: []
|
|
|
|
|
2020-08-07 22:41:05 +08:00
|
|
|
## Ready-to-distribute ##
|
|
|
|
|
2021-05-11 03:50:49 +08:00
|
|
|
win-installer-nightly:
|
gitlab-ci, build: CI job to package GIMP on Windows from MSYS2 build.
This new job resulted in a package which allows to run GIMP on Windows
(as tested in a VM; at least it starts, I can create a new canvas and
paint). Of course I think this will need to be tweaked a little bit
more, as I'm sure we miss things here and there.
At the very least, even though I add the Python and Luajit binaries,
GIMP on Windows didn't find them. This will need to be investigated.
Also it looks like opening from a remote location may not work. Not sure
if this about a missing GIO module or maybe something which works
differently on Windows (I was not even able to drag'n drop from the
browser!). Anyway this needs to be looked at as well.
Note that gdk-pixbuf-query-loaders is apparently unneeded when GIMP is
built this way (unlike with our crossroad build).
All this to say that this is still an early attempt to full CI build for
Windows.
It doesn't invalidate the crossroad build, because cross-compilation
builds from Linux will always stay very important for Linux developers
to be able to easily fix Windows bugs too; yet the crossroad build has 2
major issues:
1. We haven't figured out yet how to run GObject Introspection tools for
cross-builds, so the crossroad builds are not full-featured (and this
is quite a major feature we are missing!).
2. Also I will want to run the installer in the CI at some point and the
one we use can only run on Windows itself AFAIK. We could try to run
it through Wine, but still anyway the point 1. is already quite a
blocker, let's do the simple thing.
Note that we will likely want to move to meson for this build, because
autotools is very slow on Windows. But as long as the few blocker meson
bugs are not fixed, let's stick to the slow yet good build.
2021-05-07 00:40:37 +08:00
|
|
|
rules:
|
2021-05-17 20:34:29 +08:00
|
|
|
# On releases.
|
|
|
|
- if: '$CI_COMMIT_TAG != null'
|
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
2021-05-28 19:35:40 +08:00
|
|
|
# Merge requests with appropriate label.
|
|
|
|
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
gitlab-ci, build: CI job to package GIMP on Windows from MSYS2 build.
This new job resulted in a package which allows to run GIMP on Windows
(as tested in a VM; at least it starts, I can create a new canvas and
paint). Of course I think this will need to be tweaked a little bit
more, as I'm sure we miss things here and there.
At the very least, even though I add the Python and Luajit binaries,
GIMP on Windows didn't find them. This will need to be investigated.
Also it looks like opening from a remote location may not work. Not sure
if this about a missing GIO module or maybe something which works
differently on Windows (I was not even able to drag'n drop from the
browser!). Anyway this needs to be looked at as well.
Note that gdk-pixbuf-query-loaders is apparently unneeded when GIMP is
built this way (unlike with our crossroad build).
All this to say that this is still an early attempt to full CI build for
Windows.
It doesn't invalidate the crossroad build, because cross-compilation
builds from Linux will always stay very important for Linux developers
to be able to easily fix Windows bugs too; yet the crossroad build has 2
major issues:
1. We haven't figured out yet how to run GObject Introspection tools for
cross-builds, so the crossroad builds are not full-featured (and this
is quite a major feature we are missing!).
2. Also I will want to run the installer in the CI at some point and the
one we use can only run on Windows itself AFAIK. We could try to run
it through Wine, but still anyway the point 1. is already quite a
blocker, let's do the simple thing.
Note that we will likely want to move to meson for this build, because
autotools is very slow on Windows. But as long as the few blocker meson
bugs are not fixed, let's stick to the slow yet good build.
2021-05-07 00:40:37 +08:00
|
|
|
variables:
|
|
|
|
CHERE_INVOKING: "yes"
|
|
|
|
tags:
|
|
|
|
- win32-ps
|
|
|
|
stage: distribution
|
|
|
|
dependencies:
|
2021-05-22 01:34:00 +08:00
|
|
|
- packaging-win64-native
|
|
|
|
- packaging-win32-native
|
2021-05-09 22:03:53 +08:00
|
|
|
artifacts:
|
|
|
|
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
|
|
|
|
when: always
|
2021-05-28 19:06:50 +08:00
|
|
|
expire_in: 1 week
|
2021-05-09 22:03:53 +08:00
|
|
|
paths:
|
2021-05-11 03:50:49 +08:00
|
|
|
- build/windows/installer/_Output
|
2021-05-22 22:55:04 +08:00
|
|
|
- installer.log
|
2021-05-09 22:03:53 +08:00
|
|
|
script:
|
|
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
2021-05-22 22:55:04 +08:00
|
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/installer-gimp-msys2.sh > installer.log 2>&1"
|
2021-05-22 01:34:00 +08:00
|
|
|
needs: ["packaging-win32-native", "packaging-win64-native"]
|
2021-05-09 22:03:53 +08:00
|
|
|
|
2020-08-07 22:41:05 +08:00
|
|
|
sources:
|
2021-05-17 20:34:29 +08:00
|
|
|
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'
|
2020-08-07 22:41:05 +08:00
|
|
|
stage: distribution
|
|
|
|
dependencies:
|
|
|
|
- gimp-distcheck-debian
|
|
|
|
artifacts:
|
2020-10-04 00:04:27 +08:00
|
|
|
name: "GIMP-sources-${CI_COMMIT_SHORT_SHA}"
|
2020-08-07 22:41:05 +08:00
|
|
|
when: always
|
2020-12-01 06:31:30 +08:00
|
|
|
expire_in: 2 days
|
2020-08-07 22:41:05 +08:00
|
|
|
paths:
|
2021-04-26 23:45:11 +08:00
|
|
|
- gimp-*.tar.bz2
|
|
|
|
- gimp-*.tar.bz2.SHA256SUMS
|
|
|
|
- gimp-*.tar.bz2.SHA512SUMS
|
2020-08-07 22:41:05 +08:00
|
|
|
script:
|
2021-04-26 23:45:11 +08:00
|
|
|
- mv _build/gimp-*.tar.bz2 .
|
|
|
|
- FILENAME=`ls gimp-*.tar.bz2` &&
|
|
|
|
sha256sum gimp-*.tar.bz2 > ${FILENAME}.SHA256SUMS &&
|
|
|
|
sha512sum gimp-*.tar.bz2 > ${FILENAME}.SHA512SUMS
|
2020-08-07 22:41:05 +08:00
|
|
|
needs: ["gimp-distcheck-debian"]
|
gitlab, build: Win32 distribution jobs for our CI.
The main purpose of these jobs is to only package the strict necessary
for a working GIMP under Windows, i.e. getting rid of all unnecessary
executables, and inspecting binary dependencies recursively to only
package used DLLs.
The dll_link.py script is taken from Siril codebase (see commit a86e82a8
on Siril repository, by FlorianBen). This was a very nice idea, and
makes for much smaller test archive (Siril is also GPLv3 so licensing is
ok for the reuse, also anyway it's just a small independent build
script).
Moreover having it as a separate job allows to have artifacts with only
the finale distribution (artifacts on the build job also have the build
directory and the whole prefix, which we want to keep in order to debug
when needed).
Hopefully I am not missing anything. Siril seems to package more, like
various gdk-pixbuf-*.exe, gspawn-*.exe and gdbus.exe. I am wondering if
these are actually necessary. I could run GIMP fine without these in
quick tests, but I guess I'll have to investigate a bit more to figure
this out. That's what nightly builds are for, after all, so hopefully
people will report if we miss some runtime dependencies.
2020-09-30 01:38:23 +08:00
|
|
|
|
2022-08-02 02:13:32 +08:00
|
|
|
sources-meson:
|
|
|
|
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-meson-debian
|
|
|
|
artifacts:
|
|
|
|
name: "GIMP-sources-meson-${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/meson-dist/gimp-*.tar.xz .
|
|
|
|
- BASENAME=`ls gimp-*.tar.xz | sed 's/.tar.xz//'` &&
|
|
|
|
FILENAME="$BASENAME-meson.tar.xz" &&
|
|
|
|
mv $BASENAME.tar.xz $FILENAME &&
|
|
|
|
sha256sum gimp-*.tar.xz > ${FILENAME}.SHA256SUMS &&
|
|
|
|
sha512sum gimp-*.tar.xz > ${FILENAME}.SHA512SUMS
|
|
|
|
needs: ["gimp-meson-debian"]
|
|
|
|
|
2022-03-27 22:20:20 +08:00
|
|
|
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
|
|
|
|
dependencies:
|
|
|
|
- gimp-distcheck-debian
|
|
|
|
artifacts:
|
|
|
|
name: "GIMP-sources-${CI_COMMIT_SHORT_SHA}"
|
|
|
|
when: always
|
|
|
|
expire_in: 2 days
|
|
|
|
paths:
|
|
|
|
- g-ir-docs
|
|
|
|
- reference
|
|
|
|
script:
|
|
|
|
- mv _build/devel-docs/g-ir-docs .
|
|
|
|
- mv _build/devel-docs/reference .
|
|
|
|
needs: ["gimp-distcheck-debian"]
|
|
|
|
|
2020-09-07 23:49:37 +08:00
|
|
|
flatpak-nightly:
|
|
|
|
extends: '.publish_nightly'
|
|
|
|
stage: distribution
|
2021-05-27 01:58:52 +08:00
|
|
|
only:
|
|
|
|
variables:
|
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
# I don't use 'rules:' because .publish_nightly template uses an
|
|
|
|
# 'only:' already which clashes with 'rules:'.
|
|
|
|
- $GIMP_CI_FLATPAK != null
|
2020-09-07 23:49:37 +08:00
|
|
|
needs: ["flatpak"]
|
|
|
|
dependencies:
|
|
|
|
- 'flatpak'
|