From 3b60bed17d284241562df36963b25bfdb972bda9 Mon Sep 17 00:00:00 2001 From: Hugo Date: Sat, 31 Oct 2026 13:52:05 +0100 Subject: [PATCH] ci: build on macos-15 with Xcode 16.0 before macos-14 is retired GitHub retires the macos-14 image on November 2, 2026, and fails its jobs during the scheduled brownouts before that (actions/runner-images#13518): "Build on macos-14" was cancelled before any step on #239 and #241 on October 30. The job moves to macos-15 with Xcode 16.0, the oldest Xcode of that image: its AppleClang 16.0.0 is the oldest Apple compiler GitHub's runners still provide. The step fails if the image no longer has Xcode 16.0, rather than building with another one. Two things are then no longer tested: AppleClang 15, the compiler the job was added for (#228), since macos-14 is the only image with Xcode 15; and the macOS 14 C++ runtime, whose demangler predates C++23 explicit object members (#240). These are losses of coverage, not a decision to drop compatibility with either. --- .github/workflows/ci.yml | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ad22c0..20867d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,9 +25,12 @@ jobs: strategy: fail-fast: false matrix: - # macos-14 builds with AppleClang 15 (Xcode 15.4), the oldest compiler CoreTrace builds - # the analyzer with; macos-latest has a newer one (#228). - os: [ubuntu-24.04, macos-latest, macos-14] + # macos-15 builds with AppleClang 16 (Xcode 16.0, selected below), the oldest Apple + # compiler GitHub's runners still provide; macos-latest has a newer one (#228). + # GitHub retires macos-14, the only image with Xcode 15, on November 2, 2026 + # (actions/runner-images#13518): AppleClang 15 (Xcode 15.4) and the macOS 14 C++ runtime + # are no longer tested here. That is a loss of coverage, not a decision to drop them. + os: [ubuntu-24.04, macos-latest, macos-15] steps: - uses: actions/checkout@v4 @@ -52,6 +55,16 @@ jobs: echo "LLVM_DIR=/usr/lib/llvm-20/lib/cmake/llvm" >> $GITHUB_ENV echo "Clang_DIR=/usr/lib/llvm-20/lib/cmake/clang" >> $GITHUB_ENV + # macos-15: the oldest Xcode of the image, for the compiler the matrix names. CMake's + # /usr/bin/c++ follows DEVELOPER_DIR; a missing Xcode 16.0 fails here, not on another one. + - name: Select Xcode 16.0 (macos-15) + if: matrix.os == 'macos-15' + run: | + XCODE=/Applications/Xcode_16.0.app/Contents/Developer + test -d "$XCODE" || { echo "::error::Xcode 16.0 is not on this image"; exit 1; } + echo "DEVELOPER_DIR=$XCODE" >> "$GITHUB_ENV" + DEVELOPER_DIR="$XCODE" /usr/bin/c++ --version + # macOS: install toolchain - name: Install dependencies (macOS) if: runner.os == 'macOS'