From 6535bbb68cd6abefa8629b996915b1657ec84518 Mon Sep 17 00:00:00 2001 From: Artem Pelenitsyn Date: Fri, 16 Oct 2026 11:43:30 -0400 Subject: [PATCH] CI: run macOS jobs on macos-15 until actions/runner-images#14940 is fixed The macos-26-arm64 image that macos-latest maps to (20261013.0424.1, rolled out on 2026-10-15) ships the Command Line Tools 27.0 with the macOS 27 SDK but keeps Xcode 26.6 as the default toolchain. GHC's link line passes -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib, so Xcode 26.6's ld reads the SDK 27 library stubs, whose new arm64e.x1 architecture it cannot parse, and every link fails with "tapi error: malformed file". That takes down every macOS Validate job, the macOS Bootstrap job and the aarch64 release build, on every GHC (#12465). macos-15 has a consistent toolchain (Command Line Tools and Xcode 16.4). Each pin carries a comment, so they can go back to macos-latest once the image is fixed. Also stop the Bootstrap matrix from failing fast: the macOS failure was cancelling the four Linux jobs, so their results were lost too. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01MWUpUBVSHTCWHGYNCwsjFL --- .github/workflows/bootstrap.yml | 6 +++++- .github/workflows/reusable-release.yml | 8 ++++++-- .github/workflows/validate.yml | 8 ++++++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml index 1b1a1922c9b..0445ac75a89 100644 --- a/.github/workflows/bootstrap.yml +++ b/.github/workflows/bootstrap.yml @@ -17,11 +17,15 @@ on: jobs: bootstrap: strategy: + # A failure on one OS should not cancel, and so hide, the results on the others. + fail-fast: false matrix: os: [ubuntu-latest] ghc: ["9.6.7", "9.8.4", "9.10.3", "9.12.4"] include: - - os: macos-latest + # macos-15 rather than macos-latest until actions/runner-images#14940 + # is fixed; see #12465. + - os: macos-15 ghc: "9.12.4" name: Bootstrap ${{ matrix.os }} ghc-${{ matrix.ghc }} runs-on: ${{ matrix.os }} diff --git a/.github/workflows/reusable-release.yml b/.github/workflows/reusable-release.yml index 3bf83764c30..f4c0a9b4d61 100644 --- a/.github/workflows/reusable-release.yml +++ b/.github/workflows/reusable-release.yml @@ -231,7 +231,9 @@ jobs: build-mac-aarch64: name: Build binary (Mac aarch64) - runs-on: macos-latest + # macos-15 rather than macos-latest until actions/runner-images#14940 + # is fixed; see #12465. + runs-on: macos-15 env: MACOSX_DEPLOYMENT_TARGET: 10.13 ADD_CABAL_ARGS: "" @@ -534,7 +536,9 @@ jobs: test-mac-aarch64: name: Test binary (Mac aarch64) - runs-on: macos-latest + # macos-15 rather than macos-latest until actions/runner-images#14940 + # is fixed; see #12465. + runs-on: macos-15 needs: ["build-mac-aarch64"] if: ${{ inputs.test }} env: diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index baf5210f87f..63099027df2 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -54,7 +54,9 @@ jobs: sys: - { os: windows-latest, shell: "C:/msys64/usr/bin/bash.exe -e {0}" } - { os: ubuntu-latest, shell: bash } - - { os: macos-latest, shell: bash } + # macos-15 rather than macos-latest until actions/runner-images#14940 + # is fixed; see #12465. + - { os: macos-15, shell: bash } ghc: [ # IMPORTANT: If you remove a version from this list, then add it to the old-ghcs job below. @@ -393,7 +395,9 @@ jobs: sys: - { os: windows-latest, shell: "C:/msys64/usr/bin/bash.exe -e {0}" } - { os: ubuntu-latest, shell: bash } - - { os: macos-latest, shell: bash } + # macos-15 rather than macos-latest until actions/runner-images#14940 + # is fixed; see #12465. + - { os: macos-15, shell: bash } # We only use one ghc version the used one for the next release (defined at top of the workflow) # We need to build an array dynamically to inject the appropriate env var in a previous job, # see https://docs.github.com/en/actions/learn-github-actions/expressions#fromjson