ci: fix miri/fuzzing EXDEV by pinning RUSTUP_HOME/CARGO_HOME to /tmp#132
Conversation
The miri-subset job (security-medium) and the miri-full + fuzzing jobs
(security-deep) all install a nightly toolchain via bare
`rustup toolchain install nightly`. On the self-hosted `cachekit` ARC
runner the default `~/.rustup/{tmp,toolchains}` paths straddle the pod's
overlay and hostPath layers, so rustup's atomic rename during install
fails with `Invalid cross-device link (os error 18)` — rust-lang/rustup#1239.
security-medium has been red on main for 12 days as a result; the same
latent bug breaks the nightly security-deep run.
Fix: scope `RUSTUP_HOME=/tmp/rustup` and `CARGO_HOME=/tmp/cargo` to just
the three affected jobs. This is the same workaround already used by
fuzz-smoke.yml. The pre-shipped stable toolchain jobs (cargo-geiger,
kani-verification) are intentionally left untouched so they keep using
the runner image's cached toolchain.
|
Caution Review failedPull request was closed or merged during review No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThis PR adds per-job environment variable overrides in three Rust-based GitHub Actions workflow jobs to prevent rustup EXDEV (cross-device link) errors. Both security-deep.yml and security-medium.yml workflows now set RUSTUP_HOME and CARGO_HOME to ChangesRustup EXDEV Fix Across Workflows
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Actionable comments posted: 0 |
Summary
mainfor 12 days (since 2026-05-16, e.g. run 26572369632)rustup toolchain install nightly --component mirifails on the self-hostedcachekitARC runner withInvalid cross-device link (os error 18)because~/.rustup/tmpand~/.rustup/toolchains/...land on different filesystem layers in the ephemeral pod (Invalid cross-device link (os error 18) when upgrading on a docker OverlayFS rust-lang/rustup#1239)Fix
Pin
RUSTUP_HOME=/tmp/rustupandCARGO_HOME=/tmp/cargofor only the three affected jobs. This is the same workaround already used byfuzz-smoke.yml(lines 17-20) and acknowledged in a comment atsecurity-deep.yml:27-28.Scoping the env at job level (not workflow level) keeps
cargo-geigerandkani-verificationusing the pre-shipped stable toolchain in the runner image — no wasted re-downloads.Test plan
refs rust-lang/rustup#1239Summary by CodeRabbit