build/windows: Separate "MSYS2" prefix from GIMP_PREFIX in crossbuilds

This finally makes our crossbuild scripts work like in all other platforms:
with GIMP_PREFIX separated from the system/MSYS2 prefix. Thanks, @Jehan.

For some reason this makes meson don't find only 'bzip2' headers provided by
the cross compiler so, in crossbuilds, let's use the ones provided by MSYS2.
This commit is contained in:
Bruno 2024-11-03 20:22:59 -03:00
parent ce2a9dc3eb
commit 711ed64f38
No known key found for this signature in database
3 changed files with 71 additions and 62 deletions

View File

@ -61,71 +61,75 @@ cd ..
# CROSSROAD ENV
export PATH="$PWD/.local/bin:$PATH"
export XDG_DATA_HOME="$PWD/.local/share"
crossroad w64 gimp --run="${GIMP_DIR}build/windows/1_build-deps-crossroad.sh"
crossroad w64 msys2 --run="${GIMP_DIR}build/windows/1_build-deps-crossroad.sh"
crossroad w64 gimp --depends msys2 --run="${GIMP_DIR}build/windows/1_build-deps-crossroad.sh"
else
## Install the required (pre-built) packages for babl, GEGL and GIMP
crossroad source msys2
deps=$(cat ${GIMP_DIR}build/windows/all-deps-uni.txt |
sed "s/\${MINGW_PACKAGE_PREFIX}-//g" | sed 's/\\//g')
## NOTE: Crossroad is too prone to fail at downloading deps so let's retry
crossroad install $deps || crossroad install $deps
if [ $? -ne 0 ]; then
echo "Installation of pre-built dependencies failed.";
exit 1;
if [ "$CROSSROAD_PROJECT" = 'msys2' ]; then
## Install the required (pre-built) packages for babl, GEGL and GIMP
crossroad source msys2
deps=$(cat ${GIMP_DIR}build/windows/all-deps-uni.txt |
sed "s/\${MINGW_PACKAGE_PREFIX}-//g" | sed 's/\\//g')
## NOTE: Crossroad is too prone to fail at downloading deps so let's retry
crossroad install $deps || crossroad install $deps
if [ $? -ne 0 ]; then
echo "Installation of pre-built dependencies failed.";
exit 1;
fi
## FIXME: Build manually gio 'giomodule.cache' to fix error about
## absent libgiognutls.dll that prevents generating loaders.cache
echo 'libgiognomeproxy.dll: gio-proxy-resolver
libgiognutls.dll: gio-tls-backend
libgiolibproxy.dll: gio-proxy-resolver
libgioopenssl.dll: gio-tls-backend' > $CROSSROAD_PREFIX/lib/gio/modules/giomodule.cache
## FIXME: Build manually pixbuf 'loaders.cache' for GUI image support
echo '"lib\\gdk-pixbuf-2.0\\2.10.0\\loaders\\libpixbufloader-png.dll"
"png" 5 "gdk-pixbuf" "PNG" "LGPL"
"image/png" ""
"png" ""
"\211PNG\r\n\032\n" "" 100
"lib\\gdk-pixbuf-2.0\\2.10.0\\loaders\\libpixbufloader-svg.dll"
"svg" 6 "gdk-pixbuf" "Scalable Vector Graphics" "LGPL"
"image/svg+xml" "image/svg" "image/svg-xml" "image/vnd.adobe.svg+xml" "text/xml-svg" "image/svg+xml-compressed" ""
"svg" "svgz" "svg.gz" ""
" <svg" "* " 100
" <!DOCTYPE svg" "* " 100
' > $(echo $CROSSROAD_PREFIX/lib/gdk-pixbuf-*/*/)/loaders.cache
## FIXME: Build manually glib 'gschemas.compiled'
GLIB_PATH=$(echo $CROSSROAD_PREFIX/share/glib-*/schemas/)
wine $CROSSROAD_PREFIX/bin/glib-compile-schemas.exe --targetdir=$GLIB_PATH $GLIB_PATH >/dev/null 2>&1
fi
## Prepare env (no env var is needed, all are auto set to CROSSROAD_PREFIX)
export ARTIFACTS_SUFFIX="-cross"
if [ "$CROSSROAD_PROJECT" = 'gimp' ]; then
## Prepare env (no env var is needed, all are auto set to CROSSROAD_PREFIX)
export ARTIFACTS_SUFFIX="-cross"
## Build babl and GEGL
self_build ()
{
# Clone source only if not already cloned or downloaded
if [ ! -d "$1" ]; then
git clone --depth $GIT_DEPTH https://gitlab.gnome.org/gnome/$1
fi
cd $1
git pull
## Build babl and GEGL
self_build ()
{
# Clone source only if not already cloned or downloaded
if [ ! -d "$1" ]; then
git clone --depth $GIT_DEPTH https://gitlab.gnome.org/gnome/$1
fi
cd $1
git pull
if [ ! -f "_build$ARTIFACTS_SUFFIX/build.ninja" ]; then
crossroad meson setup _build$ARTIFACTS_SUFFIX $2
fi
cd _build$ARTIFACTS_SUFFIX
ninja
ninja install
ccache --show-stats
cd ../..
}
self_build babl '-Denable-gir=false'
self_build gegl '-Dintrospection=false'
## FIXME: Build manually gio 'giomodule.cache' to fix error about
## absent libgiognutls.dll that prevents generating loaders.cache
echo 'libgiognomeproxy.dll: gio-proxy-resolver
libgiognutls.dll: gio-tls-backend
libgiolibproxy.dll: gio-proxy-resolver
libgioopenssl.dll: gio-tls-backend' > $CROSSROAD_PREFIX/lib/gio/modules/giomodule.cache
## FIXME: Build manually pixbuf 'loaders.cache' for GUI image support
echo '"lib\\gdk-pixbuf-2.0\\2.10.0\\loaders\\libpixbufloader-png.dll"
"png" 5 "gdk-pixbuf" "PNG" "LGPL"
"image/png" ""
"png" ""
"\211PNG\r\n\032\n" "" 100
"lib\\gdk-pixbuf-2.0\\2.10.0\\loaders\\libpixbufloader-svg.dll"
"svg" 6 "gdk-pixbuf" "Scalable Vector Graphics" "LGPL"
"image/svg+xml" "image/svg" "image/svg-xml" "image/vnd.adobe.svg+xml" "text/xml-svg" "image/svg+xml-compressed" ""
"svg" "svgz" "svg.gz" ""
" <svg" "* " 100
" <!DOCTYPE svg" "* " 100
' > $(echo $CROSSROAD_PREFIX/lib/gdk-pixbuf-*/*/)/loaders.cache
## FIXME: Build manually glib 'gschemas.compiled'
GLIB_PATH=$(echo $CROSSROAD_PREFIX/share/glib-*/schemas/)
wine $CROSSROAD_PREFIX/bin/glib-compile-schemas.exe --targetdir=$GLIB_PATH $GLIB_PATH >/dev/null 2>&1
if [ ! -f "_build$ARTIFACTS_SUFFIX/build.ninja" ]; then
crossroad meson setup _build$ARTIFACTS_SUFFIX $2
fi
cd _build$ARTIFACTS_SUFFIX
ninja
ninja install
ccache --show-stats
cd ../..
}
self_build babl '-Denable-gir=false'
self_build gegl '-Dintrospection=false'
fi
fi # END OF CROSSROAD ENV

View File

@ -57,7 +57,7 @@ fi
# CROSSROAD ENV
export PATH="$PWD/${PARENT_DIR}.local/bin:$PWD/bin:$PATH"
export XDG_DATA_HOME="$PWD/${PARENT_DIR}.local/share"
crossroad w64 gimp --run="build/windows/2_build-gimp-crossroad.sh"
crossroad w64 gimp --depends msys2 --run="build/windows/2_build-gimp-crossroad.sh"
else
## The required packages for GIMP are taken from the result of previous script

View File

@ -734,7 +734,12 @@ MIMEtypes += 'image/jpeg'
zlib = dependency('zlib')
MIMEtypes += 'image/x-psp'
bz2 = cc.find_library('bz2')
# Compiler-provided headers can't be found in crossroads environment
if not meson.is_cross_build()
bz2 = cc.find_library('bz2')
else
bz2 = dependency('bzip2')
endif
liblzma_minver = '5.0.0'
liblzma = dependency('liblzma', version: '>='+liblzma_minver)