diff options
| author | bors <bors@rust-lang.org> | 2022-09-25 16:52:49 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-09-25 16:52:49 +0000 |
| commit | f3fafbb006ee98635874f73e480655912b465e65 (patch) | |
| tree | 1831e12b785e622c5b3702675cc8060b4099a17a /src/bootstrap | |
| parent | 17e8752acafe7240f38bcb114586ff0568224cad (diff) | |
| parent | 439597bc1b3cbf6c8ceec7c81ae0143baee2c329 (diff) | |
| download | rust-f3fafbb006ee98635874f73e480655912b465e65.tar.gz rust-f3fafbb006ee98635874f73e480655912b465e65.zip | |
Auto merge of #102266 - Mark-Simulacrum:fix-custom-rustc, r=jyn514
Support overriding initial rustc and cargo paths This restores functionality broken by #98483. Unfortunately, it doesn't add a test to verify this works, but in this case we notice pretty quickly as perf uses this functionality and so reports breakage immediately after merging. r? `@jyn514` cc https://rust-lang.zulipchat.com/#narrow/stream/326414-t-infra.2Fbootstrap/topic/rustc.20and.20cargo.20option.20broken.20in.20config.2Etoml, https://rust-lang.zulipchat.com/#narrow/stream/247081-t-compiler.2Fperformance/topic/Rustc.20benchmark.20broken
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/config.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index a6333976f2a..74530dec97b 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -901,9 +901,7 @@ impl Config { config.config = toml_path; let build = toml.build.unwrap_or_default(); - let has_custom_rustc = build.rustc.is_some(); - set(&mut config.initial_rustc, build.rustc.map(PathBuf::from)); set(&mut config.out, flags.build_dir.or_else(|| build.build_dir.map(PathBuf::from))); // NOTE: Bootstrap spawns various commands with different working directories. // To avoid writing to random places on the file system, `config.out` needs to be an absolute path. @@ -912,10 +910,14 @@ impl Config { config.out = crate::util::absolute(&config.out); } - if !has_custom_rustc && !config.initial_rustc.starts_with(&config.out) { - config.initial_rustc = config.out.join(config.build.triple).join("stage0/bin/rustc"); - config.initial_cargo = config.out.join(config.build.triple).join("stage0/bin/cargo"); - } + config.initial_rustc = build + .rustc + .map(PathBuf::from) + .unwrap_or_else(|| config.out.join(config.build.triple).join("stage0/bin/rustc")); + config.initial_cargo = build + .cargo + .map(PathBuf::from) + .unwrap_or_else(|| config.out.join(config.build.triple).join("stage0/bin/cargo")); // NOTE: it's important this comes *after* we set `initial_rustc` just above. if config.dry_run { |
