mirror of
https://github.com/dockersrc/rust
synced 2026-06-24 14:01:04 -04:00
📝 rewrite README and fix setup script tool installs 📝
- README rewritten from 137 → 439 lines: full tool tables, env var reference, volume/cache guide, cross-compile target matrix, sccache remote backend docs, BuildKit cache mount info - Update image name from `casjaysdevdocker/rust` to `casjaysdev/rust` throughout - Add `clang-dev`, `llvm-dev`, `openssl-libs-static` to build deps; add `perf` (non-fatal) for flamegraph/samply support - Fix rustup nightly component flag syntax (split into two `--component` flags) - Move `cargo-nextest` to fallback block with `--locked`; rename `typos` → `typos-cli` and `cargo-flamegraph` → `flamegraph` to match correct crate names README.md rootfs/root/docker/setup/05-custom.sh
This commit is contained in:
@@ -188,7 +188,12 @@ Run miri with: `cargo +nightly miri test`
|
|||||||
| `cargo-criterion` | Criterion-based benchmark runner with statistical analysis |
|
| `cargo-criterion` | Criterion-based benchmark runner with statistical analysis |
|
||||||
| `hyperfine` | Command-line benchmarking tool — wall-clock timing with statistics |
|
| `hyperfine` | Command-line benchmarking tool — wall-clock timing with statistics |
|
||||||
| `samply` | Sampling profiler — records perf profiles, opens in Firefox Profiler |
|
| `samply` | Sampling profiler — records perf profiles, opens in Firefox Profiler |
|
||||||
| `cargo-flamegraph` | Generate flame graphs from `cargo bench` or any cargo command |
|
| `flamegraph` | Generate flame graphs from `cargo bench` or any cargo command (`cargo flamegraph`) |
|
||||||
|
|
||||||
|
> **Perf note:** `perf` is installed from the Alpine package repo. Profiling with
|
||||||
|
> `samply` or `flamegraph` inside Docker requires elevated capabilities at runtime:
|
||||||
|
> `--privileged` or `--cap-add SYS_ADMIN --cap-add PERFMON`. This is a host grant
|
||||||
|
> — it cannot be baked into the image.
|
||||||
|
|
||||||
### Fuzzing
|
### Fuzzing
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ exitCode=0
|
|||||||
# Main script
|
# Main script
|
||||||
|
|
||||||
# Install C/C++ toolchain and static-build dependencies needed by Rust -sys crates
|
# Install C/C++ toolchain and static-build dependencies needed by Rust -sys crates
|
||||||
pkmgr install build-base musl-dev clang lld cmake make perl openssl-dev pkgconf gdb
|
pkmgr install build-base musl-dev clang clang-dev llvm-dev lld cmake make perl openssl-dev openssl-libs-static pkgconf gdb
|
||||||
|
|
||||||
# Install cross-compile toolchains — failures are non-fatal on minimal mirrors
|
# Install cross-compile toolchains — failures are non-fatal on minimal mirrors
|
||||||
pkmgr install mingw-w64-gcc || true
|
pkmgr install mingw-w64-gcc || true
|
||||||
@@ -43,6 +43,10 @@ pkmgr install zig || true
|
|||||||
# Install binaryen (wasm-opt) for WASM size optimisation tooling
|
# Install binaryen (wasm-opt) for WASM size optimisation tooling
|
||||||
pkmgr install binaryen || true
|
pkmgr install binaryen || true
|
||||||
|
|
||||||
|
# Install Linux perf — required by flamegraph and samply to record profiles;
|
||||||
|
# non-fatal because availability depends on the host kernel and Alpine mirror
|
||||||
|
pkmgr install perf || true
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# rustup paths — match the official rust:alpine convention so existing
|
# rustup paths — match the official rust:alpine convention so existing
|
||||||
# workflows work unchanged; volumes are declared at these paths in the Dockerfile
|
# workflows work unchanged; volumes are declared at these paths in the Dockerfile
|
||||||
@@ -82,7 +86,7 @@ rustup component add rust-src rust-analyzer llvm-tools-preview
|
|||||||
|
|
||||||
# Nightly toolchain for miri and other unstable tooling; minimal profile
|
# Nightly toolchain for miri and other unstable tooling; minimal profile
|
||||||
# keeps the download small — only the compiler and std/src are pulled in
|
# keeps the download small — only the compiler and std/src are pulled in
|
||||||
rustup toolchain install nightly --profile minimal --component miri rust-src
|
rustup toolchain install nightly --profile minimal --component miri --component rust-src
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Cross-compile targets — Linux musl (fully static, no libc dependency)
|
# Cross-compile targets — Linux musl (fully static, no libc dependency)
|
||||||
@@ -161,7 +165,6 @@ cargo binstall -y \
|
|||||||
cargo-expand \
|
cargo-expand \
|
||||||
cargo-info \
|
cargo-info \
|
||||||
bacon \
|
bacon \
|
||||||
cargo-nextest \
|
|
||||||
cargo-llvm-cov \
|
cargo-llvm-cov \
|
||||||
cargo-tarpaulin \
|
cargo-tarpaulin \
|
||||||
cargo-audit \
|
cargo-audit \
|
||||||
@@ -187,7 +190,7 @@ cargo binstall -y \
|
|||||||
mdbook \
|
mdbook \
|
||||||
mdbook-toc \
|
mdbook-toc \
|
||||||
sccache \
|
sccache \
|
||||||
typos \
|
typos-cli \
|
||||||
taplo-cli \
|
taplo-cli \
|
||||||
cargo-sort \
|
cargo-sort \
|
||||||
cargo-hack \
|
cargo-hack \
|
||||||
@@ -200,7 +203,9 @@ cargo binstall -y \
|
|||||||
grcov
|
grcov
|
||||||
|
|
||||||
# Tools that occasionally lack musl prebuilts — fall back to source compilation
|
# Tools that occasionally lack musl prebuilts — fall back to source compilation
|
||||||
cargo binstall -y cargo-dist 2>/dev/null || cargo install cargo-dist
|
# cargo-nextest requires --locked when building from source (locked-tripwire guard)
|
||||||
|
cargo binstall -y cargo-nextest 2>/dev/null || cargo install --locked cargo-nextest || true
|
||||||
|
cargo binstall -y cargo-dist 2>/dev/null || cargo install cargo-dist || true
|
||||||
cargo binstall -y cargo-msrv 2>/dev/null || cargo install cargo-msrv
|
cargo binstall -y cargo-msrv 2>/dev/null || cargo install cargo-msrv
|
||||||
cargo binstall -y cargo-mutants 2>/dev/null || cargo install cargo-mutants
|
cargo binstall -y cargo-mutants 2>/dev/null || cargo install cargo-mutants
|
||||||
cargo binstall -y flip-link 2>/dev/null || cargo install flip-link
|
cargo binstall -y flip-link 2>/dev/null || cargo install flip-link
|
||||||
@@ -218,7 +223,7 @@ cargo install probe-rs --features cli 2>/dev/null || true
|
|||||||
|
|
||||||
# samply and cargo-flamegraph require a system perf or dtrace — best-effort
|
# samply and cargo-flamegraph require a system perf or dtrace — best-effort
|
||||||
cargo binstall -y samply 2>/dev/null || true
|
cargo binstall -y samply 2>/dev/null || true
|
||||||
cargo binstall -y cargo-flamegraph 2>/dev/null || true
|
cargo binstall -y flamegraph 2>/dev/null || cargo install flamegraph || true
|
||||||
|
|
||||||
# sqlx-cli and sea-orm-cli need project-specific feature flags at runtime;
|
# sqlx-cli and sea-orm-cli need project-specific feature flags at runtime;
|
||||||
# install a broadly compatible build here as a convenience
|
# install a broadly compatible build here as a convenience
|
||||||
|
|||||||
Reference in New Issue
Block a user