CI jobs rely on native toolchains the runner image happens to carry
- Dominant language
- Rust
- Stars
- 407
- Forks
- 12
- Avg merge
- 5h 45m
- Merged PRs (30d)
- 30
Description
Every job runs on `ubuntu-latest` and none of them asks for the compilers they need.
`tikv-jemalloc-sys` builds C, so `cargo test`, `cargo doc`, `cargo llvm-cov` and the CD build all need a C compiler. Nothing installs one; `ubuntu-latest` ships it. That has been true since before the workspace change and is not visible anywhere in the workflow files.
#426 added the same shape in C++ — `libfuzzer-sys` compiles a vendored libFuzzer, and `cargo clippy --all-targets` reaches it — and defused that one with an explicit `apt-get install -y g++` on the Clippy job, since the requirement was new and #426's to own. The rest is older and broader.
Two ways to settle it:
- ask for what each job needs, the way the Clippy job now does
- decide that the image is the contract, say so once in the workflow, and drop the Clippy job's install for consistency
Either is fine. What is not is one job asking and the others not, which is where #426 leaves it.
Worth checking the CD matrix separately: it cross-compiles five targets through `houseabsolute/actions-rust-cross`, so what a C dependency needs there is not the same question.
Contributor guide
Assessment
This issue has not been assessed yet.