From 1ad4324acf3b9d945524f395df7d5b776c5e42ff Mon Sep 17 00:00:00 2001 From: Harry Beckwith Date: Sun, 26 Jul 2026 17:27:10 -0700 Subject: [PATCH] release: build macOS with the newest Xcode; stop publishing Intel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Homebrew LLVM attempt got past the CTAD check but died in the compile: brew's libc++ 22 collides with Apple's SDK headers (_malloc_type.h vs its own size_t). The log revealed the better answer — the image already carries Xcode 16.4, whose AppleClang is new enough. So: select the newest Xcode present and use Apple's own toolchain. Intel macOS is dropped. macos-13 tops out at an AppleClang that cannot compile this codebase, and GitHub is retiring Intel runners anyway. Intel Mac users fall back to compiling from source, which is the path the console and installer already take when no artifact matches — the graceful decline verified earlier. Co-Authored-By: Claude Opus 5 --- .github/workflows/release.yml | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 91986c58386b..396acc811c5a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,27 +34,28 @@ jobs: - os: macos-15 label: macOS (Apple silicon) slug: macos-arm64 - - os: macos-13 - label: macOS (Intel) - slug: macos-x86_64 - os: ubuntu-latest label: Linux (x86_64) slug: linux-x86_64 steps: - uses: actions/checkout@v4 - # The Xcode a runner happens to ship is too old for this codebase — - # AppleClang 15 lacks CTAD for aggregates, which src/util/overloaded.h - # requires. Homebrew's LLVM is current on every image, so build with that - # rather than depending on the runner's Xcode vintage. - - name: Dependencies (macOS) + # The default Xcode is too old — AppleClang 15 lacks CTAD for aggregates, + # which src/util/overloaded.h requires. Homebrew's LLVM is new enough but + # its libc++ collides with Apple's SDK headers, so use the newest Xcode + # the image carries and Apple's own toolchain. + - name: Use the newest Xcode on this image if: runner.os == 'macOS' run: | - brew install cmake ninja boost capnp llvm - PREFIX=$(brew --prefix llvm) - echo "CC=$PREFIX/bin/clang" >> "$GITHUB_ENV" - echo "CXX=$PREFIX/bin/clang++" >> "$GITHUB_ENV" - "$PREFIX/bin/clang++" --version | head -1 + latest=$(ls -d /Applications/Xcode_*.app 2>/dev/null | sort -V | tail -1) + [ -n "$latest" ] || latest=/Applications/Xcode.app + echo "selecting $latest" + sudo xcode-select -s "$latest" + c++ --version | head -1 + + - name: Dependencies (macOS) + if: runner.os == 'macOS' + run: brew install cmake ninja boost capnp - name: Dependencies (Linux) if: runner.os == 'Linux'