gimp/.gitlab-ci.yml

838 lines
29 KiB
YAML
Raw Normal View History

# Default commit CI should only run the following pipelines:
# - Linux autotools and meson (base & fast)
# - Win64 crossbuild (base & fast)
# Scheduled CI ($CI_PIPELINE_SOURCE == "schedule") will run regularly:
# - Win 32/64 native builds (base but slow)
# - Win32 crossbuilds (rare usefulness)
# - Linux CLang (rare usefulness)
# - cppcheck (static code analysis)
# - Flatpak build (slow and doesn't need constant publishing)
# Releases ($CI_COMMIT_TAG != null) should run only:
# - Linux autotools (distcheck source tarball)
# - 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.
# - GIMP_CI_FLATPAK: trigger the nightly flatpak build and publishing.
include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml'
image: debian:testing
2019-08-21 19:54:38 +08:00
stages:
- prepare
- dependencies
- gimp
- packaging
- distribution
- analysis
variables:
GIT_DEPTH: "1"
INSTALL_DIR: "_install"
2019-08-21 19:54:38 +08:00
INSTALL_PREFIX: "${CI_PROJECT_DIR}/${INSTALL_DIR}"
APT_CACHE: "${CI_PROJECT_DIR}/apt-cache"
## prepare docker images ##
build-image:
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_AUTOTOOLS != null'
- if: '$GIMP_CI_SOURCES != null'
- if: '$GIMP_CI_MESON_GCC != null'
- if: '$GIMP_CI_MESON_CLANG != null'
stage: prepare
variables:
GIT_STRATEGY: none
cache: {}
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- echo "FROM debian:testing" > Dockerfile
- echo "RUN apt-get update" >> Dockerfile
- echo "RUN apt-get install -y --no-install-recommends \\" >> Dockerfile
- echo "at-spi2-core build-essential desktop-file-utils ffmpeg ghostscript git glib-networking gobject-introspection graphviz graphviz-dev gtk-doc-tools hicolor-icon-theme intltool 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 valac xauth xvfb" >> Dockerfile
- /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:
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: prepare
variables:
GIT_STRATEGY: none
cache: {}
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- echo "FROM debian:testing" > Dockerfile
- echo "RUN apt-get update" >> Dockerfile
- echo "RUN apt-get install -y --no-install-recommends \\" >> Dockerfile
- echo "build-essential cpio g++-mingw-w64-x86-64 gcc-mingw-w64-x86-64 git intltool libgdk-pixbuf2.0-dev libglib2.0-bin meson pkg-config python3 python3-distutils python3-docutils python3-pip rpm xsltproc" >> Dockerfile
- /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:
rules:
# Custom builds only (web GUI, API or schedules).
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
stage: prepare
variables:
GIT_STRATEGY: none
cache: {}
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- echo "FROM debian:testing" > Dockerfile
- echo "RUN apt-get update" >> Dockerfile
- echo "RUN apt-get install -y --no-install-recommends \\" >> Dockerfile
- echo "build-essential cpio g++-mingw-w64-i686 gcc-mingw-w64-i686 git intltool libgdk-pixbuf2.0-dev libglib2.0-bin meson pkg-config python3 python3-distutils python3-docutils python3-pip rpm xsltproc" >> Dockerfile
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:build-win32-latest --cache=true --cache-ttl=120h
## GNU/Linux 64-bit CIs (Debian testing) ##
deps-debian:
rules:
# On commits.
- if: '$CI_PIPELINE_SOURCE == "push"'
# On releases.
- if: '$CI_COMMIT_TAG != null'
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_AUTOTOOLS != null'
- if: '$GIMP_CI_SOURCES != null'
- if: '$GIMP_CI_MESON_GCC != null'
- if: '$GIMP_CI_MESON_CLANG != null'
stage: dependencies
image: $CI_REGISTRY_IMAGE:build-debian-latest
cache:
paths:
- apt-cache
artifacts:
expire_in: 2 hours
when: always
paths:
2019-08-21 19:54:38 +08:00
- "${INSTALL_DIR}"
- _babl/_build
- _gegl/_build
before_script:
- 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
- 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"
script:
- 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
- ninja -C _build
- ninja -C _build install
needs: ["build-image"]
.gimp-debian-base:
stage: gimp
image: $CI_REGISTRY_IMAGE:build-debian-latest
dependencies:
- deps-debian
cache:
paths:
- apt-cache
artifacts:
expire_in: 1 days
when: always
name: "app-build-${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
paths:
- _build
#- "${INSTALL_DIR}"
before_script:
- 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"
needs: ["deps-debian"]
gimp-distcheck-debian:
rules:
# On commits.
- if: '$CI_PIPELINE_SOURCE == "push"'
# On releases.
- if: '$CI_COMMIT_TAG != null'
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_AUTOTOOLS != null'
- if: '$GIMP_CI_SOURCES != null'
extends: .gimp-debian-base
script:
- mkdir _build
- cd _build
- ../autogen.sh
--prefix="${INSTALL_PREFIX}"
--enable-debug
--enable-gtk-doc
--enable-windows-installer
- make -j "$(nproc)"
- make -j "$(nproc)" check
- make -j "$(nproc)" distcheck
gimp-meson-debian:
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_MESON_GCC != null'
extends: .gimp-debian-base
2019-08-09 22:18:43 +08:00
script:
- meson _build
--prefix="${INSTALL_PREFIX}"
- ninja -C _build
- ninja -C _build test
2019-08-09 22:18:43 +08:00
gimp-clang-debian:
rules:
# Custom builds only (web GUI, API or schedules).
- if: '$GIMP_CI_MESON_CLANG != null'
extends: .gimp-debian-base
2020-01-03 07:19:10 +08:00
variables:
CC: "clang"
CXX: "clang++"
script:
- mkdir -p "$APT_CACHE"
- apt-get install -y --no-install-recommends -o dir::cache::archives="$APT_CACHE"
clang libomp-dev
2020-01-03 07:19:10 +08:00
- meson _build
--prefix="${INSTALL_PREFIX}"
- ninja -C _build
- ninja -C _build test
2020-01-03 07:19:10 +08:00
## WINDOWS 64-bit CI (native MSYS2) ##
deps-win64-native:
rules:
# On releases.
- if: '$CI_COMMIT_TAG != null'
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_MSYS2_WIN64 != null'
- if: '$GIMP_CI_WIN_INSTALLER != null'
stage: dependencies
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/build-deps-msys2.sh"
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
when: always
expire_in: 2 hours
paths:
- _install-w64
- aalib-1.4.0/_build
needs: []
gimp-win64-native:
rules:
# On releases.
- if: '$CI_COMMIT_TAG != null'
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_MSYS2_WIN64 != null'
- if: '$GIMP_CI_WIN_INSTALLER != null'
stage: gimp
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/build-gimp-msys2.sh"
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
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
paths:
- _install-w64
- build/windows/installer/lang/
cache:
paths:
- _ccache/
needs: ["deps-win64-native"]
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'
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
- build/windows/installer/lang/
needs: ["gimp-win64-native"]
## WINDOWS 32-bit CI (native MSYS2) ##
deps-win32-native:
rules:
# On releases.
- if: '$CI_COMMIT_TAG != null'
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_MSYS2_WIN32 != null'
- if: '$GIMP_CI_WIN_INSTALLER != null'
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:
- _install-w32
needs: []
gimp-win32-native:
rules:
# On releases.
- if: '$CI_COMMIT_TAG != null'
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_MSYS2_WIN32 != null'
- if: '$GIMP_CI_WIN_INSTALLER != null'
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:
- _install-w32
cache:
paths:
- _ccache/
needs: ["deps-win32-native"]
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'
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
needs: ["gimp-win32-native"]
## WINDOWS 64-bit CI (cross-build crossroad) ##
2019-11-26 02:16:40 +08:00
deps-win64:
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: dependencies
image: $CI_REGISTRY_IMAGE:build-win64-latest
variables:
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
cache:
paths:
- .cache/crossroad/
- apt-cache
before_script:
- apt-get update
- apt-get install -y --no-install-recommends wine wine64
- git clone --depth=${GIT_DEPTH} git://git.tuxfamily.org/gitroot/crossroad/crossroad.git
- cd crossroad
- ./setup.py install --prefix=`pwd`/../.local
- cd ..
- pip3 install zstandard
script:
- export PATH="`pwd`/.local/bin:$PATH"
- crossroad w64 gimp --run="build/windows/gitlab-ci/build-deps-crossroad.sh"
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
when: always
expire_in: 2 hours
paths:
- .local/
- _deps/
needs: ["build-image-win64"]
2019-11-26 02:16:40 +08:00
gimp-win64:
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: gimp
image: $CI_REGISTRY_IMAGE:build-win64-latest
dependencies:
2019-11-26 02:16:40 +08:00
- deps-win64
variables:
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
cache:
paths:
- .cache/crossroad/
- apt-cache
script:
- export PATH="`pwd`/.local/bin:$PATH"
- mkdir _build && cd _build
# This is absolute ugly but is the current trick to handle issue
# #6257 which is a race condition in the meson build. When we have a
# failure because of this, "git-version.h" will still have been
# created, yet after a depending target is being built. So all we
# have to do is re-run `ninja`. If the second attempt fails too,
# then it's another issue.
- echo 'crossroad meson ..
-Dgtk-doc=false && (ninja || ninja) && ninja install &&
cp -fr $CROSSROAD_PREFIX/ ../gimp-prefix/
' |
crossroad w64 gimp --run="-"
2019-11-26 02:16:40 +08:00
needs: ["deps-win64"]
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
when: always
expire_in: 1 day
paths:
- _build/
- gimp-prefix/
## WINDOWS 32-bit CI (cross-build crossroad) ##
2019-11-26 02:16:40 +08:00
deps-win32:
rules:
# Custom builds only (web GUI, API or schedules).
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
stage: dependencies
image: $CI_REGISTRY_IMAGE:build-win32-latest
variables:
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
cache:
paths:
- .cache/crossroad/
- apt-cache
before_script:
- git clone --depth=${GIT_DEPTH} git://git.tuxfamily.org/gitroot/crossroad/crossroad.git
- cd crossroad
- ./setup.py install --prefix=`pwd`/../.local
- cd ..
- pip3 install zstandard
script:
- export PATH="`pwd`/.local/bin:$PATH"
- crossroad w32 gimp --run="build/windows/gitlab-ci/build-deps-crossroad.sh"
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
when: always
expire_in: 2 hours
paths:
- .local/
- _deps/
needs: ["build-image-win32"]
2019-11-26 02:16:40 +08:00
gimp-win32:
rules:
# Custom builds only (web GUI, API or schedules).
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
stage: gimp
image: $CI_REGISTRY_IMAGE:build-win32-latest
dependencies:
2019-11-26 02:16:40 +08:00
- deps-win32
variables:
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
cache:
paths:
- .cache/crossroad/
- apt-cache
script:
- export PATH="`pwd`/.local/bin:$PATH"
- mkdir _build && cd _build
- echo 'crossroad meson ..
-Dwmf=disabled -Dmng=disabled -Dgtk-doc=false && (ninja || ninja) && ninja install &&
cp -fr $CROSSROAD_PREFIX/ ../gimp-prefix/
' |
crossroad w32 gimp --run="-"
2019-11-26 02:16:40 +08:00
needs: ["deps-win32"]
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
when: always
expire_in: 1 day
paths:
- _build/
- gimp-prefix/
## Linux Flatpak nightly CI ##
## To learn more about the CI, go to https://gitlab.gnome.org/GNOME/Initiatives/-/wikis/DevOps-with-Flatpak
flatpak:
extends: .flatpak
stage: gimp
needs: []
rules:
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_FLATPAK != null'
variables:
GIT_SUBMODULE_STRATEGY: normal
# Replace with your manifest path
MANIFEST_PATH: "build/flatpak/org.gimp.GIMP-nightly.json"
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
# Replace with your application name, as written in the manifest
FLATPAK_MODULE: "gimp"
APP_ID: "org.gimp.GIMP"
BUNDLE: "gimp-git.flatpak"
before_script:
# 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.
- shopt -s expand_aliases
- flatpak-builder-wrapper() { flatpak-builder "$@" > flatpak-builder.log 2>&1; }
- alias flatpak-builder=flatpak-builder-wrapper
artifacts:
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'
cppcheck:
rules:
# Custom builds only (web GUI, API or schedules).
- if: '$GIMP_CI_CPPCHECK != null'
stage: analysis
before_script:
- apt-get update
- apt-get install -y cppcheck
script:
- cppcheck -q -j8 --enable=all --force --output-file=cppcheck.xml --xml --xml-version=2
-i _build -i _deps -i gimp-prefix -i .local -i .cache .
- mkdir report
- cppcheck-htmlreport --source-dir=. --title=gimp --file=cppcheck.xml --report-dir=report
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
expire_in: 1 week
when: always
paths:
- report
needs: []
## Ready-to-distribute ##
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:
# On releases.
- if: '$CI_COMMIT_TAG != null'
# Custom builds though web GUI, API or schedules.
- if: '$GIMP_CI_WIN_INSTALLER != null'
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:
- packaging-win64-native
- packaging-win32-native
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
when: always
expire_in: 1 week
paths:
- build/windows/installer/_Output
- installer.log
script:
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/installer-gimp-msys2.sh > installer.log 2>&1"
needs: ["packaging-win32-native", "packaging-win64-native"]
sources:
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:
- gimp-*.tar.bz2
- gimp-*.tar.bz2.SHA256SUMS
- gimp-*.tar.bz2.SHA512SUMS
script:
- mv _build/gimp-*.tar.bz2 .
- FILENAME=`ls gimp-*.tar.bz2` &&
sha256sum gimp-*.tar.bz2 > ${FILENAME}.SHA256SUMS &&
sha512sum gimp-*.tar.bz2 > ${FILENAME}.SHA512SUMS
needs: ["gimp-distcheck-debian"]
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
build: (Windows) glib-compile-schemas and gdk-pixbuf-query-loaders in… … the CI. There are 2 finale steps before finale binary distribution on Windows. We must compile the GSettings XML schema files and register GdkPixbuf loaders (for file format support in the GUI). I used to provide a wrapper to be run inside Windows before first GIMP run. Never did I realize that I can compile the distributed GSettings schemas with the native `glib-compile-schemas` (works fine in my tests). As for the GdkPixbuf loaders, we inspect DLL libraries, hence we do require the target `gdk-pixbuf-query-loaders` which is unfortunately a Windows executable. Yet it seems to work fine with Wine, so let's be done with it in the CI instead of requiring manual steps from testers of the CI builds. Then a few `sed` calls are enough to make the path in the produced text file relative instead of absolute (which works fine, again in my tests at least). This means that I don't have to distribute the 2 binaries and the DLLs they depend on anymore. Moreover let's remove the wrapper (but still generate one which just calls GIMP so that we call it from the tree root, where it's much less messy). Note: I failed to install wine32 (32-bit Wine) on the Gitlab runner. After following all instructions, I encountered weird errors. So instead, I just make the win32-nightly job depend on win64-nightly and copy `loaders.cache` from one to another, as it is a platform-independent text file (as long as we provide the same GdkPixbuf loaders on both of course, which we do).
2020-10-02 18:46:32 +08:00
- 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}/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/
- mkdir ${GIMP_DISTRIB}/libexec
- cp -fr ${GIMP_PREFIX}/libexec/gimp*.exe ${GIMP_DISTRIB}/libexec/
build: (Windows) glib-compile-schemas and gdk-pixbuf-query-loaders in… … the CI. There are 2 finale steps before finale binary distribution on Windows. We must compile the GSettings XML schema files and register GdkPixbuf loaders (for file format support in the GUI). I used to provide a wrapper to be run inside Windows before first GIMP run. Never did I realize that I can compile the distributed GSettings schemas with the native `glib-compile-schemas` (works fine in my tests). As for the GdkPixbuf loaders, we inspect DLL libraries, hence we do require the target `gdk-pixbuf-query-loaders` which is unfortunately a Windows executable. Yet it seems to work fine with Wine, so let's be done with it in the CI instead of requiring manual steps from testers of the CI builds. Then a few `sed` calls are enough to make the path in the produced text file relative instead of absolute (which works fine, again in my tests at least). This means that I don't have to distribute the 2 binaries and the DLLs they depend on anymore. Moreover let's remove the wrapper (but still generate one which just calls GIMP so that we call it from the tree root, where it's much less messy). Note: I failed to install wine32 (32-bit Wine) on the Gitlab runner. After following all instructions, I encountered weird errors. So instead, I just make the win32-nightly job depend on win64-nightly and copy `loaders.cache` from one to another, as it is a platform-independent text file (as long as we provide the same GdkPixbuf loaders on both of course, which we do).
2020-10-02 18:46:32 +08:00
# 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/
build: (Windows) glib-compile-schemas and gdk-pixbuf-query-loaders in… … the CI. There are 2 finale steps before finale binary distribution on Windows. We must compile the GSettings XML schema files and register GdkPixbuf loaders (for file format support in the GUI). I used to provide a wrapper to be run inside Windows before first GIMP run. Never did I realize that I can compile the distributed GSettings schemas with the native `glib-compile-schemas` (works fine in my tests). As for the GdkPixbuf loaders, we inspect DLL libraries, hence we do require the target `gdk-pixbuf-query-loaders` which is unfortunately a Windows executable. Yet it seems to work fine with Wine, so let's be done with it in the CI instead of requiring manual steps from testers of the CI builds. Then a few `sed` calls are enough to make the path in the produced text file relative instead of absolute (which works fine, again in my tests at least). This means that I don't have to distribute the 2 binaries and the DLLs they depend on anymore. Moreover let's remove the wrapper (but still generate one which just calls GIMP so that we call it from the tree root, where it's much less messy). Note: I failed to install wine32 (32-bit Wine) on the Gitlab runner. After following all instructions, I encountered weird errors. So instead, I just make the win32-nightly job depend on win64-nightly and copy `loaders.cache` from one to another, as it is a platform-independent text file (as long as we provide the same GdkPixbuf loaders on both of course, which we do).
2020-10-02 18:46:32 +08:00
# 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
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-console-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-test-clipboard-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimptool-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- for dll in ${GIMP_DISTRIB}/lib/babl-0.1/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
- for dll in ${GIMP_DISTRIB}/lib/gegl-0.4/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
- for dll in ${GIMP_DISTRIB}/lib/gio/modules/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
- for dll in ${GIMP_DISTRIB}/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
- for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/modules/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
- for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/plug-ins/*/*.exe; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
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
build: (Windows) glib-compile-schemas and gdk-pixbuf-query-loaders in… … the CI. There are 2 finale steps before finale binary distribution on Windows. We must compile the GSettings XML schema files and register GdkPixbuf loaders (for file format support in the GUI). I used to provide a wrapper to be run inside Windows before first GIMP run. Never did I realize that I can compile the distributed GSettings schemas with the native `glib-compile-schemas` (works fine in my tests). As for the GdkPixbuf loaders, we inspect DLL libraries, hence we do require the target `gdk-pixbuf-query-loaders` which is unfortunately a Windows executable. Yet it seems to work fine with Wine, so let's be done with it in the CI instead of requiring manual steps from testers of the CI builds. Then a few `sed` calls are enough to make the path in the produced text file relative instead of absolute (which works fine, again in my tests at least). This means that I don't have to distribute the 2 binaries and the DLLs they depend on anymore. Moreover let's remove the wrapper (but still generate one which just calls GIMP so that we call it from the tree root, where it's much less messy). Note: I failed to install wine32 (32-bit Wine) on the Gitlab runner. After following all instructions, I encountered weird errors. So instead, I just make the win32-nightly job depend on win64-nightly and copy `loaders.cache` from one to another, as it is a platform-independent text file (as long as we provide the same GdkPixbuf loaders on both of course, which we do).
2020-10-02 18:46:32 +08:00
- 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/
- mkdir ${GIMP_DISTRIB}/libexec
- cp -fr ${GIMP_PREFIX}/libexec/gimp*.exe ${GIMP_DISTRIB}/libexec/
build: (Windows) glib-compile-schemas and gdk-pixbuf-query-loaders in… … the CI. There are 2 finale steps before finale binary distribution on Windows. We must compile the GSettings XML schema files and register GdkPixbuf loaders (for file format support in the GUI). I used to provide a wrapper to be run inside Windows before first GIMP run. Never did I realize that I can compile the distributed GSettings schemas with the native `glib-compile-schemas` (works fine in my tests). As for the GdkPixbuf loaders, we inspect DLL libraries, hence we do require the target `gdk-pixbuf-query-loaders` which is unfortunately a Windows executable. Yet it seems to work fine with Wine, so let's be done with it in the CI instead of requiring manual steps from testers of the CI builds. Then a few `sed` calls are enough to make the path in the produced text file relative instead of absolute (which works fine, again in my tests at least). This means that I don't have to distribute the 2 binaries and the DLLs they depend on anymore. Moreover let's remove the wrapper (but still generate one which just calls GIMP so that we call it from the tree root, where it's much less messy). Note: I failed to install wine32 (32-bit Wine) on the Gitlab runner. After following all instructions, I encountered weird errors. So instead, I just make the win32-nightly job depend on win64-nightly and copy `loaders.cache` from one to another, as it is a platform-independent text file (as long as we provide the same GdkPixbuf loaders on both of course, which we do).
2020-10-02 18:46:32 +08:00
# 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/
build: (Windows) glib-compile-schemas and gdk-pixbuf-query-loaders in… … the CI. There are 2 finale steps before finale binary distribution on Windows. We must compile the GSettings XML schema files and register GdkPixbuf loaders (for file format support in the GUI). I used to provide a wrapper to be run inside Windows before first GIMP run. Never did I realize that I can compile the distributed GSettings schemas with the native `glib-compile-schemas` (works fine in my tests). As for the GdkPixbuf loaders, we inspect DLL libraries, hence we do require the target `gdk-pixbuf-query-loaders` which is unfortunately a Windows executable. Yet it seems to work fine with Wine, so let's be done with it in the CI instead of requiring manual steps from testers of the CI builds. Then a few `sed` calls are enough to make the path in the produced text file relative instead of absolute (which works fine, again in my tests at least). This means that I don't have to distribute the 2 binaries and the DLLs they depend on anymore. Moreover let's remove the wrapper (but still generate one which just calls GIMP so that we call it from the tree root, where it's much less messy). Note: I failed to install wine32 (32-bit Wine) on the Gitlab runner. After following all instructions, I encountered weird errors. So instead, I just make the win32-nightly job depend on win64-nightly and copy `loaders.cache` from one to another, as it is a platform-independent text file (as long as we provide the same GdkPixbuf loaders on both of course, which we do).
2020-10-02 18:46:32 +08:00
# I fail to install wine32 inside the Gitlab runner. So instead, I
# just reuse the loaders.cache generated in the deps-win64 job as
build: (Windows) glib-compile-schemas and gdk-pixbuf-query-loaders in… … the CI. There are 2 finale steps before finale binary distribution on Windows. We must compile the GSettings XML schema files and register GdkPixbuf loaders (for file format support in the GUI). I used to provide a wrapper to be run inside Windows before first GIMP run. Never did I realize that I can compile the distributed GSettings schemas with the native `glib-compile-schemas` (works fine in my tests). As for the GdkPixbuf loaders, we inspect DLL libraries, hence we do require the target `gdk-pixbuf-query-loaders` which is unfortunately a Windows executable. Yet it seems to work fine with Wine, so let's be done with it in the CI instead of requiring manual steps from testers of the CI builds. Then a few `sed` calls are enough to make the path in the produced text file relative instead of absolute (which works fine, again in my tests at least). This means that I don't have to distribute the 2 binaries and the DLLs they depend on anymore. Moreover let's remove the wrapper (but still generate one which just calls GIMP so that we call it from the tree root, where it's much less messy). Note: I failed to install wine32 (32-bit Wine) on the Gitlab runner. After following all instructions, I encountered weird errors. So instead, I just make the win32-nightly job depend on win64-nightly and copy `loaders.cache` from one to another, as it is a platform-independent text file (as long as we provide the same GdkPixbuf loaders on both of course, which we do).
2020-10-02 18:46:32 +08:00
# 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
build: (Windows) glib-compile-schemas and gdk-pixbuf-query-loaders in… … the CI. There are 2 finale steps before finale binary distribution on Windows. We must compile the GSettings XML schema files and register GdkPixbuf loaders (for file format support in the GUI). I used to provide a wrapper to be run inside Windows before first GIMP run. Never did I realize that I can compile the distributed GSettings schemas with the native `glib-compile-schemas` (works fine in my tests). As for the GdkPixbuf loaders, we inspect DLL libraries, hence we do require the target `gdk-pixbuf-query-loaders` which is unfortunately a Windows executable. Yet it seems to work fine with Wine, so let's be done with it in the CI instead of requiring manual steps from testers of the CI builds. Then a few `sed` calls are enough to make the path in the produced text file relative instead of absolute (which works fine, again in my tests at least). This means that I don't have to distribute the 2 binaries and the DLLs they depend on anymore. Moreover let's remove the wrapper (but still generate one which just calls GIMP so that we call it from the tree root, where it's much less messy). Note: I failed to install wine32 (32-bit Wine) on the Gitlab runner. After following all instructions, I encountered weird errors. So instead, I just make the win32-nightly job depend on win64-nightly and copy `loaders.cache` from one to another, as it is a platform-independent text file (as long as we provide the same GdkPixbuf loaders on both of course, which we do).
2020-10-02 18:46:32 +08:00
# 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.
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-console-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-test-clipboard-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimptool-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- for dll in ${GIMP_DISTRIB}/lib/babl-0.1/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
- for dll in ${GIMP_DISTRIB}/lib/gegl-0.4/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
- for dll in ${GIMP_DISTRIB}/lib/gio/modules/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
- for dll in ${GIMP_DISTRIB}/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
- for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/modules/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
- for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/plug-ins/*/*.exe; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
needs: ["gimp-win32", "deps-win64"]
flatpak-nightly:
extends: '.publish_nightly'
stage: distribution
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
needs: ["flatpak"]
dependencies:
- 'flatpak'