diff options
| author | Joshua Nelson <jnelson@cloudflare.com> | 2022-03-03 06:12:32 -0600 |
|---|---|---|
| committer | Mark Rousskov <mark.simulacrum@gmail.com> | 2022-03-07 17:06:31 -0500 |
| commit | 477cae3bd7d71c347b3031809a153cfbeecd1c23 (patch) | |
| tree | 74b90001923342cbd2340fa81c17a42b1fb7934e /src/bootstrap/lib.rs | |
| parent | 984527f7bb49bd6e2d34e65d7629d2e0cdc464f6 (diff) | |
| download | rust-477cae3bd7d71c347b3031809a153cfbeecd1c23.tar.gz rust-477cae3bd7d71c347b3031809a153cfbeecd1c23.zip | |
copy over `std::path::absolute` instead of adding `canonicalize` hacks
this also fixes a bug where bootstrap would try to use the fake `rustc` binary built by bootstrap - cargo puts it in a different directory when using `cargo run` instead of x.py
Diffstat (limited to 'src/bootstrap/lib.rs')
| -rw-r--r-- | src/bootstrap/lib.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index c2780a232ed..2ae63858ff6 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -261,6 +261,7 @@ pub struct Build { // Properties derived from the above configuration src: PathBuf, out: PathBuf, + bootstrap_out: PathBuf, rust_info: channel::GitInfo, cargo_info: channel::GitInfo, rls_info: channel::GitInfo, @@ -435,6 +436,20 @@ impl Build { .expect("failed to read src/version"); let version = version.trim(); + let bootstrap_out = if std::env::var("BOOTSTRAP_PYTHON").is_ok() { + out.join("bootstrap").join("debug") + } else { + let workspace_target_dir = std::env::var("CARGO_TARGET_DIR") + .map(PathBuf::from) + .unwrap_or_else(|_| src.join("target")); + let bootstrap_out = workspace_target_dir.join("debug"); + if !bootstrap_out.join("rustc").exists() { + // this restriction can be lifted whenever https://github.com/rust-lang/rfcs/pull/3028 is implemented + panic!("run `cargo build --bins` before `cargo run`") + } + bootstrap_out + }; + let mut build = Build { initial_rustc: config.initial_rustc.clone(), initial_cargo: config.initial_cargo.clone(), @@ -453,6 +468,7 @@ impl Build { version: version.to_string(), src, out, + bootstrap_out, rust_info, cargo_info, |
