about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoshua Nelson <jnelson@cloudflare.com>2022-02-06 19:54:35 -0600
committerJoshua Nelson <jnelson@cloudflare.com>2022-02-06 19:54:35 -0600
commitb5b21507c1a9ce2aa94a5cce6789d2b3281e62b8 (patch)
treeb82b5b2818703ac5f665f6e9a01c539ef183af8b
parent7b43cfc9b25ac4a906bd56d32d3111085dd9e6a1 (diff)
downloadrust-b5b21507c1a9ce2aa94a5cce6789d2b3281e62b8.tar.gz
rust-b5b21507c1a9ce2aa94a5cce6789d2b3281e62b8.zip
Rerun bootstrap's build script when RUSTC changes
Previously, rustbuild would give strange errors if you tried to reuse the same build directory under two names:

```
$ mkdir tmp && cd tmp
$ ../x.py check
Building rustbuild
    Finished dev [unoptimized] target(s) in 35.27s
Checking stage0 std artifacts (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
^C
$ cd ..
$ mv tmp/build build
$ ./x.py check
Building rustbuild
   Compiling bootstrap v0.0.0 (/home/jnelson/rust-lang/rust/src/bootstrap)
    Finished dev [unoptimized] target(s) in 11.18s

failed to execute command: "/home/jnelson/rust-lang/rust/tmp/build/x86_64-unknown-linux-gnu/stage0/bin/rustc" "--target" "x86_64-unknown-linux-gnu" "--print" "target-libdir"
error: No such file or directory (os error 2)
```

This fixes the error. Reusing the same build directory is useful if you want to test path-things in
bootstrap itself, without having to recompile it each time.

For good measure, this also reruns the build script when PATH changes.
-rw-r--r--src/bootstrap/build.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/bootstrap/build.rs b/src/bootstrap/build.rs
index d40b924e0ff..6e39ea00f80 100644
--- a/src/bootstrap/build.rs
+++ b/src/bootstrap/build.rs
@@ -3,6 +3,8 @@ use std::path::PathBuf;
 
 fn main() {
     println!("cargo:rerun-if-changed=build.rs");
+    println!("cargo:rerun-if-env-changed=RUSTC");
+    println!("cargo:rerun-if-env-changed=PATH");
     println!("cargo:rustc-env=BUILD_TRIPLE={}", env::var("HOST").unwrap());
 
     // This may not be a canonicalized path.