mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-04 20:54:13 +00:00
e287044149
Currently, it's very challenging to perform a sandboxed `opt-dist` bootstrap because the tool requires `rustc-perf` to be present, but there is no proper management/tracking of it. Instead, a specific commit is hardcoded where it is needed, and a non-checksummed zip is fetched ad-hoc. This happens in two places: `src/ci/docker/host-x86_64/dist-x86_64-linux/Dockerfile`: ```dockerfile ENV PERF_COMMIT 4f313add609f43e928e98132358e8426ed3969ae RUN curl -LS -o perf.zip https://ci-mirrors.rust-lang.org/rustc/rustc-perf-$PERF_COMMIT.zip && \ unzip perf.zip && \ mv rustc-perf-$PERF_COMMIT rustc-perf && \ rm perf.zip ``` `src/tools/opt-dist/src/main.rs` ```rust // FIXME: add some mechanism for synchronization of this commit SHA with // Linux (which builds rustc-perf in a Dockerfile) // rustc-perf version from 2023-10-22 const PERF_COMMIT: &str = "4f313add609f43e928e98132358e8426ed3969ae"; let url = format!("https://ci-mirrors.rust-lang.org/rustc/rustc-perf-{PERF_COMMIT}.zip"); let client = reqwest::blocking::Client::builder() .timeout(Duration::from_secs(60 * 2)) .connect_timeout(Duration::from_secs(60 * 2)) .build()?; let response = retry_action( || Ok(client.get(&url).send()?.error_for_status()?.bytes()?.to_vec()), "Download rustc-perf archive", 5, )?; ``` This causes a few issues: 1. Maintainers need to be careful to bump PERF_COMMIT in both places every time 2. In order to run `opt-dist` in a sandbox, you need to provide your own `rustc-perf` (https://github.com/rust-lang/rust/pull/125125), but to figure out which commit to provide you need to grep the Dockerfile 3. Even if you manage to provide the correct `rustc-perf`, its dependencies are not included in the `vendor/` dir created during `dist`, so it will fail to build from the published source tarballs 4. It is hard to provide any level of automation around updating the `rustc-perf` in use, leading to staleness Fundamentally, this means `rustc-src` tarballs no longer contain everything you need to bootstrap Rust, and packagers hoping to leverage `opt-dist` need to go out of their way to keep track of this "hidden" dependency on `rustc-perf`. This change adds rustc-perf as a git submodule, pinned to the current `PERF_COMMIT` 4f313add609f43e928e98132358e8426ed3969ae. Subsequent commits ensure the submodule is initialized when necessary, and make use of it in `opt-dist`.
50 lines
1.5 KiB
TOML
50 lines
1.5 KiB
TOML
# Run rustfmt with this config (it should be picked up automatically).
|
|
version = "Two"
|
|
use_small_heuristics = "Max"
|
|
merge_derives = false
|
|
|
|
# by default we ignore everything in the repository
|
|
# tidy only checks files which are not ignored, each entry follows gitignore style
|
|
ignore = [
|
|
"/build/",
|
|
"/*-build/",
|
|
"/build-*/",
|
|
"/vendor/",
|
|
|
|
# tests for now are not formatted, as they are sometimes pretty-printing constrained
|
|
# (and generally rustfmt can move around comments in UI-testing incompatible ways)
|
|
"/tests/*",
|
|
|
|
# but we still want to format rmake.rs files in tests/run-make/ so we need to do this
|
|
# dance to avoid the parent directory from being excluded
|
|
"!/tests/run-make/",
|
|
"/tests/run-make/*/*.rs",
|
|
"!/tests/run-make/*/rmake.rs",
|
|
|
|
# do not format submodules
|
|
# FIXME: sync submodule list with tidy/bootstrap/etc
|
|
# tidy/src/walk.rs:filter_dirs
|
|
"library/backtrace",
|
|
"library/portable-simd",
|
|
"library/stdarch",
|
|
"compiler/rustc_codegen_gcc",
|
|
"src/doc/book",
|
|
"src/doc/edition-guide",
|
|
"src/doc/embedded-book",
|
|
"src/doc/nomicon",
|
|
"src/doc/reference",
|
|
"src/doc/rust-by-example",
|
|
"src/doc/rustc-dev-guide",
|
|
"src/llvm-project",
|
|
"src/tools/cargo",
|
|
"src/tools/clippy",
|
|
"src/tools/miri",
|
|
"src/tools/rust-analyzer",
|
|
"src/tools/rustc-perf",
|
|
"src/tools/rustfmt",
|
|
|
|
# these are ignored by a standard cargo fmt run
|
|
"compiler/rustc_codegen_cranelift/scripts",
|
|
"compiler/rustc_codegen_cranelift/example/gen_block_iterate.rs", # uses edition 2024
|
|
]
|