gimp/build/windows/gitlab-ci/1_build-deps-msys2.sh
Bruno Lopes 28ba5d6918 gitlab-ci: Silence universal variables
They were generating a distracting output in CLANG* shells, as noted by
@lillolollo in a comment from MR: Infrastructure/gimp-web-devel!65

In the process, make AppImage and Windows (native) scripts use these
variables, without hardcoding the same variables from .yml anymore.
2024-04-22 13:22:31 +00:00

115 lines
No EOL
3.5 KiB
Bash

#!/bin/bash
set -e
# $MSYSTEM_CARCH, $MSYSTEM_PREFIX and $MINGW_PACKAGE_PREFIX are defined by MSYS2.
# https://github.com/msys2/MSYS2-packages/blob/master/filesystem/msystem
if [[ "$MSYSTEM_CARCH" == "aarch64" ]]; then
export ARTIFACTS_SUFFIX="-a64"
elif [[ "$MSYSTEM_CARCH" == "x86_64" ]]; then
export ARTIFACTS_SUFFIX="-x64"
else # [[ "$MSYSTEM_CARCH" == "i686" ]];
export ARTIFACTS_SUFFIX="-x86"
fi
if [[ "$BUILD_TYPE" == "CI_NATIVE" ]]; then
GIMP_DIR=""
else
# Make the script work locally
if [[ "$0" != "build/windows/gitlab-ci/1_build-deps-msys2.sh" ]]; then
echo "To run this script locally, please do it from to the gimp git folder"
exit 1
else
GIMP_DIR=$(echo "${PWD##*/}/")
DEPS_DIR=$(dirname $PWD)
cd $DEPS_DIR
fi
export GIT_DEPTH=1
pacman --noconfirm -Suy
fi
# Install the required (pre-built) packages for babl and GEGL
DEPS_LIST=$(cat ${GIMP_DIR}build/windows/gitlab-ci/all-deps-uni.txt)
DEPS_LIST=$(sed "s/\${MINGW_PACKAGE_PREFIX}-/${MINGW_PACKAGE_PREFIX}-/g" <<< $DEPS_LIST)
DEPS_LIST=$(sed 's/\\//g' <<< $DEPS_LIST)
if [[ "$MSYSTEM_CARCH" == "aarch64" ]]; then
retry=3
while [ $retry -gt 0 ]; do
timeout --signal=KILL 3m pacman --noconfirm -S --needed git \
base-devel \
${MINGW_PACKAGE_PREFIX}-toolchain \
$DEPS_LIST && break
echo "MSYS2 pacman timed out. Trying again."
taskkill //t //F //IM "pacman.exe"
rm -f c:/msys64/var/lib/pacman/db.lck
: $((--retry))
done
if [ $retry -eq 0 ]; then
echo "MSYS2 pacman repeatedly failed. See: https://github.com/msys2/MSYS2-packages/issues/4340"
exit 1
fi
else
pacman --noconfirm -S --needed git \
base-devel \
${MINGW_PACKAGE_PREFIX}-toolchain \
$DEPS_LIST
fi
# End of install
# Clone babl and GEGL (follow master branch)
clone_or_pull ()
{
repo="https://gitlab.gnome.org/GNOME/${1}.git"
if [ "$CI_COMMIT_TAG" != "" ]; then
# For tagged jobs (i.e. release or test jobs for upcoming releases), use the
# last tag. Otherwise use the default branch's HEAD.
tag=$(git ls-remote --tags --exit-code --refs "$repo" | grep -oi "$1_[0-9]*_[0-9]*_[0-9]*" | sort --version-sort | tail -1)
git_options="--branch=$tag"
echo "Using tagged release of $1: $tag"
fi
if [ ! -d "_${1}" ]; then
git clone $git_options --depth $GIT_DEPTH $repo _${1} || exit 1
else
cd _${1} && git pull && cd ..
fi
}
clone_or_pull babl
clone_or_pull gegl
# Build babl and GEGL
export GIMP_PREFIX="`realpath ./_install`${ARTIFACTS_SUFFIX}"
## Universal variables from .gitlab-ci.yml
OLD_IFS=$IFS
IFS=$'\n' VAR_ARRAY=($(cat ${GIMP_DIR}.gitlab-ci.yml | sed -n '/export PATH=/,/GI_TYPELIB_PATH}\"/p' | sed 's/ - //'))
IFS=$OLD_IFS
for VAR in "${VAR_ARRAY[@]}"; do
eval "$VAR" || continue
done
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) || exit 1
cd ../..
else
cd _${1}/_build${ARTIFACTS_SUFFIX}
(ninja && ninja install) || exit 1
cd ../..
fi
}
configure_or_build babl "-Dwith-docs=false"
configure_or_build gegl "-Ddocs=false -Dworkshop=true"
ccache --show-stats