Skip to content

meta: stop caching Rust toolchains in wild CI (setup-soldr seal-at-install + no-scan off mode, soldr target self-heal) #19

Description

@zackees

Goal

Stop caching Rust toolchains in wild's CI, and do it without the scan cost setup-soldr pays today.

  • soldr remembers the toolchain it installed (its prepare memo) and heals it when it disappears.
  • setup-soldr gains a toolchain-cache-off mode with no scans. Where the cache is used, it's saved once, right after install.
  • wild adopts the new @v0 with toolchain caching off.

Validation gate: this meta-issue is done only when

wild (zackees/wild) no longer has any Rust toolchain cached, verified on a main push and a PR run with the new zackees/setup-soldr@v0:

  • gh cache list -R zackees/wild --key solo-toolchain is empty;
  • no setup-soldr job reports snapshot_* or solo_restore in setup phase totals;
  • each container job's toolchain phase is ≤ 12s;
  • CI is green, including every cross target and wasm.

The full gate (G1–G5) is in #18.

Why

Measured in this repo (details and run IDs are in each sub-issue):

  • 2.1 GB of cache: 14 solo-toolchain-* entries hold identical rustc bytes duplicated per soldr version and branch, putting the repo cache at 10.2 GB, over the 10 GB limit.
  • 25–30s of scanning per container job. setup-soldr walks the image's 135k-file /usr/local/rustup up to three times, even on cache hits.
  • Corruption: the toolchain cache is saved from a file list fixed during setup but read at job end, which caused the PPC64LE E0463 in ci: adopt soldr locally and setup-soldr in CI workflows #16.

Sub-issues, in order

  1. fix(solo-toolchain-cache): seal the toolchain at install time with no scans and a soldr-version-free key setup-soldr#525: seal the toolchain at install time with no scans. Includes the addendum: with the cache off, no scans and nothing written (T8/E7), then cut a release and move v0.
  2. solo-toolchain-cache saves a pre-build file list with post-build contents: a target installed mid-build poisons the shared tnone key (E0463) setup-soldr#507: the existing corruption bug (post-build contents saved under a pre-build file list). Closed by Write unreferenced internal symbols for non-empty sections wild-linker/wild#525.
  3. fix(toolchain): self-heal missing target std libraries; readiness and memo must check rust-std files, not only rustup metadata soldr#3376: self-heal target libraries that are claimed but missing. Readiness, the memo and the ensure smoke check verify the rust-std files, not only rustup's metadata.
  4. ci: adopt new setup-soldr v0 with toolchain caching off; gate on zero cached toolchains #18: wild adopts the new v0 with solo-toolchain-cache: false everywhere, purges the old entries, and runs the validation gate.

Steps 1 and 3 are independent and can run in parallel. Step 4 needs step 1 to be released.

Decisions

  • wild pays the rustup install (about 7–9s per job) instead of caching toolchains, removing the cache space, the scans and the poisoning bug.
  • setup-soldr keeps a correct, opt-in toolchain cache for other consumers. wild turns it off explicitly, so the gate doesn't depend on setup-soldr's default.
  • wild stays on the floating @v0, so the fix lands through the setup-soldr release.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions