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