2021-05-17 20:34:29 +08:00
|
|
|
# Default commit CI should only run the following pipelines:
|
2023-05-27 05:54:30 +08:00
|
|
|
# - Linux 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:
|
|
|
|
# - 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_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.
|
2023-05-27 05:54:30 +08:00
|
|
|
# - GIMP_CI_SOURCES: trigger the meson/gcc build and the source tarball job.
|
2021-05-17 20:34:29 +08:00
|
|
|
# - 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.
|
2023-05-27 05:54:30 +08:00
|
|
|
# - GIMP_CI_RASTER_ICONS: trigger the meson build 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'
|
|
|
|
|
2023-06-11 06:30:45 +08:00
|
|
|
image: debian:bookworm
|
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_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'
|
2023-08-09 21:25:34 +08:00
|
|
|
# This is needed for the BMP image generation for the installer.
|
|
|
|
# See commit e1203e9f76f.
|
|
|
|
- if: '$GIMP_CI_WIN_INSTALLER != 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
|
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
|
2023-06-06 17:27:05 +08:00
|
|
|
- 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
|
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
|
|
|
python3-pip
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
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
|
2022-12-23 23:26:45 +08:00
|
|
|
# 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).
|
2023-06-06 17:27:05 +08:00
|
|
|
- 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
|
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
|
2023-06-06 17:27:05 +08:00
|
|
|
- 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
|
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
|
|
|
|
|
|
|
|
|
2023-06-11 06:30:45 +08:00
|
|
|
## GNU/Linux 64-bit CIs (Debian bookworm) ##
|
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_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'
|
2023-08-09 21:25:34 +08:00
|
|
|
# This is needed for the BMP image generation for the installer.
|
|
|
|
# See commit e1203e9f76f.
|
|
|
|
- if: '$GIMP_CI_WIN_INSTALLER != 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
|
2023-01-24 22:35:30 +08:00
|
|
|
- meson setup -Dprefix="${INSTALL_PREFIX}" _build
|
2019-10-02 03:36:19 +08:00
|
|
|
- ninja -C _build
|
|
|
|
- ninja -C _build install
|
|
|
|
- cd ../_gegl
|
2023-01-24 22:35:30 +08:00
|
|
|
- meson setup --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
|
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
|
|
|
- "${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"
|
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
|
|
|
- export GI_TYPELIB_PATH="${INSTALL_PREFIX}/lib/`gcc -print-multiarch`/girepository-1.0/:${GI_TYPELIB_PATH}"
|
2020-01-02 02:57:06 +08:00
|
|
|
- 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-meson-debian:
|
2021-04-26 23:45:11 +08:00
|
|
|
rules:
|
2022-08-20 17:17:44 +08:00
|
|
|
# On commits and merge requests.
|
|
|
|
- if: '$CI_PIPELINE_SOURCE == "push"'
|
2021-05-28 23:27:50 +08:00
|
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
2023-08-07 20:32:00 +08:00
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
# This is needed for the BMP image generation for the installer.
|
|
|
|
# See commit e1203e9f76f.
|
|
|
|
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
2022-08-20 17:17:44 +08:00
|
|
|
# On releases.
|
|
|
|
- if: '$CI_COMMIT_TAG != null'
|
2021-05-17 20:34:29 +08:00
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_MESON_GCC != null'
|
2022-08-20 17:17:44 +08:00
|
|
|
- if: '$GIMP_CI_SOURCES != null'
|
2020-08-06 19:21:05 +08:00
|
|
|
extends: .gimp-debian-base
|
2019-08-09 22:18:43 +08:00
|
|
|
script:
|
2023-01-24 22:35:30 +08:00
|
|
|
- meson setup _build
|
2022-03-27 22:20:20 +08:00
|
|
|
--prefix="${INSTALL_PREFIX}"
|
2022-09-08 07:17:06 +08:00
|
|
|
-Dg-ir-doc=true -Dgi-docgen=enabled
|
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
|
|
|
-Dwindows-installer=true
|
2019-08-09 22:18:43 +08:00
|
|
|
- ninja -C _build
|
2020-01-04 05:55:09 +08:00
|
|
|
- ninja -C _build test
|
2022-08-02 05:17:00 +08:00
|
|
|
# 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
|
2022-03-19 20:51:56 +08:00
|
|
|
- ninja -C _build dist
|
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
|
|
|
- ninja -C _build install
|
2023-05-24 06:38:00 +08:00
|
|
|
artifacts:
|
|
|
|
name: "gimp-meson-debian-name-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
|
|
when: always
|
|
|
|
reports:
|
|
|
|
junit: "_build/meson-logs/testlog.junit.xml"
|
|
|
|
paths:
|
|
|
|
- "_build/config.h"
|
|
|
|
- "_build/meson-logs"
|
2023-06-07 06:43:26 +08:00
|
|
|
- "_build/meson-dist"
|
2023-06-07 16:24:22 +08:00
|
|
|
- "_build/devel-docs"
|
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
|
|
|
- "_build/build/windows/installer/"
|
2023-06-07 06:43:26 +08:00
|
|
|
- "${INSTALL_DIR}"
|
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
|
2023-01-24 22:35:30 +08:00
|
|
|
- meson setup _build
|
2020-01-03 07:19:10 +08:00
|
|
|
--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:
|
2023-01-24 22:35:30 +08:00
|
|
|
- meson setup _build
|
2022-01-27 23:32:02 +08:00
|
|
|
--prefix="${INSTALL_PREFIX}"
|
|
|
|
-Dvector-icons=false
|
|
|
|
- ninja -C _build
|
|
|
|
- ninja -C _build test
|
|
|
|
|
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-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
|
2023-06-27 06:25:27 +08:00
|
|
|
- _build-w64/build/windows/installer/
|
2023-06-06 22:26:19 +08:00
|
|
|
- _build-w64/meson-*/
|
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
|
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
|
2023-06-06 22:26:19 +08:00
|
|
|
- _build-w32/meson-*/
|
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/"
|
2023-01-07 01:33:17 +08:00
|
|
|
# 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"
|
2019-10-02 03:36:19 +08:00
|
|
|
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
|
|
|
|
|
2023-08-07 21:14:27 +08:00
|
|
|
- git clone --depth=${GIT_DEPTH} https://gitlab.freedesktop.org/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 ..
|
2019-10-02 03:36:19 +08:00
|
|
|
script:
|
|
|
|
- export PATH="`pwd`/.local/bin:$PATH"
|
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
|
2023-01-24 22:35:30 +08:00
|
|
|
- echo 'crossroad meson setup ..
|
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/"
|
2023-01-07 01:33:17 +08:00
|
|
|
DEB_PYTHON_INSTALL_LAYOUT: "deb"
|
2019-11-25 02:41:06 +08:00
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- .cache/crossroad/
|
2020-05-29 01:51:50 +08:00
|
|
|
- apt-cache
|
2019-11-25 02:41:06 +08:00
|
|
|
before_script:
|
2023-08-07 21:14:27 +08:00
|
|
|
- git clone --depth=${GIT_DEPTH} https://gitlab.freedesktop.org/crossroad/crossroad.git
|
2019-11-25 02:41:06 +08:00
|
|
|
- cd crossroad
|
|
|
|
- ./setup.py install --prefix=`pwd`/../.local
|
|
|
|
- cd ..
|
|
|
|
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
|
2023-01-24 22:35:30 +08:00
|
|
|
- echo 'crossroad meson setup ..
|
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}
|
2023-03-21 06:24:37 +08:00
|
|
|
2>&1 | tee flatpak-builder.log
|
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
|
2023-08-07 20:32:00 +08:00
|
|
|
# This is needed for the BMP image generation for the installer.
|
|
|
|
# See commit e1203e9f76f.
|
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
|
|
|
- gimp-meson-debian
|
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"
|
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
|
|
|
needs: ["packaging-win32-native", "packaging-win64-native", "gimp-meson-debian"]
|
2021-05-09 22:03:53 +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 .
|
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
|
|
|
|
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
|
2022-09-08 07:17:06 +08:00
|
|
|
image: $CI_REGISTRY_IMAGE:build-debian-latest
|
2022-03-27 22:20:20 +08:00
|
|
|
dependencies:
|
2022-09-08 07:17:06 +08:00
|
|
|
- gimp-meson-debian
|
2022-03-27 22:20:20 +08:00
|
|
|
artifacts:
|
|
|
|
name: "GIMP-sources-${CI_COMMIT_SHORT_SHA}"
|
|
|
|
when: always
|
|
|
|
expire_in: 2 days
|
|
|
|
paths:
|
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
|
|
|
- gimp-api-docs-*.tar.xz
|
|
|
|
- gimp-api-docs-*.tar.xz.SHA256SUMS
|
|
|
|
- gimp-api-docs-*.tar.xz.SHA512SUMS
|
2022-03-27 22:20:20 +08:00
|
|
|
script:
|
2022-09-08 07:17:06 +08:00
|
|
|
- GIMP_VER=$(grep GIMP_VERSION _build/config.h | head -1 | sed 's/^.*"\([^"]*\)"$/\1/') &&
|
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
|
|
|
APP_VER=$(echo $GIMP_VER | sed 's/\([0-9]\+\.[0-9]\+\)\..*/\1/') &&
|
|
|
|
DIR_NAME=gimp-api-docs-$GIMP_VER &&
|
|
|
|
mkdir $DIR_NAME &&
|
|
|
|
mv "${INSTALL_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 -cJf ${TAR_NAME} $DIR_NAME &&
|
|
|
|
sha256sum $TAR_NAME > ${TAR_NAME}.SHA256SUMS &&
|
|
|
|
sha512sum $TAR_NAME > ${TAR_NAME}.SHA512SUMS
|
2022-09-08 07:17:06 +08:00
|
|
|
needs: ["gimp-meson-debian"]
|
2022-03-27 22:20:20 +08:00
|
|
|
|
2022-10-27 02:33:02 +08:00
|
|
|
win64-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: distribution
|
|
|
|
dependencies:
|
|
|
|
- gimp-win64
|
|
|
|
variables:
|
|
|
|
GIMP_PREFIX: "gimp-prefix"
|
|
|
|
GIMP_DISTRIB: "gimp-w64"
|
|
|
|
artifacts:
|
|
|
|
name: "GIMP-Win64-CI-${CI_COMMIT_SHORT_SHA}"
|
|
|
|
when: always
|
|
|
|
expire_in: 2 days
|
|
|
|
paths:
|
|
|
|
- gimp-w64
|
|
|
|
script:
|
|
|
|
- apt-get update
|
|
|
|
- apt-get install -y --no-install-recommends
|
|
|
|
python3 binutils-mingw-w64-x86-64 file
|
|
|
|
libglib2.0-bin
|
|
|
|
|
|
|
|
# Package ressources.
|
|
|
|
- mkdir -p ${GIMP_DISTRIB}
|
|
|
|
- cp -fr ${GIMP_PREFIX}/etc ${GIMP_DISTRIB}
|
|
|
|
- cp -fr ${GIMP_PREFIX}/include ${GIMP_DISTRIB}
|
|
|
|
- cp -fr ${GIMP_PREFIX}/share ${GIMP_DISTRIB}
|
|
|
|
|
|
|
|
# Package executables.
|
|
|
|
- mkdir ${GIMP_DISTRIB}/bin
|
|
|
|
- cp -fr ${GIMP_PREFIX}/bin/gimp*.exe ${GIMP_DISTRIB}/bin/
|
|
|
|
|
|
|
|
# Add a wrapper at tree root, less messy than having to look for the
|
|
|
|
# binary inside bin/, in the middle of all the DLLs.
|
|
|
|
- echo "bin\gimp-2.99.exe" > ${GIMP_DISTRIB}/gimp.cmd
|
|
|
|
|
|
|
|
# Package library data and modules.
|
|
|
|
- mkdir ${GIMP_DISTRIB}/lib/
|
|
|
|
- cp -fr ${GIMP_PREFIX}/lib/gimp ${GIMP_DISTRIB}/lib/
|
|
|
|
- cp -fr ${GIMP_PREFIX}/lib/gio ${GIMP_DISTRIB}/lib/
|
|
|
|
- cp -fr ${GIMP_PREFIX}/lib/gdk-pixbuf-2.0 ${GIMP_DISTRIB}/lib/
|
|
|
|
- cp -fr ${GIMP_PREFIX}/lib/gegl-0.4 ${GIMP_DISTRIB}/lib/
|
|
|
|
- cp -fr ${GIMP_PREFIX}/lib/babl-0.1 ${GIMP_DISTRIB}/lib/
|
|
|
|
- cp -fr ${GIMP_PREFIX}/lib/girepository-1.0 ${GIMP_DISTRIB}/lib/
|
|
|
|
|
|
|
|
# Remove files for older GIMP
|
|
|
|
- rm -fr ${GIMP_DISTRIB}/lib/gimp/2.0/
|
|
|
|
|
|
|
|
# Generate share/glib-2.0/schemas/gschemas.compiled
|
|
|
|
- glib-compile-schemas --targetdir=${GIMP_DISTRIB}/share/glib-2.0/schemas ${GIMP_DISTRIB}/share/glib-2.0/schemas
|
|
|
|
|
|
|
|
# Package needed DLLs only
|
2022-10-27 02:42:07 +08:00
|
|
|
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list
|
|
|
|
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-console-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list
|
|
|
|
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-test-clipboard-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list
|
|
|
|
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimptool-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list
|
2022-10-27 02:33:02 +08:00
|
|
|
|
|
|
|
- for dll in ${GIMP_DISTRIB}/lib/babl-0.1/*.dll; do
|
2022-10-27 02:42:07 +08:00
|
|
|
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list;
|
2022-10-27 02:33:02 +08:00
|
|
|
done
|
|
|
|
- for dll in ${GIMP_DISTRIB}/lib/gegl-0.4/*.dll; do
|
2022-10-27 02:42:07 +08:00
|
|
|
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list;
|
2022-10-27 02:33:02 +08:00
|
|
|
done
|
|
|
|
- for dll in ${GIMP_DISTRIB}/lib/gio/modules/*.dll; do
|
2022-10-27 02:42:07 +08:00
|
|
|
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list;
|
2022-10-27 02:33:02 +08:00
|
|
|
done
|
|
|
|
- for dll in ${GIMP_DISTRIB}/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.dll; do
|
2022-10-27 02:42:07 +08:00
|
|
|
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list;
|
2022-10-27 02:33:02 +08:00
|
|
|
done
|
|
|
|
- for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/modules/*.dll; do
|
2022-10-27 02:42:07 +08:00
|
|
|
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list;
|
2022-10-27 02:33:02 +08:00
|
|
|
done
|
|
|
|
- for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/plug-ins/*/*.exe; do
|
2022-10-27 02:42:07 +08:00
|
|
|
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list;
|
2022-10-27 02:33:02 +08:00
|
|
|
done
|
|
|
|
needs: ["gimp-win64"]
|
|
|
|
|
|
|
|
win32-nightly:
|
|
|
|
rules:
|
|
|
|
# Custom builds only (web GUI, API or schedules).
|
|
|
|
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
|
|
|
|
stage: distribution
|
|
|
|
dependencies:
|
|
|
|
- gimp-win32
|
|
|
|
- deps-win64
|
|
|
|
variables:
|
|
|
|
GIMP_PREFIX: "gimp-prefix"
|
|
|
|
GIMP_DISTRIB: "gimp-w32"
|
|
|
|
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
|
|
|
|
artifacts:
|
|
|
|
name: "GIMP-Win32-${CI_COMMIT_SHORT_SHA}"
|
|
|
|
when: always
|
|
|
|
expire_in: 2 days
|
|
|
|
paths:
|
|
|
|
- gimp-w32
|
|
|
|
script:
|
|
|
|
- apt-get update
|
|
|
|
- apt-get install -y --no-install-recommends
|
|
|
|
python3 binutils-mingw-w64-i686 file
|
|
|
|
libglib2.0-bin
|
|
|
|
|
|
|
|
# Package ressources.
|
|
|
|
- mkdir -p ${GIMP_DISTRIB}
|
|
|
|
- cp -fr ${GIMP_PREFIX}/etc ${GIMP_DISTRIB}
|
|
|
|
- cp -fr ${GIMP_PREFIX}/include ${GIMP_DISTRIB}
|
|
|
|
- cp -fr ${GIMP_PREFIX}/ssl ${GIMP_DISTRIB}
|
|
|
|
- cp -fr ${GIMP_PREFIX}/share ${GIMP_DISTRIB}
|
|
|
|
|
|
|
|
# Package executables.
|
|
|
|
- mkdir ${GIMP_DISTRIB}/bin
|
|
|
|
- cp -fr ${GIMP_PREFIX}/bin/gimp*.exe ${GIMP_DISTRIB}/bin/
|
|
|
|
|
|
|
|
# Add a wrapper at tree root, less messy than having to look for the
|
|
|
|
# binary inside bin/, in the middle of all the DLLs.
|
|
|
|
- echo "bin\gimp-2.99.exe" > ${GIMP_DISTRIB}/gimp.cmd
|
|
|
|
|
|
|
|
# Package library data and modules.
|
|
|
|
- mkdir ${GIMP_DISTRIB}/lib/
|
|
|
|
- cp -fr ${GIMP_PREFIX}/lib/gimp ${GIMP_DISTRIB}/lib/
|
|
|
|
- cp -fr ${GIMP_PREFIX}/lib/gio ${GIMP_DISTRIB}/lib/
|
|
|
|
- cp -fr ${GIMP_PREFIX}/lib/gdk-pixbuf-2.0 ${GIMP_DISTRIB}/lib/
|
|
|
|
- cp -fr ${GIMP_PREFIX}/lib/gegl-0.4 ${GIMP_DISTRIB}/lib/
|
|
|
|
- cp -fr ${GIMP_PREFIX}/lib/babl-0.1 ${GIMP_DISTRIB}/lib/
|
|
|
|
- cp -fr ${GIMP_PREFIX}/lib/girepository-1.0 ${GIMP_DISTRIB}/lib/
|
|
|
|
|
|
|
|
# I fail to install wine32 inside the Gitlab runner. So instead, I
|
|
|
|
# just reuse the loaders.cache generated in the deps-win64 job as
|
|
|
|
# they should be the same (text format).
|
|
|
|
- cp ${XDG_DATA_HOME}/crossroad/roads/w64/gimp/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache ${GIMP_DISTRIB}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
|
|
|
|
|
|
|
|
# Generate share/glib-2.0/schemas/gschemas.compiled
|
|
|
|
- glib-compile-schemas --targetdir=${GIMP_DISTRIB}/share/glib-2.0/schemas ${GIMP_DISTRIB}/share/glib-2.0/schemas
|
|
|
|
|
|
|
|
# Package needed DLLs only.
|
2022-10-27 02:42:07 +08:00
|
|
|
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list
|
|
|
|
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-console-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list
|
|
|
|
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-test-clipboard-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list
|
|
|
|
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimptool-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list
|
2022-10-27 02:33:02 +08:00
|
|
|
|
|
|
|
- for dll in ${GIMP_DISTRIB}/lib/babl-0.1/*.dll; do
|
2022-10-27 02:42:07 +08:00
|
|
|
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list;
|
2022-10-27 02:33:02 +08:00
|
|
|
done
|
|
|
|
- for dll in ${GIMP_DISTRIB}/lib/gegl-0.4/*.dll; do
|
2022-10-27 02:42:07 +08:00
|
|
|
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list;
|
2022-10-27 02:33:02 +08:00
|
|
|
done
|
|
|
|
- for dll in ${GIMP_DISTRIB}/lib/gio/modules/*.dll; do
|
2022-10-27 02:42:07 +08:00
|
|
|
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list;
|
2022-10-27 02:33:02 +08:00
|
|
|
done
|
|
|
|
- for dll in ${GIMP_DISTRIB}/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.dll; do
|
2022-10-27 02:42:07 +08:00
|
|
|
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list;
|
2022-10-27 02:33:02 +08:00
|
|
|
done
|
|
|
|
- for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/modules/*.dll; do
|
2022-10-27 02:42:07 +08:00
|
|
|
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list;
|
2022-10-27 02:33:02 +08:00
|
|
|
done
|
|
|
|
- for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/plug-ins/*/*.exe; do
|
2022-10-27 02:42:07 +08:00
|
|
|
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list;
|
2022-10-27 02:33:02 +08:00
|
|
|
done
|
|
|
|
needs: ["gimp-win32", "deps-win64"]
|
|
|
|
|
2020-09-07 23:49:37 +08:00
|
|
|
flatpak-nightly:
|
|
|
|
extends: '.publish_nightly'
|
|
|
|
stage: distribution
|
2023-05-14 04:15:20 +08:00
|
|
|
rules:
|
|
|
|
# Custom builds though web GUI, API or schedules.
|
|
|
|
- if: '$GIMP_CI_FLATPAK != null'
|
2020-09-07 23:49:37 +08:00
|
|
|
needs: ["flatpak"]
|
|
|
|
dependencies:
|
|
|
|
- 'flatpak'
|