[gimp] build, gitlab-ci: break the native Windows build into 2 jobs.



commit 6c91e7f96432071b748311ac6f875e99b3b75482
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        | 72 ++++++++++++++++++++
 .../build-gimp-msys2.sh}                           | 29 +-------
 .../dll_link.py                                    |  0
 5 files changed, 125 insertions(+), 55 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..31d400a956
--- /dev/null
+++ b/build/windows/gitlab-ci/build-deps-msys2.sh
@@ -0,0 +1,72 @@
+#!/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-meson \
+    \
+    mingw-w64-$MSYS2_ARCH-cairo \
+    mingw-w64-$MSYS2_ARCH-gobject-introspection \
+    mingw-w64-$MSYS2_ARCH-json-glib \
+    mingw-w64-$MSYS2_ARCH-lcms2 \
+    mingw-w64-$MSYS2_ARCH-lensfun \
+    mingw-w64-$MSYS2_ARCH-libspiro \
+    mingw-w64-$MSYS2_ARCH-maxflow \
+    mingw-w64-$MSYS2_ARCH-openexr \
+    mingw-w64-$MSYS2_ARCH-pango \
+    mingw-w64-$MSYS2_ARCH-suitesparse \
+    mingw-w64-$MSYS2_ARCH-vala
+
+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 \
+      -Dcairo=enabled -Dumfpack=enabled \
+      -Dopenexr=enabled -Dworkshop=true ..
+ninja
+ninja install
diff --git a/build/windows/build-msys2.sh b/build/windows/gitlab-ci/build-gimp-msys2.sh
similarity index 81%
rename from build/windows/build-msys2.sh
rename to build/windows/gitlab-ci/build-gimp-msys2.sh
index 90a66adee5..b261a41b6e 100644
--- a/build/windows/build-msys2.sh
+++ b/build/windows/gitlab-ci/build-gimp-msys2.sh
@@ -32,11 +32,7 @@ pacman --noconfirm -S --needed \
     base-devel \
     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 \
     mingw-w64-$MSYS2_ARCH-appstream-glib \
     mingw-w64-$MSYS2_ARCH-atk \
     mingw-w64-$MSYS2_ARCH-cairo \
@@ -55,10 +51,8 @@ pacman --noconfirm -S --needed \
     mingw-w64-$MSYS2_ARCH-lcms2 \
     mingw-w64-$MSYS2_ARCH-lensfun \
     mingw-w64-$MSYS2_ARCH-libarchive \
-    mingw-w64-$MSYS2_ARCH-libepoxy \
     mingw-w64-$MSYS2_ARCH-libheif \
     mingw-w64-$MSYS2_ARCH-libmypaint \
-    mingw-w64-$MSYS2_ARCH-libraw \
     mingw-w64-$MSYS2_ARCH-libspiro \
     mingw-w64-$MSYS2_ARCH-libwebp \
     mingw-w64-$MSYS2_ARCH-libwmf \
@@ -68,15 +62,14 @@ pacman --noconfirm -S --needed \
     mingw-w64-$MSYS2_ARCH-openexr \
     mingw-w64-$MSYS2_ARCH-pango \
     mingw-w64-$MSYS2_ARCH-poppler \
+    mingw-w64-$MSYS2_ARCH-poppler-data \
     mingw-w64-$MSYS2_ARCH-python3-gobject \
-    mingw-w64-$MSYS2_ARCH-SDL2 \
     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 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 +77,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"
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]