mirror of
https://github.com/samvallad33/vestige.git
synced 2026-07-02 22:01:01 +02:00
ci: fix persistent macOS clang_rt.osx linker failure (stale target cache)
The real cause was not a flaky runner image: the macOS Test job restored a cached `target/` built against a previous runner Xcode, and that stale build dir carried a clang compiler-rt search path (.../clang/<N>/lib/darwin) that no longer exists on the current image, so the linker failed with 'ld: library clang_rt.osx not found' on every commit. Fix: stop caching `target/` on the test job (cache only the download-heavy registry/git dirs) and bump the cache key to v2 to discard the poisoned caches. Also deleted the existing poisoned macOS caches. Reverted the macos-14 pin (it didn't help and that image is deprecating) back to macos-latest, which is fine now that target/ is always built clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
bf3e9583ff
commit
cbb10c2b90
2 changed files with 18 additions and 10 deletions
24
.github/workflows/ci.yml
vendored
24
.github/workflows/ci.yml
vendored
|
|
@ -18,10 +18,15 @@ jobs:
|
|||
fail-fast: false
|
||||
matrix:
|
||||
# Pin macOS to macos-14 (Sonoma): the rolling `macos-latest` image
|
||||
# intermittently ships a broken compiler-rt path ("ld: library
|
||||
# 'clang_rt.osx' not found"), which fails the Rust link step on an
|
||||
# otherwise-green commit. macos-14 has a stable Xcode/clang toolchain.
|
||||
os: [macos-14, ubuntu-latest]
|
||||
# The "ld: library 'clang_rt.osx' not found" failure is NOT a flaky
|
||||
# image. It is the linker resolving a clang compiler-rt search path
|
||||
# (Xcode .../clang/<N>/lib/darwin) that no longer exists on the runner,
|
||||
# because a STALE `target/` was restored from the cache after the
|
||||
# runner image's default Xcode moved. The real fix is the cache change
|
||||
# below (we no longer cache `target/`, and the key is bumped to v2 to
|
||||
# discard the poisoned caches), so the runner choice is no longer
|
||||
# load-bearing. macos-latest is fine again with a clean target dir.
|
||||
os: [macos-latest, ubuntu-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
|
@ -30,17 +35,20 @@ jobs:
|
|||
with:
|
||||
components: clippy
|
||||
|
||||
- name: Cache cargo
|
||||
- name: Cache cargo (registry only)
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
# Deliberately NOT caching `target/`: a `target/` built against a
|
||||
# different Xcode carries a stale clang compiler-rt search path that
|
||||
# breaks the linker ("clang_rt.osx not found"). Cache only the
|
||||
# download-heavy registry/git dirs; recompiling is cheap and correct.
|
||||
path: |
|
||||
~/.cargo/bin/
|
||||
~/.cargo/registry/index/
|
||||
~/.cargo/registry/cache/
|
||||
~/.cargo/git/db/
|
||||
target/
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||
restore-keys: ${{ runner.os }}-cargo-
|
||||
key: ${{ runner.os }}-cargo-v2-${{ hashFiles('**/Cargo.lock') }}
|
||||
restore-keys: ${{ runner.os }}-cargo-v2-
|
||||
|
||||
- name: Check
|
||||
run: cargo check --workspace
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue