[gimp/wip/Jehan/native-win64-build] build, gitlab-ci: break the native Windows build into 2 jobs.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/wip/Jehan/native-win64-build] build, gitlab-ci: break the native Windows build into 2 jobs.
- Date: Tue, 4 May 2021 23:01:33 +0000 (UTC)
commit 47559a6c370fc393c76079233b48b7f56e4fa8db
Author: Jehan <jehan girinstud io>
Date: Wed May 5 01:00:39 2021 +0200
build, gitlab-ci: break the native Windows build into 2 jobs.
One for dependencies, one for GIMP.
.gitlab-ci.yml | 79 ++++++++++++++--------
.../build-deps-crossroad.sh} | 0
build/windows/gitlab-ci/build-deps-msys2.sh | 77 +++++++++++++++++++++
.../build-gimp-msys2.sh} | 24 +------
.../dll_link.py | 0
5 files changed, 129 insertions(+), 51 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 467088d223..d33795919a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -184,20 +184,41 @@ gimp-clang-debian:
- ninja -C _build
- ninja -C _build test
-## WINDOWS 64-bit CI ##
+## WINDOWS 64-bit CI (native MSYS2) ##
-gimp-native-win64:
+deps-win64-native:
+ stage: dependencies
variables:
MSYSTEM: "MINGW64"
CHERE_INVOKING: "yes"
+ tags:
+ - win32-ps
+ cache:
+ paths:
+ - _install/
+ 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
+ needs: []
+
+gimp-win64-native:
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/build-msys2.sh"
+ - C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/build-gimp-msys2.sh"
artifacts:
- name: "GIMP-Win-native-${CI_COMMIT_SHORT_SHA}"
+ name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
when: always
expire_in: 2 days
paths:
@@ -205,7 +226,9 @@ gimp-native-win64:
cache:
paths:
- _ccache/
- needs: []
+ needs: ["deps-win64-native"]
+
+## WINDOWS 64-bit CI (cross-build crossroad) ##
deps-win64:
rules:
@@ -230,7 +253,7 @@ deps-win64:
- pip3 install zstandard
script:
- export PATH="`pwd`/.local/bin:$PATH"
- - crossroad w64 gimp --run="build/windows/crossbuild-gitlab-ci/build-deps.sh"
+ - crossroad w64 gimp --run="build/windows/gitlab-ci/build-deps-crossroad.sh"
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
when: always
@@ -271,7 +294,7 @@ gimp-win64:
- _build/
- gimp-prefix/
-## WINDOWS 32-bit CI ##
+## WINDOWS 32-bit CI (cross-build crossroad) ##
deps-win32:
rules:
@@ -293,7 +316,7 @@ deps-win32:
- pip3 install zstandard
script:
- export PATH="`pwd`/.local/bin:$PATH"
- - crossroad w32 gimp --run="build/windows/crossbuild-gitlab-ci/build-deps.sh"
+ - crossroad w32 gimp --run="build/windows/gitlab-ci/build-deps-crossroad.sh"
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
when: always
@@ -425,28 +448,28 @@ win64-nightly:
- 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/crossbuild-gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-2.99.exe
${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- - python3 build/windows/crossbuild-gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-console-2.99.exe
${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- - python3 build/windows/crossbuild-gitlab-ci/dll_link.py
${GIMP_DISTRIB}/bin/gimp-test-clipboard-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- - python3 build/windows/crossbuild-gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimptool-2.99.exe
${GIMP_PREFIX}/ ${GIMP_DISTRIB}
+ - 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/crossbuild-gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
+ 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/crossbuild-gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
+ 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/crossbuild-gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
+ 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/crossbuild-gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
+ 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/crossbuild-gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
+ 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/crossbuild-gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
+ python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
needs: ["gimp-win64"]
@@ -509,27 +532,27 @@ win32-nightly:
- 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/crossbuild-gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-2.99.exe
${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- - python3 build/windows/crossbuild-gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-console-2.99.exe
${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- - python3 build/windows/crossbuild-gitlab-ci/dll_link.py
${GIMP_DISTRIB}/bin/gimp-test-clipboard-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB}
- - python3 build/windows/crossbuild-gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimptool-2.99.exe
${GIMP_PREFIX}/ ${GIMP_DISTRIB}
+ - 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/crossbuild-gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
+ 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/crossbuild-gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
+ 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/crossbuild-gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
+ 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/crossbuild-gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
+ 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/crossbuild-gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
+ 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/crossbuild-gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
+ python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB};
done
needs: ["gimp-win32", "deps-win64"]
diff --git a/build/windows/crossbuild-gitlab-ci/build-deps.sh
b/build/windows/gitlab-ci/build-deps-crossroad.sh
similarity index 100%
rename from build/windows/crossbuild-gitlab-ci/build-deps.sh
rename to build/windows/gitlab-ci/build-deps-crossroad.sh
diff --git a/build/windows/gitlab-ci/build-deps-msys2.sh b/build/windows/gitlab-ci/build-deps-msys2.sh
new file mode 100644
index 0000000000..71d5925588
--- /dev/null
+++ b/build/windows/gitlab-ci/build-deps-msys2.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+set -e
+
+if [[ "$MSYSTEM" == "MINGW32" ]]; then
+ export MSYS2_ARCH="i686"
+else
+ export MSYS2_ARCH="x86_64"
+fi
+
+# Why do we even have to remove these manually? The whole thing is
+# messed up, but it looks like the Gitlab runner fails to clean properly
+# (it spews a bunch of "failed to remove" warnings at runner start, then
+# ends with a "error: failed to commit transaction (conflicting files)"
+# listing the various files it failed to remove).
+# Might be tied to: https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1839
+rm -f /c/msys64/mingw64/bin/libpcre-1.dll
+rm -f /c/msys64/mingw64/bin/libgio-2.0-0.dll
+rm -f /c/msys64/mingw64/bin/libglib-2.0-0.dll
+rm -f /c/msys64/mingw64/bin/libgmodule-2.0-0.dll
+rm -f /c/msys64/mingw64/bin/libgobject-2.0-0.dll
+rm -f /c/msys64/mingw64/bin/libpng16-16.dll
+rm -f /c/msys64/mingw64/bin/gdk-pixbuf-pixdata.exe
+rm -f /c/msys64/mingw64/bin/libgdk_pixbuf-2.0-0.dll
+rm -f /c/msys64/mingw64/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.dll
+
+# Update everything
+pacman --noconfirm -Suy
+
+# Install the required packages
+pacman --noconfirm -S --needed \
+ base-devel \
+ mingw-w64-$MSYS2_ARCH-toolchain \
+ mingw-w64-$MSYS2_ARCH-pkg-config \
+ mingw-w64-$MSYS2_ARCH-meson \
+ \
+ mingw-w64-$MSYS2_ARCH-asciidoc \
+ mingw-w64-$MSYS2_ARCH-atk \
+ mingw-w64-$MSYS2_ARCH-cairo \
+ mingw-w64-$MSYS2_ARCH-gobject-introspection \
+ mingw-w64-$MSYS2_ARCH-gobject-introspection-runtime \
+ mingw-w64-$MSYS2_ARCH-json-glib \
+ mingw-w64-$MSYS2_ARCH-lcms2 \
+ mingw-w64-$MSYS2_ARCH-lensfun \
+ mingw-w64-$MSYS2_ARCH-libarchive \
+ mingw-w64-$MSYS2_ARCH-libepoxy \
+ mingw-w64-$MSYS2_ARCH-libspiro \
+ mingw-w64-$MSYS2_ARCH-maxflow \
+ mingw-w64-$MSYS2_ARCH-pango \
+ mingw-w64-$MSYS2_ARCH-shared-mime-info \
+ mingw-w64-$MSYS2_ARCH-suitesparse \
+ mingw-w64-$MSYS2_ARCH-vala \
+ mingw-w64-$MSYS2_ARCH-xpm-nox
+
+export GIT_DEPTH=1
+export GIMP_PREFIX=`realpath ./_install`
+export PATH="$GIMP_PREFIX/bin:$PATH"
+export PKG_CONFIG_PATH="${GIMP_PREFIX}/lib/pkgconfig:$PKG_CONFIG_PATH"
+export PKG_CONFIG_PATH="${GIMP_PREFIX}/share/pkgconfig:$PKG_CONFIG_PATH"
+export LD_LIBRARY_PATH="${GIMP_PREFIX}/lib:${LD_LIBRARY_PATH}"
+export ACLOCAL_FLAGS="-I/c/msys64/mingw64/share/aclocal"
+export XDG_DATA_DIRS="${GIMP_PREFIX}/share:/mingw64/share/"
+
+git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/babl.git _babl
+git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/gegl.git _gegl
+
+mkdir _babl/_build
+cd _babl/_build
+meson -Dprefix="${GIMP_PREFIX}" -Dwith-docs=false ..
+ninja
+ninja install
+
+mkdir ../../_gegl/_build
+cd ../../_gegl/_build
+meson -Dprefix="${GIMP_PREFIX}" -Ddocs=false ..
+ninja
+ninja install
diff --git a/build/windows/build-msys2.sh b/build/windows/gitlab-ci/build-gimp-msys2.sh
similarity index 86%
rename from build/windows/build-msys2.sh
rename to build/windows/gitlab-ci/build-gimp-msys2.sh
index 72a4f0ff41..5ea7d40d07 100644
--- a/build/windows/build-msys2.sh
+++ b/build/windows/gitlab-ci/build-gimp-msys2.sh
@@ -33,7 +33,6 @@ pacman --noconfirm -S --needed \
mingw-w64-$MSYS2_ARCH-toolchain \
mingw-w64-$MSYS2_ARCH-ccache \
mingw-w64-$MSYS2_ARCH-pkg-config \
- mingw-w64-$MSYS2_ARCH-meson \
\
mingw-w64-$MSYS2_ARCH-asciidoc \
mingw-w64-$MSYS2_ARCH-adwaita-icon-theme \
@@ -75,8 +74,7 @@ pacman --noconfirm -S --needed \
mingw-w64-$MSYS2_ARCH-vala \
mingw-w64-$MSYS2_ARCH-xpm-nox
-export GIT_DEPTH=1
-export GIMP_PREFIX=`realpath ~/_install`
+export GIMP_PREFIX=`realpath ./_install`
export PATH="$GIMP_PREFIX/bin:$PATH"
export PKG_CONFIG_PATH="${GIMP_PREFIX}/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="${GIMP_PREFIX}/share/pkgconfig:$PKG_CONFIG_PATH"
@@ -84,24 +82,6 @@ export LD_LIBRARY_PATH="${GIMP_PREFIX}/lib:${LD_LIBRARY_PATH}"
export ACLOCAL_FLAGS="-I/c/msys64/mingw64/share/aclocal"
export XDG_DATA_DIRS="${GIMP_PREFIX}/share:/mingw64/share/"
-git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/babl.git _babl
-git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/gegl.git _gegl
-
-mkdir _babl/_build
-cd _babl/_build
-meson -Dprefix="${GIMP_PREFIX}" -Dwith-docs=false ..
-ninja
-ninja install
-
-mkdir ../../_gegl/_build
-cd ../../_gegl/_build
-meson -Dprefix="${GIMP_PREFIX}" -Ddocs=false ..
-ninja
-ninja install
-cd ../..
-
-# Build
-
mkdir -p _ccache
export CCACHE_BASEDIR="$(pwd)"
export CCACHE_DIR="${CCACHE_BASEDIR}/_ccache"
@@ -115,5 +95,3 @@ make -j4
make install
ccache --show-stats
-
-mv "${GIMP_PREFIX}" .
diff --git a/build/windows/crossbuild-gitlab-ci/dll_link.py b/build/windows/gitlab-ci/dll_link.py
similarity index 100%
rename from build/windows/crossbuild-gitlab-ci/dll_link.py
rename to build/windows/gitlab-ci/dll_link.py
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]