diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/bootstrap/build/config.rs | 2 | ||||
| -rw-r--r-- | src/bootstrap/build/mod.rs | 12 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/bootstrap/build/config.rs b/src/bootstrap/build/config.rs index 3c35b9a9516..fb1ad12d914 100644 --- a/src/bootstrap/build/config.rs +++ b/src/bootstrap/build/config.rs @@ -67,6 +67,7 @@ pub struct Config { pub target: Vec<String>, pub rustc: Option<String>, pub cargo: Option<String>, + pub local_rebuild: bool, // libstd features pub debug_jemalloc: bool, @@ -315,6 +316,7 @@ impl Config { ("RPATH", self.rust_rpath), ("OPTIMIZE_TESTS", self.rust_optimize_tests), ("DEBUGINFO_TESTS", self.rust_debuginfo_tests), + ("LOCAL_REBUILD", self.local_rebuild), } match key { diff --git a/src/bootstrap/build/mod.rs b/src/bootstrap/build/mod.rs index ebc05c5f61c..21d12d27d92 100644 --- a/src/bootstrap/build/mod.rs +++ b/src/bootstrap/build/mod.rs @@ -510,6 +510,14 @@ impl Build { .arg("-j").arg(self.jobs().to_string()) .arg("--target").arg(target); + let stage; + if compiler.stage == 0 && self.config.local_rebuild { + // Assume the local-rebuild rustc already has stage1 features. + stage = 1; + } else { + stage = compiler.stage; + } + // Customize the compiler we're running. Specify the compiler to cargo // as our shim and then pass it some various options used to configure // how the actual compiler itself is called. @@ -518,7 +526,7 @@ impl Build { // src/bootstrap/{rustc,rustdoc.rs} cargo.env("RUSTC", self.out.join("bootstrap/debug/rustc")) .env("RUSTC_REAL", self.compiler_path(compiler)) - .env("RUSTC_STAGE", compiler.stage.to_string()) + .env("RUSTC_STAGE", stage.to_string()) .env("RUSTC_DEBUGINFO", self.config.rust_debuginfo.to_string()) .env("RUSTC_CODEGEN_UNITS", self.config.rust_codegen_units.to_string()) @@ -744,7 +752,7 @@ impl Build { // In stage0 we're using a previously released stable compiler, so we // use the stage0 bootstrap key. Otherwise we use our own build's // bootstrap key. - let bootstrap_key = if compiler.is_snapshot(self) { + let bootstrap_key = if compiler.is_snapshot(self) && !self.config.local_rebuild { &self.bootstrap_key_stage0 } else { &self.bootstrap_key |
