summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Munro2024-07-24 23:26:48 +0000
committerThomas Munro2024-07-24 23:30:55 +0000
commitd01ce180d9b5f0656d499840e138ab9ae9f8bf76 (patch)
treec455b1b5bc92ecf3da5e849e4eca2483539c3ee0
parent364509a2e7f92785407348ec702e39729fda6cf8 (diff)
ci: Upgrade macOS version from 13 to 14.
1. Previously we were using ghcr.io/cirruslabs/macos-XXX-base:latest images, but Cirrus has started ignoring that and using a particular image, currently ghcr.io/cirruslabs/macos-runner:sonoma, for github accounts using free CI resources (as opposed to dedicated runner machines, as cfbot uses). Let's just ask for that image anyway, to stay in sync. 2. Instead of hard-coding a MacPorts installation URL, deduce it from the running macOS version and the available releases. This removes the need to keep the ci_macports_packages.sh in sync with .cirrus.task.yml, and to advance the MacPorts version from time to time. 3. Change the cache key we use to cache the whole macports installation across builds to include the OS major version, to trigger a fresh installation when appropriate. Back-patch to 15 where CI began. Reviewed-by: Andres Freund <[email protected]> Discussion: https://postgr.es/m/CA%2BhUKGLqJdv6RcwyZ_0H7khxtLTNJyuK%2BvDFzv3uwYbn8hKH6A%40mail.gmail.com
-rw-r--r--.cirrus.tasks.yml9
-rwxr-xr-xsrc/tools/ci/ci_macports_packages.sh14
2 files changed, 20 insertions, 3 deletions
diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml
index 99ca74d5133..4d773b9a4f7 100644
--- a/.cirrus.tasks.yml
+++ b/.cirrus.tasks.yml
@@ -413,7 +413,7 @@ task:
task:
- name: macOS - Ventura - Meson
+ name: macOS - Sonoma - Meson
env:
CPUS: 4 # always get that much for cirrusci macOS instances
@@ -422,7 +422,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
@@ -462,6 +462,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