Background
Dockerfile pins sccache to 0.10.0 as a workaround for an upstream
regression (Dockerfile:88-92):
sccache is pinned to 0.10.0: 0.15+ introduces a GHA-backend probe that
errors inside cargo's rustc-wrapper invocation path with
"SCCACHE_GHA_ENABLED must be 'true', 'on', '1', 'false', 'off' or '0'"
even when the env is unset and we're nowhere near GHA. Hold the pin
until upstream fixes.
The same failure mode is also why rustfmt/clippy/rust-src are installed
at image-build time (Dockerfile:175-181) — to stop a later rustup
channel sync from spawning a scrubbed-env subprocess that trips the same
sccache 0.15+ abort.
Trigger to act
sccache upstream ships a release that no longer aborts when
SCCACHE_GHA_ENABLED is unset/empty outside GHA.
What to do
- Bump
sccache@0.10.0 to the fixed release in the Dockerfile Tier C
cargo binstall block.
- Re-evaluate whether the build-time
rustup component add workaround
(Dockerfile:175-181) is still needed once the env-probe is fixed.
- Verify
just sccache-stats still reports hits and a cold/warm build
works inside the dev container.
References
Dockerfile:88-92 (the pin + rationale)
Dockerfile:175-181 (the related rustup-component workaround)
- ADR-0002 (Docker-only execution)
Background
Dockerfilepinssccacheto0.10.0as a workaround for an upstreamregression (Dockerfile:88-92):
The same failure mode is also why rustfmt/clippy/rust-src are installed
at image-build time (Dockerfile:175-181) — to stop a later
rustupchannel sync from spawning a scrubbed-env subprocess that trips the same
sccache 0.15+ abort.
Trigger to act
sccacheupstream ships a release that no longer aborts whenSCCACHE_GHA_ENABLEDis unset/empty outside GHA.What to do
sccache@0.10.0to the fixed release in theDockerfileTier Ccargo binstallblock.rustup component addworkaround(Dockerfile:175-181) is still needed once the env-probe is fixed.
just sccache-statsstill reports hits and a cold/warm buildworks inside the
devcontainer.References
Dockerfile:88-92(the pin + rationale)Dockerfile:175-181(the related rustup-component workaround)