From dacd568aefed0e20f8ee207acc359e6c4d9b2430 Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Sat, 11 Apr 2026 14:29:12 -0500 Subject: [PATCH 1/2] COMP: Upgrade bit-rotted macOS runner pins to macos-14 house canonical The `build-test-cxx` job (and its paired `matrix.os == 'macos-*'` XCode-select conditional) and the `build-test-notebooks` job in .github/workflows/build-test-publish.yml pinned `macos-13`, which is now a deprecated GitHub Actions runner image. The `build-test-python-superbuild` job already targets `macos-15`, so it is intentionally left alone (the "do not downgrade" rule wins over strict convergence on the house canonical). Update the two `macos-13` entries -- matrix lines and include: blocks, plus the matching `matrix.os == 'macos-13'` conditional that selects the pinned Xcode 14.3.1 -- to `macos-14`. This matches the canonical runner triple `[ubuntu-24.04, windows-2022, macos-14]` used by the other ITK remote modules (VkFFTBackend, WebAssemblyInterface, ...) and keeps the Xcode pinning step wired up (Xcode 14.3.1 is still shipped in the `macos-14` image). The `build-test-documentation` job is ubuntu-only and is not touched. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/build-test-publish.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-test-publish.yml b/.github/workflows/build-test-publish.yml index 443af853b..e4c6dabd8 100644 --- a/.github/workflows/build-test-publish.yml +++ b/.github/workflows/build-test-publish.yml @@ -11,7 +11,7 @@ jobs: strategy: max-parallel: 3 matrix: - os: [ubuntu-24.04, windows-2022, macos-13] + os: [ubuntu-24.04, windows-2022, macos-14] include: - os: ubuntu-24.04 c-compiler: "gcc" @@ -21,7 +21,7 @@ jobs: c-compiler: "cl.exe" cxx-compiler: "cl.exe" cmake-build-type: "Release" - - os: macos-13 + - os: macos-14 c-compiler: "clang" cxx-compiler: "clang++" cmake-build-type: "MinSizeRel" @@ -45,7 +45,7 @@ jobs: uses: lukka/get-cmake@v3.24.2 - name: Specific XCode version - if: matrix.os == 'macos-13' + if: matrix.os == 'macos-14' run: | sudo xcode-select -s "/Applications/Xcode_14.3.1.app" @@ -234,7 +234,7 @@ jobs: strategy: max-parallel: 3 matrix: - os: [ubuntu-24.04, windows-2022, macos-13] + os: [ubuntu-24.04, windows-2022, macos-14] steps: - uses: actions/checkout@v4 From ad02f95bc13c3bcdbc414f85f61a9cdd92668072 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 12 Apr 2026 21:17:50 -0500 Subject: [PATCH 2/2] COMP: Use dynamic Xcode selection instead of hardcoded version The macos-14 runner no longer has Xcode 14.3.1 installed. Instead of hardcoding a specific Xcode version, detect the latest installed Xcode app dynamically. This approach works across runner updates without needing to track which Xcode versions are pre-installed. xcode-select: error: invalid developer directory '/Applications/Xcode_14.3.1.app' Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/build-test-publish.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-test-publish.yml b/.github/workflows/build-test-publish.yml index e4c6dabd8..c5dde2ac8 100644 --- a/.github/workflows/build-test-publish.yml +++ b/.github/workflows/build-test-publish.yml @@ -44,10 +44,11 @@ jobs: - name: Get specific version of CMake, Ninja uses: lukka/get-cmake@v3.24.2 - - name: Specific XCode version - if: matrix.os == 'macos-14' + - name: Select Xcode + if: startsWith(matrix.os, 'macos') run: | - sudo xcode-select -s "/Applications/Xcode_14.3.1.app" + XCODE_APP=$(ls -d /Applications/Xcode*.app 2>/dev/null | sort -V | tail -1) + sudo xcode-select -s "${XCODE_APP}/Contents/Developer" - name: Download ITK run: |