From 5f164ef913d83d7fbe2b8775bbb0c2994625f8a3 Mon Sep 17 00:00:00 2001 From: Bruno Lopes Date: Sat, 27 Jan 2024 13:42:04 -0300 Subject: [PATCH] build/windows: Extend unified list to Deps scripts The list contains, in addition to the GIMP deps, all babl and GEGL deps. So, let's use it. Also, nothing new under the sun. We already use a unique list on the Windows build instruction page (for stable branch) and do the same to Debian image job. --- .../gitlab-ci/1_build-deps-crossroad.sh | 71 +++++++-------- build/windows/gitlab-ci/1_build-deps-msys2.sh | 90 ++++++++++--------- build/windows/gitlab-ci/2_build-gimp-msys2.sh | 8 +- .../gitlab-ci/3_package-gimp-uni_base.sh | 4 +- build/windows/gitlab-ci/all-deps-uni.txt | 1 + 5 files changed, 91 insertions(+), 83 deletions(-) diff --git a/build/windows/gitlab-ci/1_build-deps-crossroad.sh b/build/windows/gitlab-ci/1_build-deps-crossroad.sh index f77f9a96a7..f435092a80 100644 --- a/build/windows/gitlab-ci/1_build-deps-crossroad.sh +++ b/build/windows/gitlab-ci/1_build-deps-crossroad.sh @@ -1,20 +1,26 @@ if [[ "x$CROSSROAD_PLATFORM" = "xw64" ]]; then - export ARTIFACTS_SUFFIX="-x64" + export ARTIFACTS_SUFFIX="-x64" else # [[ "x$CROSSROAD_PLATFORM" = "xw32" ]]; - export ARTIFACTS_SUFFIX="-x86" + export ARTIFACTS_SUFFIX="-x86" fi -# Install the required (pre-built) packages for babl and GEGL +# Install the required (pre-built) packages for babl, GEGL and GIMP crossroad source msys2 -crossroad install cairo \ - graphviz \ - json-glib \ - lcms2 +export DEPS_PATH="build/windows/gitlab-ci/all-deps-uni.txt" +sed -i "s/DEPS_ARCH_//g" $DEPS_PATH +export GIMP_DEPS=`cat $DEPS_PATH` +crossroad install $GIMP_DEPS + +if [ $? -ne 0 ]; then + echo "Installation of pre-built dependencies failed."; + exit 1; +fi + # Clone babl and GEGL (follow master branch) mkdir _deps && cd _deps -git clone --depth 1 https://gitlab.gnome.org/GNOME/babl.git _babl +git clone --depth 1 https://gitlab.gnome.org/GNOME/babl.git _babl git clone --depth 1 https://gitlab.gnome.org/GNOME/gegl.git _gegl # Build babl and GEGL @@ -26,44 +32,33 @@ ninja && ninja install mkdir ../../_gegl/_build${ARTIFACTS_SUFFIX}/ && cd ../../_gegl/_build${ARTIFACTS_SUFFIX}/ crossroad meson setup .. -Dintrospection=false \ -Dlibdir=lib \ - -Dsdl2=disabled + -Dsdl2=disabled ninja && ninja install cd ../../ -# Install the required (pre-built) packages for GIMP -export DEPS_PATH="../build/windows/gitlab-ci/all-deps-uni.txt" -sed -i "s/DEPS_ARCH_//g" $DEPS_PATH -export GIMP_DEPS=`cat $DEPS_PATH` -crossroad install libmng $GIMP_DEPS - -if [ $? -ne 0 ]; then - echo "Installation of pre-built dependencies failed."; - exit 1; -fi - # Build (part of) GIMP 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 - export GDK_PATH=`echo ${CROSSROAD_PREFIX}/lib/gdk-pixbuf-*/*/` - GDK_PATH=$(sed "s|${CROSSROAD_PREFIX}/||g" <<< $GDK_PATH) - wine ${CROSSROAD_PREFIX}/bin/gdk-pixbuf-query-loaders.exe ${CROSSROAD_PREFIX}/${GDK_PATH}loaders/*.dll > ${CROSSROAD_PREFIX}/${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 + export GDK_PATH=`echo ${CROSSROAD_PREFIX}/lib/gdk-pixbuf-*/*/` + GDK_PATH=$(sed "s|${CROSSROAD_PREFIX}/||g" <<< $GDK_PATH) + wine ${CROSSROAD_PREFIX}/bin/gdk-pixbuf-query-loaders.exe ${CROSSROAD_PREFIX}/${GDK_PATH}loaders/*.dll > ${CROSSROAD_PREFIX}/${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' - export GLIB_PATH=`echo ${CROSSROAD_PREFIX}/share/glib-*/schemas/` - GLIB_PATH=$(sed "s|${CROSSROAD_PREFIX}/||g" <<< $GLIB_PATH) - wine glib-compile-schemas --targetdir=${CROSSROAD_PREFIX}/${GLIB_PATH} ${CROSSROAD_PREFIX}/${GLIB_PATH} + ## Generator of the glib 'gschemas.compiled' + export GLIB_PATH=`echo ${CROSSROAD_PREFIX}/share/glib-*/schemas/` + GLIB_PATH=$(sed "s|${CROSSROAD_PREFIX}/||g" <<< $GLIB_PATH) + wine glib-compile-schemas --targetdir=${CROSSROAD_PREFIX}/${GLIB_PATH} ${CROSSROAD_PREFIX}/${GLIB_PATH} fi ## XXX Functional fix to the problem of non-configured interpreters diff --git a/build/windows/gitlab-ci/1_build-deps-msys2.sh b/build/windows/gitlab-ci/1_build-deps-msys2.sh index 91e7d2ed42..07a699da16 100644 --- a/build/windows/gitlab-ci/1_build-deps-msys2.sh +++ b/build/windows/gitlab-ci/1_build-deps-msys2.sh @@ -5,40 +5,40 @@ set -e if [[ "$MSYSTEM_CARCH" == "aarch64" ]]; then - export ARTIFACTS_SUFFIX="-a64" + export ARTIFACTS_SUFFIX="-a64" elif [[ "$MSYSTEM_CARCH" == "x86_64" ]]; then - export ARTIFACTS_SUFFIX="-x64" + export ARTIFACTS_SUFFIX="-x64" else # [[ "$MSYSTEM_CARCH" == "i686" ]]; - export ARTIFACTS_SUFFIX="-x86" + export ARTIFACTS_SUFFIX="-x86" fi if [[ "$BUILD_TYPE" != "CI_NATIVE" ]]; then - # Make the script callable from every directory - cd ~ - - pacman --noconfirm -Suy + # Make the script callable from every directory + if [[ "$0" != "build/windows/gitlab-ci/1_build-deps-msys2.sh" ]]; then + GIMP_EXTDIR="$0" + GIMP_EXTDIR=$(sed 's|build/windows/gitlab-ci/1_build-deps-msys2.sh||g' <<< $GIMP_EXTDIR) + GIMP_DIR="$GIMP_EXTDIR" + else + GIMP_GITDIR="$(pwd)" + GIMP_GITDIR=$(sed 's|build/windows/gitlab-ci||g' <<< $GIMP_GITDIR) + GIMP_GITDIR=$(sed 's|build/windows||g' <<< $GIMP_GITDIR) + GIMP_GITDIR=$(sed 's|build||g' <<< $GIMP_GITDIR) + GIMP_DIR="$GIMP_GITDIR" + fi + cd $GIMP_DIR + + pacman --noconfirm -Suy fi # Install the required (pre-built) packages for babl and GEGL -pacman --noconfirm -S --needed \ - base-devel \ - ${MINGW_PACKAGE_PREFIX}-toolchain \ - ${MINGW_PACKAGE_PREFIX}-meson \ - \ - ${MINGW_PACKAGE_PREFIX}-cairo \ - ${MINGW_PACKAGE_PREFIX}-crt-git \ - ${MINGW_PACKAGE_PREFIX}-glib-networking \ - ${MINGW_PACKAGE_PREFIX}-gobject-introspection \ - ${MINGW_PACKAGE_PREFIX}-json-glib \ - ${MINGW_PACKAGE_PREFIX}-lcms2 \ - ${MINGW_PACKAGE_PREFIX}-lensfun \ - ${MINGW_PACKAGE_PREFIX}-libspiro \ - ${MINGW_PACKAGE_PREFIX}-maxflow \ - ${MINGW_PACKAGE_PREFIX}-openexr \ - ${MINGW_PACKAGE_PREFIX}-pango \ - ${MINGW_PACKAGE_PREFIX}-suitesparse \ - ${MINGW_PACKAGE_PREFIX}-vala +export DEPS_PATH="build/windows/gitlab-ci/all-deps-uni.txt" +sed -i "s/DEPS_ARCH_/${MINGW_PACKAGE_PREFIX}-/g" $DEPS_PATH +export GIMP_DEPS=`cat $DEPS_PATH` +pacman --noconfirm -S --needed git \ + base-devel \ + ${MINGW_PACKAGE_PREFIX}-toolchain \ + $GIMP_DEPS # Clone babl and GEGL (follow master branch) @@ -51,11 +51,11 @@ export LD_LIBRARY_PATH="${GIMP_PREFIX}/lib:${LD_LIBRARY_PATH}" export XDG_DATA_DIRS="${GIMP_PREFIX}/share:${MSYSTEM_PREFIX}/share/" clone_or_pull() { - if [ ! -d "_${1}" ]; then - git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/${1}.git _${1} - else - cd _${1} && git pull && cd .. - fi + if [ ! -d "_${1}" ]; then + git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/${1}.git _${1} + else + cd _${1} && git pull && cd .. + fi } clone_or_pull babl @@ -63,22 +63,30 @@ clone_or_pull gegl # Build babl and GEGL -configure_or_build() { +configure_or_build() + { if [ ! -f "_${1}/_build/build.ninja" ]; then - mkdir -p _${1}/_build${ARTIFACTS_SUFFIX} && cd _${1}/_build${ARTIFACTS_SUFFIX} - meson setup .. -Dprefix="${GIMP_PREFIX}" \ - $2 - ninja && ninja install - cd ../.. + mkdir -p _${1}/_build${ARTIFACTS_SUFFIX} && cd _${1}/_build${ARTIFACTS_SUFFIX} + meson setup .. -Dprefix="${GIMP_PREFIX}" \ + $2 + ninja && ninja install + cd ../.. else - cd _${1}/_build${ARTIFACTS_SUFFIX} - ninja && ninja install - cd ../.. + cd _${1}/_build${ARTIFACTS_SUFFIX} + ninja && ninja install + cd ../.. fi -} + } configure_or_build babl "-Dwith-docs=false" configure_or_build gegl "-Ddocs=false \ -Dcairo=enabled -Dumfpack=enabled \ - -Dopenexr=enabled -Dworkshop=true" \ No newline at end of file + -Dopenexr=enabled -Dworkshop=true" + + +if [[ "$BUILD_TYPE" != "CI_NATIVE" ]]; then + mv _babl ~ + mv _gegl ~ + mv "${GIMP_PREFIX}" ~ +fi \ No newline at end of file diff --git a/build/windows/gitlab-ci/2_build-gimp-msys2.sh b/build/windows/gitlab-ci/2_build-gimp-msys2.sh index b64ec47f1f..e4f73dc425 100644 --- a/build/windows/gitlab-ci/2_build-gimp-msys2.sh +++ b/build/windows/gitlab-ci/2_build-gimp-msys2.sh @@ -34,7 +34,7 @@ else GIMP_GITDIR=$(sed 's|build||g' <<< $GIMP_GITDIR) cd $GIMP_GITDIR fi - + pacman --noconfirm -Suy fi @@ -43,7 +43,9 @@ fi export DEPS_PATH="build/windows/gitlab-ci/all-deps-uni.txt" sed -i "s/DEPS_ARCH_/${MINGW_PACKAGE_PREFIX}-/g" $DEPS_PATH export GIMP_DEPS=`cat $DEPS_PATH` -pacman --noconfirm -S --needed base-devel $GIMP_DEPS +pacman --noconfirm -S --needed base-devel \ + ${MINGW_PACKAGE_PREFIX}-toolchain \ + $GIMP_DEPS # Install QOI header manually # mingw32 package of qoi was removed from MSYS2, we have download it by ourselves @@ -136,7 +138,7 @@ if [[ "$BUILD_TYPE" == "CI_NATIVE" ]]; then make_cmd CI %cd% cd .. - + #ccache --show-stats # XXX Moving back the prefix to be used as artifacts. 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 17407d1d72..0cb50d03c0 100644 --- a/build/windows/gitlab-ci/3_package-gimp-uni_base.sh +++ b/build/windows/gitlab-ci/3_package-gimp-uni_base.sh @@ -28,7 +28,9 @@ if [[ "$BUILD_TYPE" != "CI_CROSS" ]]; then export DEPS_PATH="build/windows/gitlab-ci/all-deps-uni.txt" sed -i "s/DEPS_ARCH_/${MINGW_PACKAGE_PREFIX}-/g" $DEPS_PATH export GIMP_DEPS=`cat $DEPS_PATH` -pacman --noconfirm -S --needed base-devel $GIMP_DEPS +pacman --noconfirm -S --needed base-devel \ + ${MINGW_PACKAGE_PREFIX}-toolchain \ + $GIMP_DEPS fi diff --git a/build/windows/gitlab-ci/all-deps-uni.txt b/build/windows/gitlab-ci/all-deps-uni.txt index 4a38077eac..eed14bbcd6 100644 --- a/build/windows/gitlab-ci/all-deps-uni.txt +++ b/build/windows/gitlab-ci/all-deps-uni.txt @@ -28,6 +28,7 @@ DEPS_ARCH_libheif DEPS_ARCH_libiff DEPS_ARCH_libilbm DEPS_ARCH_libjxl +DEPS_ARCH_libmng DEPS_ARCH_libmypaint DEPS_ARCH_libspiro DEPS_ARCH_libwebp