gitlab-ci, build/macos: Add caching to MacPorts builds

This makes the macOS builds way faster (aprox. 1hr instead of 3.5hr)
thanks to local caching of GNOME runner. We, however, still need to
split them since the timeout is relatively small on such runner.
This commit is contained in:
Bruno Lopes 2026-01-24 10:05:01 -03:00
parent 815b7a438f
commit 06e2ebfea4
2 changed files with 30 additions and 11 deletions

View file

@ -683,17 +683,24 @@ gimp-win-eol:
- printf "\e[0Ksection_end:`date +%s`:macos_environ\r\e[0K\n"
deps-macos-inhouse-part1:
#This splitted job is needed to rebuild 'vala' in time when it is bumped
extends: .macos-inhouse
stage: dependencies
cache:
- key: $CI_PROJECT_NAMESPACE
paths:
- macports-cached
policy: pull
script:
# Do not call sh since it is old bash on macOS, not the default zsh
- zsh build/macos/1_build-deps-macports.sh --part1
artifacts:
paths:
- macports.tar.gz
- macports
expire_in: 2 hours
deps-macos-inhouse-part2:
#This splitted job is needed to rebuild 'rust' in time when it is bumped
extends: .macos-inhouse
needs: ["deps-macos-inhouse-part1"]
stage: dependencies
@ -702,7 +709,7 @@ deps-macos-inhouse-part2:
- zsh build/macos/1_build-deps-macports.sh --part2
artifacts:
paths:
- macports.tar.gz
- macports
expire_in: 2 hours
deps-macos-inhouse:
@ -712,12 +719,17 @@ deps-macos-inhouse:
#to allow running the Homebrew builds which use precompiled binaries
optional: true
stage: dependencies
cache:
- key: $CI_PROJECT_NAMESPACE
paths:
- macports-cached
policy: push
script:
# Do not call sh since it is old bash on macOS, not the default zsh
- zsh build/macos/1_build-deps-macports.sh
artifacts:
paths:
- macports.tar.gz
- macports
- _install-*
# The full build dir is needed due to its .o for .dSYM creation on next job
- babl/_build-*

View file

@ -38,21 +38,28 @@ fi #End of config
printf "\e[0Ksection_start:`date +%s`:deps_install[collapsed=true]\r\e[0KInstalling dependencies provided by $( [ -f "$OPT_PREFIX/bin/port" ] && echo MacPorts || echo Homebrew )\n"
if [ -f "$OPT_PREFIX/bin/port" ]; then
eval $( [ "$OPT_PREFIX" = /opt/local ] && echo sudo ) port sync && eval $( [ "$OPT_PREFIX" = /opt/local ] && echo sudo ) port upgrade outdated
if [ -f 'macports.tar.gz' ]; then
bsdtar xf macports.tar.gz -C / || true
if [ "$CI_JOB_NAME" ] && ls -d macports* 2>/dev/null | grep -q .; then
if echo "$CI_JOB_NAME" | grep -q 'part1' && [ -d 'macports-cached' ]; then
cp -fa macports-cached/* $OPT_PREFIX/var/macports || true
elif [ -d 'macports' ]; then
cp -fa macports/* $OPT_PREFIX/var/macports || true
fi
eval $( [ "$OPT_PREFIX" = /opt/local ] && echo sudo ) port deactivate -fN installed
fi
if [ "$1" = '--part1' ]; then
if echo "$CI_JOB_NAME" | grep -q 'part1'; then
eval $( [ "$OPT_PREFIX" = /opt/local ] && echo sudo ) port install -N $(grep -v '^#' build/macos/all-deps-uni.txt | sed 's/|homebrew:[^ ]*//g' | tr -d '\' | awk '{print} /vala/{exit}' | xargs)
elif [ "$1" = '--part2' ]; then
elif echo "$CI_JOB_NAME" | grep -q 'part2'; then
eval $( [ "$OPT_PREFIX" = /opt/local ] && echo sudo ) port install -N $(grep -v '^#' build/macos/all-deps-uni.txt | sed 's/|homebrew:[^ ]*//g' | tr -d '\' | awk '{print} /appstream/{exit}' | xargs)
else
eval $( [ "$OPT_PREFIX" = /opt/local ] && echo sudo ) port install -N $(grep -v '^#' build/macos/all-deps-uni.txt | sed 's/|homebrew:[^ ]*//g' | tr -d '\' | xargs)
fi
if echo "$CI_JOB_NAME" | grep -q 'deps'; then
bsdtar -cf macports.tar.gz --gzip "$OPT_PREFIX" || true
fi
if echo "$1" | grep -q 'part'; then
exit 0
cp -fa $OPT_PREFIX/var/macports . || true
if echo "$CI_JOB_NAME" | grep -q 'part'; then
exit 0
elif [ "$CI_COMMIT_BRANCH" = "$CI_DEFAULT_BRANCH" ]; then
cp -fa macports macports-cached || true
fi
fi
git apply -v build/macos/patches/0001-meson-Patch-python-version.patch || true
else