From a18469c038c0cb45eea2f1bed788673d6b014c45 Mon Sep 17 00:00:00 2001 From: Khalil Estell Date: Wed, 14 Oct 2026 18:16:07 -0700 Subject: [PATCH] :construction_worker: Run LLVM 20 Mac builds on macOS 15 LLVM 20's ASan runtime deadlocks before main() on macOS 26+. Since #127 moved the Mac LLVM job to macos-26, repos built with the default hal/tc/llvm (LLVM 20) hang there, e.g. libhal-util v5's unit tests, which old-generation libhal-cmake-util builds with ASan unconditionally. Pick the runner from llvm_profile: hal/tc/llvm and hal/tc/llvm-20 run on macos-15, newer profiles on macos-26. The macOS 14/15 libc++ conflict that motivated #127 was fixed in llvm-toolchain#57. Add a self-check that packages libhal v5 with hal/tc/llvm-23, so the macos-26 path is covered too. --- .github/workflows/package_and_upload_all.yml | 6 +++--- .github/workflows/self_check.yml | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/package_and_upload_all.yml b/.github/workflows/package_and_upload_all.yml index 1d28332..754d9be 100644 --- a/.github/workflows/package_and_upload_all.yml +++ b/.github/workflows/package_and_upload_all.yml @@ -110,9 +110,9 @@ jobs: with: name: 🐉 LLVM 🍎 Mac ARM64 # Target specific - # macOS 26: on 14/15 the LLVM 22+ toolchain bundles its own libc++, - # which conflicts with the ASan runtime's system libc++. - runner_os: macos-26 + # LLVM 20's ASan runtime deadlocks before main() on macOS 26+, so LLVM 20 + # (hal/tc/llvm is LLVM 20) runs on macOS 15. Newer LLVM runs on macOS 26. + runner_os: ${{ contains(fromJSON('["hal/tc/llvm", "hal/tc/llvm-20"]'), inputs.llvm_profile) && 'macos-15' || 'macos-26' }} arch: armv8 os: Macos compiler_profile: ${{ inputs.llvm_profile }} diff --git a/.github/workflows/self_check.yml b/.github/workflows/self_check.yml index 174eedc..e42fb01 100644 --- a/.github/workflows/self_check.yml +++ b/.github/workflows/self_check.yml @@ -184,6 +184,21 @@ jobs: ci_ref: ${{ github.head_ref || github.ref_name }} secrets: inherit + # LLVM 23: the Mac job runs on macOS 26 (LLVM 20 runs on macOS 15). + package-libhal_v5: + needs: changes + if: ${{ needs.changes.outputs.package_and_upload_all == 'true' }} + uses: ./.github/workflows/package_and_upload_all.yml + with: + library: libhal + repo: libhal/libhal + dir: v5 + modules_support_needed: true + llvm_profile: hal/tc/llvm-23 + conan_version: 2.33.0 + ci_ref: ${{ github.head_ref || github.ref_name }} + secrets: inherit + package-libhal-util: needs: changes if: ${{ needs.changes.outputs.package_and_upload_all == 'true' }}