diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index b14fe91cdb7..f0fbc600b90 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -411,7 +411,7 @@ task: task: - name: macOS - Ventura - Meson + name: macOS - Sonoma - Meson env: CPUS: 4 # always get that much for cirrusci macOS instances @@ -420,7 +420,7 @@ task: # work OK. See # https://postgr.es/m/20220927040208.l3shfcidovpzqxfh%40awork3.anarazel.de TEST_JOBS: 8 - IMAGE: ghcr.io/cirruslabs/macos-ventura-base:latest + IMAGE: ghcr.io/cirruslabs/macos-runner:sonoma CIRRUS_WORKING_DIR: ${HOME}/pgsql/ CCACHE_DIR: ${HOME}/ccache @@ -460,6 +460,11 @@ task: # updates macports every time. macports_cache: folder: ${MACPORTS_CACHE} + fingerprint_script: | + # Include the OS major version in the cache key. If the OS image changes + # to a different major version, we need to reinstall. + sw_vers -productVersion | sed 's/\..*//' + reupload_on_changes: true setup_additional_packages_script: | sh src/tools/ci/ci_macports_packages.sh \ ccache \ diff --git a/src/tools/ci/ci_macports_packages.sh b/src/tools/ci/ci_macports_packages.sh index f87256e0908..03cbe48a5d6 100755 --- a/src/tools/ci/ci_macports_packages.sh +++ b/src/tools/ci/ci_macports_packages.sh @@ -13,7 +13,19 @@ set -e packages="$@" -macports_url="https://github.com/macports/macports-base/releases/download/v2.8.1/MacPorts-2.8.1-13-Ventura.pkg" +macos_major_version="` sw_vers -productVersion | sed 's/\..*//' `" +echo "macOS major version: $macos_major_version" + +# Scan the avialable MacPorts releases to find the latest one for the +# running macOS release. By default we assume the first match is the most +# recent MacPorts version but that can be changed below if it turns out to be +# problematic or a particular MacPorts release turns out to be broken. +macports_release_list_url="https://api.github.com/repos/macports/macports-base/releases" +macports_version_pattern=".*" +#macports_version_pattern="2\.9\.3" +macports_url="$( curl -s $macports_release_list_url | grep "\"https://github.com/macports/macports-base/releases/download/v$macports_version_pattern/MacPorts-$macports_version_pattern-$macos_major_version-[A-Za-z]*\.pkg\"" | sed 's/.*: "//;s/".*//' | head -1 )" +echo "MacPorts package URL: $macports_url" + cache_dmg="macports.hfs.dmg" if [ "$CIRRUS_CI" != "true" ]; then