From 28c65b8a5f9951f397530d1b9caa4caa79b7bd1c Mon Sep 17 00:00:00 2001 From: Bruno Lopes Date: Sat, 13 Apr 2024 14:42:55 -0300 Subject: [PATCH] gitlab-ci: Drop x86 (aka 32-bit) cross builds for Windows This isn't directly related with #10922 and does NOT affect 32-bit support. After talk with @Jehan, author of 'crossroad' and main dev of crossbuilds, we decided that the x86 crossroad builds can be dropped by these reasons: 1) 32-bit crossbuilds weren't being built. They are used since c8ec0ae7 but after the native 32-bit builds they ended in a state that they are the only pipeline that isn't automatically triggered in any way, a complete limbo. 2) 32-bit crossbuilds weren't being autonomous. They are not working fine with wine32 so the win-x64-cross artifact is a 'need' and now debian-x64, so we were spending way more time fixing than using the 32-bit cross jobs (sometimes the 32-bit cross jobs are just broken and we even noticed). We have other jobs not autonomous but they don't have additional bugs like not being able to build with .mng and .wmf (32-bit cross only bugs). --- The x64 crossbuilds will continue to be supported. They are very useful to develop on Linux, and test MRs on Windows. I'm an assiduous user of them :) --- .gitlab-ci.yml | 78 ------------------- .../gitlab-ci/1_build-deps-crossroad.sh | 40 ++++------ .../gitlab-ci/2_build-gimp-crossroad.sh | 27 +------ .../gitlab-ci/3_package-gimp-uni_base.sh | 2 +- 4 files changed, 20 insertions(+), 127 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0c55b4febb..10203aa68a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,7 +15,6 @@ # - GIMP_CI_MESON_GCC: trigger the Debian gcc build. # - GIMP_CI_RASTER_ICONS: trigger the Debian build without vector icons. # - GIMP_CI_CROSSROAD_WIN64: trigger the crossroad build for Win 64-bit. -# - GIMP_CI_CROSSROAD_WIN32: trigger the crossroad build for Win 32-bit. # - GIMP_CI_MSYS2_WIN_AARCH64: trigger the native MSYS2 build for Win Aarch64. # - GIMP_CI_MSYS2_WIN64: trigger the native MSYS2 build for Win 64-bit. # - GIMP_CI_MSYS2_WIN32: trigger the native MSYS2 build for Win 32-bit. @@ -75,7 +74,6 @@ image-debian-x64: - if: '$GIMP_CI_MESON_GCC != null' - if: '$GIMP_CI_RASTER_ICONS != null' - if: '$GIMP_CI_CROSSROAD_WIN64 != null' - - if: '$GIMP_CI_CROSSROAD_WIN32 != null' - if: '$GIMP_CI_SOURCES != null' - if: '$GIMP_CI_FLATPAK != null' # On merge requests and commits. @@ -111,8 +109,6 @@ image-debian-x64: ffmpeg g++-mingw-w64-x86-64-posix gcc-mingw-w64-x86-64-posix - g++-mingw-w64-i686 - gcc-mingw-w64-i686 gettext ghostscript gi-docgen @@ -227,7 +223,6 @@ deps-debian-x64: - if: '$GIMP_CI_MESON_CLANG != null' - if: '$GIMP_CI_RASTER_ICONS != null' - if: '$GIMP_CI_CROSSROAD_WIN64 != null' - - if: '$GIMP_CI_CROSSROAD_WIN32 != null' - if: '$GIMP_CI_SOURCES != null' - if: '$GIMP_CI_FLATPAK != null' # On merge requests and commits. @@ -270,7 +265,6 @@ gimp-debian-x64: # Custom builds though web GUI, API or schedules. - if: '$GIMP_CI_MESON_CLANG != null' - if: '$GIMP_CI_CROSSROAD_WIN64 != null' - - if: '$GIMP_CI_CROSSROAD_WIN32 != null' - if: '$GIMP_CI_SOURCES != null' - if: '$GIMP_CI_FLATPAK != null' # On merge requests and commits. @@ -436,7 +430,6 @@ deps-win-x64-cross: extends: .win-cross rules: - !reference [.win-x64-cross, rules] - - if: '$GIMP_CI_CROSSROAD_WIN32 != null' needs: ["image-debian-x64"] stage: dependencies image: $CI_REGISTRY_IMAGE:build-debian-latest @@ -455,7 +448,6 @@ gimp-win-x64-cross: extends: .win-cross rules: - !reference [.win-x64-cross, rules] - - if: '$GIMP_CI_CROSSROAD_WIN32 != null' needs: ["deps-win-x64-cross", "gimp-debian-x64"] stage: gimp image: $CI_REGISTRY_IMAGE:build-debian-latest @@ -497,76 +489,6 @@ packaging-win-x64-nightly: - done-dll.list expire_in: 2 days -## WINDOWS 32-bit CI (cross-build crossroad) ## - -.win-x86-cross: - rules: - # Custom builds only (web GUI, API or schedules). - - if: '$GIMP_CI_CROSSROAD_WIN32 != null' - -deps-win-x86-cross: - extends: .win-cross - rules: - - !reference [.win-x86-cross, rules] - needs: ["image-debian-x64"] - stage: dependencies - image: $CI_REGISTRY_IMAGE:build-debian-latest - before_script: - - bash -x build/windows/gitlab-ci/1_build-deps-crossroad.sh - script: - - crossroad w32 gimp --run="build/windows/gitlab-ci/1_build-deps-crossroad.sh" - artifacts: - paths: - - .local/ - - _deps/_babl/_build-x86-cross/ - - _deps/_gegl/_build-x86-cross/ - expire_in: 2 hours - -gimp-win-x86-cross: - extends: .win-cross - rules: - - !reference [.win-x86-cross, rules] - needs: ["deps-win-x86-cross", "gimp-win-x64-cross", "gimp-debian-x64"] - stage: gimp - image: $CI_REGISTRY_IMAGE:build-debian-latest - cache: [] - before_script: - - bash -x build/windows/gitlab-ci/2_build-gimp-crossroad.sh - script: - - crossroad w32 gimp --run="build/windows/gitlab-ci/2_build-gimp-crossroad.sh" - artifacts: - paths: - - _install-x86-cross/ - - _build-x86-cross/ - expire_in: 1 day - -packaging-win-x86-nightly: - extends: .win-cross - rules: - - !reference [.win-x86-cross, rules] - needs: ["gimp-win-x86-cross"] - stage: packaging - variables: - CROSSROAD_PLATFORM: "w32" - cache: [] - before_script: - - apt-get update - - apt-get install -y --no-install-recommends - binutils - binutils-mingw-w64-i686 - file - libglib2.0-bin - python3 - script: - - bash -x build/windows/gitlab-ci/3_package-gimp-uni_base.sh - - cd gimp-x86 - - bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh - artifacts: - paths: - - gimp-x86/ - - done-dll.list - expire_in: 2 days - ## WINDOWS Aarch64 CI (native MSYS2) ## .win: diff --git a/build/windows/gitlab-ci/1_build-deps-crossroad.sh b/build/windows/gitlab-ci/1_build-deps-crossroad.sh index 6a71795300..51b1f09077 100644 --- a/build/windows/gitlab-ci/1_build-deps-crossroad.sh +++ b/build/windows/gitlab-ci/1_build-deps-crossroad.sh @@ -14,11 +14,7 @@ exit 0 # CROSSROAD ENV else -if [[ "x$CROSSROAD_PLATFORM" = "xw64" ]]; then - export ARTIFACTS_SUFFIX="-x64" -else # [[ "x$CROSSROAD_PLATFORM" = "xw32" ]]; - export ARTIFACTS_SUFFIX="-x86" -fi +export ARTIFACTS_SUFFIX="-x64" ## Install the required (pre-built) packages for babl, GEGL and GIMP crossroad source msys2 @@ -49,25 +45,23 @@ ninja install cd ../../ ## "Build" part of deps -if [ "x$CROSSROAD_PLATFORM" = "xw64" ]; then - ## Generator of the gio 'giomodule.cache' to fix error about - ## libgiognutls.dll that prevents generating loaders.cache - gio='' - gio+="libgiognomeproxy.dll: gio-proxy-resolver\n" - gio+="libgiognutls.dll: gio-tls-backend\n" - gio+="libgiolibproxy.dll: gio-proxy-resolver\n" - gio+="libgioopenssl.dll: gio-tls-backend\n" - printf "%b" "$gio" > ${CROSSROAD_PREFIX}/lib/gio/modules/giomodule.cache +### Generator of the gio 'giomodule.cache' to fix error about +### libgiognutls.dll that prevents generating loaders.cache +gio='' +gio+="libgiognomeproxy.dll: gio-proxy-resolver\n" +gio+="libgiognutls.dll: gio-tls-backend\n" +gio+="libgiolibproxy.dll: gio-proxy-resolver\n" +gio+="libgioopenssl.dll: gio-tls-backend\n" +printf "%b" "$gio" > ${CROSSROAD_PREFIX}/lib/gio/modules/giomodule.cache - ## NOT WORKING: Fallback generator of the pixbuf 'loaders.cache' for GUI image support - GDK_PATH=$(echo ${CROSSROAD_PREFIX}/lib/gdk-pixbuf-*/*/) - wine ${CROSSROAD_PREFIX}/bin/gdk-pixbuf-query-loaders.exe ${GDK_PATH}loaders/*.dll > ${GDK_PATH}loaders.cache - sed -i "s&$CROSSROAD_PREFIX/&&" ${CROSSROAD_PREFIX}/${GDK_PATH}/loaders.cache - sed -i '/.dll\"/s*/*\\\\*g' ${CROSSROAD_PREFIX}/${GDK_PATH}/loaders.cache +### NOT WORKING: Fallback generator of the pixbuf 'loaders.cache' for GUI image support +GDK_PATH=$(echo ${CROSSROAD_PREFIX}/lib/gdk-pixbuf-*/*/) +wine ${CROSSROAD_PREFIX}/bin/gdk-pixbuf-query-loaders.exe ${GDK_PATH}loaders/*.dll > ${GDK_PATH}loaders.cache +sed -i "s&$CROSSROAD_PREFIX/&&" ${CROSSROAD_PREFIX}/${GDK_PATH}/loaders.cache +sed -i '/.dll\"/s*/*\\\\*g' ${CROSSROAD_PREFIX}/${GDK_PATH}/loaders.cache - ## Generator of the glib 'gschemas.compiled' - GLIB_PATH=$(echo ${CROSSROAD_PREFIX}/share/glib-*/schemas/) - wine ${CROSSROAD_PREFIX}/bin/glib-compile-schemas.exe --targetdir=${GLIB_PATH} ${GLIB_PATH} -fi +### Generator of the glib 'gschemas.compiled' +GLIB_PATH=$(echo ${CROSSROAD_PREFIX}/share/glib-*/schemas/) +wine ${CROSSROAD_PREFIX}/bin/glib-compile-schemas.exe --targetdir=${GLIB_PATH} ${GLIB_PATH} fi # END OF CROSSROAD ENV diff --git a/build/windows/gitlab-ci/2_build-gimp-crossroad.sh b/build/windows/gitlab-ci/2_build-gimp-crossroad.sh index 562bfefe76..8c3256cc40 100644 --- a/build/windows/gitlab-ci/2_build-gimp-crossroad.sh +++ b/build/windows/gitlab-ci/2_build-gimp-crossroad.sh @@ -22,13 +22,7 @@ git submodule update --init # CROSSROAD ENV else -if [[ "x$CROSSROAD_PLATFORM" = "xw64" ]]; then - export ARTIFACTS_SUFFIX="-x64" - export MESON_OPTIONS="" -else # [[ "x$CROSSROAD_PLATFORM" = "xw32" ]]; - export ARTIFACTS_SUFFIX="-x86" - export MESON_OPTIONS="-Dwmf=disabled -Dmng=disabled" -fi +export ARTIFACTS_SUFFIX="-x64" ## The required packages for GIMP are taken from the previous job @@ -36,8 +30,7 @@ fi mkdir _build${ARTIFACTS_SUFFIX}-cross && cd _build${ARTIFACTS_SUFFIX}-cross crossroad meson setup .. -Dgi-docgen=disabled \ -Djavascript=disabled -Dlua=disabled \ - -Dpython=disabled -Dvala=disabled \ - $MESON_OPTIONS + -Dpython=disabled -Dvala=disabled ninja ninja install cd .. @@ -64,20 +57,4 @@ echo "Please run the gimp.cmd file to know the actual plug-in support." > ${CROS ## Copy built GIMP, babl and GEGL and pre-built packages to GIMP_PREFIX cp -fr $CROSSROAD_PREFIX/ _install${ARTIFACTS_SUFFIX}-cross/ -if [[ "x$CROSSROAD_PLATFORM" = "xw32" ]]; then - # We fail to install wine32 in x86 dep job and Gitlab "needs" field - # requires jobs to be from a prior stage, so we take from the x64 dep job - export CROSSROAD_PREFIX=".local/share/crossroad/roads/w64/gimp" - - cp ${CROSSROAD_PREFIX}/lib/gio/modules/giomodule.cache _install${ARTIFACTS_SUFFIX}/lib/gio/modules - - GDK_PATH=$(echo ${CROSSROAD_PREFIX}/lib/gdk-pixbuf-*/*/) - GDK_PATH=$(sed "s|${CROSSROAD_PREFIX}/||g" <<< $GDK_PATH) - cp ${CROSSROAD_PREFIX}/${GDK_PATH}loaders.cache _install${ARTIFACTS_SUFFIX}/${GDK_PATH} - - GLIB_PATH=$(echo ${CROSSROAD_PREFIX}/share/glib-*/schemas/) - GLIB_PATH=$(sed "s|${CROSSROAD_PREFIX}/||g" <<< $GLIB_PATH) - cp ${CROSSROAD_PREFIX}/${GLIB_PATH}gschemas.compiled _install${ARTIFACTS_SUFFIX}/${GLIB_PATH} -fi - fi # END OF CROSSROAD ENV diff --git a/build/windows/gitlab-ci/3_package-gimp-uni_base.sh b/build/windows/gitlab-ci/3_package-gimp-uni_base.sh index 3ef4775b74..cf608230c6 100644 --- a/build/windows/gitlab-ci/3_package-gimp-uni_base.sh +++ b/build/windows/gitlab-ci/3_package-gimp-uni_base.sh @@ -12,7 +12,7 @@ elif [[ "$CROSSROAD_PLATFORM" == "w64" ]] || [[ "$MSYSTEM_CARCH" == "x86_64" ]]; export ARTIFACTS_SUFFIX="-x64" export MSYS_PREFIX="c:/msys64${MSYSTEM_PREFIX}" export GIMP_DISTRIB=`realpath ./gimp-x64` -else # [[ "$CROSSROAD_PLATFORM" == "w32" ]] || [[ "$MSYSTEM_CARCH" == "i686" ]]; +else # [[ "$MSYSTEM_CARCH" == "i686" ]]; export ARTIFACTS_SUFFIX="-x86" export MSYS_PREFIX="c:/msys64${MSYSTEM_PREFIX}" export GIMP_DISTRIB=`realpath ./gimp-x86`