diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-16 09:28:39 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-16 09:28:39 +0000 |
| commit | 7ee2b877cf396e680582b4a2d6094d4f3ad89abb (patch) | |
| tree | 28c322e69b49948f5b0d68735b9fb283f03aba73 | |
| parent | b6f0bf2df0f6baadc345a9d146599197a5b46e9f (diff) | |
fix(ci): upgrade macOS LLVM to avoid corrupted driver archives
Update Homebrew metadata and upgrade LLVM 23 before building static LLD.
Check the AMDGPU driver symbol early to reject incomplete archives.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
| -rw-r--r-- | .github/workflows/nightly-build.yml | 11 | ||||
| -rw-r--r-- | AGENTS/ARCH.md | 3 | ||||
| -rw-r--r-- | doc/build.md | 4 |
3 files changed, 17 insertions, 1 deletions
diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index 62b8d49..5a3ec67 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -123,8 +123,17 @@ jobs: - name: Install LLVM 23 and packaging dependencies run: | test "$(uname -m)" = arm64 + brew update brew install llvm@23 pandoc zlib zstd ncurses python - test -x "$(brew --prefix llvm@23)/bin/clang++" + brew upgrade llvm@23 + llvm_prefix=$(brew --prefix llvm@23) + test -x "$llvm_prefix/bin/clang++" + "$llvm_prefix/bin/llvm-nm" --defined-only --demangle \ + "$llvm_prefix/lib/libclangDriver.a" > "$RUNNER_TEMP/clang-driver-symbols.txt" + if ! grep -F 'clang::driver::tools::AMDGPU::setArchNameInTriple(' "$RUNNER_TEMP/clang-driver-symbols.txt"; then + echo 'LLVM static archive is incomplete; install a Homebrew bottle with the duplicate-member fix.' >&2 + exit 1 + fi - name: Build matching static LLD libraries run: | diff --git a/AGENTS/ARCH.md b/AGENTS/ARCH.md index a73e086..216187f 100644 --- a/AGENTS/ARCH.md +++ b/AGENTS/ARCH.md @@ -156,6 +156,9 @@ The helper's build-time linker can use the installed LLVM dylib; cpsc still link the LLD archives and static LLVM components. Both macOS configurations explicitly select the SDK with `CMAKE_OSX_SYSROOT` before compiler detection, so imported SDK include paths do not precede libc++. +The macOS job updates Homebrew and upgrades LLVM 23 before building LLD. It checks +that clangDriver defines `AMDGPU::setArchNameInTriple` to reject older bottles +corrupted by Homebrew's duplicate-member LTO conversion (homebrew-core #301252). Windows build instructions retain MSYS2 MINGW64. Its LLVM/Clang package names and compiler executable names are unversioned; CMake still requires major 23. diff --git a/doc/build.md b/doc/build.md index dce9d7c..5aaff51 100644 --- a/doc/build.md +++ b/doc/build.md @@ -138,9 +138,13 @@ relocation tools with `xcode-select --install` if needed. The LLVM bottle below provides Clang 23. Install the build tools and LLVM SDK with Homebrew: ```bash +brew update brew install cmake python llvm@23 +brew upgrade llvm@23 ``` +Use an updated Homebrew LLVM 23 bottle. The original 23.1.0 bottle could lose one of the two `AMDGPU.cpp.o` members in `libclangDriver.a` during LTO conversion, causing an undefined `AMDGPU::setArchNameInTriple` at link time. Homebrew [fixed the archive conversion](https://github.com/Homebrew/homebrew-core/commit/7dd3210dd39afab6bad379cff8348a7c048119d1); updating formula metadata and upgrading LLVM avoids reusing the broken runner installation. Refresh any downloaded LLVM bottle too. + Recommended binary-bottle downloads to the build directory: ```bash |
