pub target: Vec<String>,
pub rustc: Option<String>,
pub cargo: Option<String>,
+ pub rebuild: bool,
// libstd features
pub debug_jemalloc: bool,
("RPATH", self.rust_rpath),
("OPTIMIZE_TESTS", self.rust_optimize_tests),
("DEBUGINFO_TESTS", self.rust_debuginfo_tests),
+ ("LOCAL_REBUILD", self.rebuild),
}
match key {
.arg("-j").arg(self.jobs().to_string())
.arg("--target").arg(target);
+ let stage;
+ if compiler.stage == 0 && self.config.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.
// 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())
// 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.rebuild {
&self.bootstrap_key_stage0
} else {
&self.bootstrap_key