Fix cargo run tidy
When I implemented rust-only bootstrapping in https://github.com/rust-lang/rust/pull/92260, I neglected to test stage0 tools - it turns out they were broken because they couldn't find the sysroot of the initial bootstrap compiler. This fixes stage0 tools by using `rustc --print sysroot` instead of assuming rustc is already in a sysroot and hard-coding the relative directory.
This commit is contained in:
@@ -117,6 +117,7 @@ use std::os::unix::fs::symlink as symlink_file;
|
|||||||
use std::os::windows::fs::symlink_file;
|
use std::os::windows::fs::symlink_file;
|
||||||
|
|
||||||
use filetime::FileTime;
|
use filetime::FileTime;
|
||||||
|
use once_cell::sync::OnceCell;
|
||||||
|
|
||||||
use crate::builder::Kind;
|
use crate::builder::Kind;
|
||||||
use crate::config::{LlvmLibunwind, TargetSelection};
|
use crate::config::{LlvmLibunwind, TargetSelection};
|
||||||
@@ -892,7 +893,12 @@ impl Build {
|
|||||||
|
|
||||||
/// Returns the sysroot of the snapshot compiler.
|
/// Returns the sysroot of the snapshot compiler.
|
||||||
fn rustc_snapshot_sysroot(&self) -> &Path {
|
fn rustc_snapshot_sysroot(&self) -> &Path {
|
||||||
self.initial_rustc.parent().unwrap().parent().unwrap()
|
static SYSROOT_CACHE: OnceCell<PathBuf> = once_cell::sync::OnceCell::new();
|
||||||
|
SYSROOT_CACHE.get_or_init(|| {
|
||||||
|
let mut rustc = Command::new(&self.initial_rustc);
|
||||||
|
rustc.args(&["--print", "sysroot"]);
|
||||||
|
output(&mut rustc).trim().into()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Runs a command, printing out nice contextual information if it fails.
|
/// Runs a command, printing out nice contextual information if it fails.
|
||||||
|
|||||||
Reference in New Issue
Block a user