diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs index 58cf3edc317..4967bf50b48 100644 --- a/src/bootstrap/compile.rs +++ b/src/bootstrap/compile.rs @@ -1104,10 +1104,13 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { /// 1-3. fn run(self, builder: &Builder<'_>) -> Interned { let compiler = self.compiler; + let host_dir = builder.out.join(&compiler.host.triple); let sysroot = if compiler.stage == 0 { - builder.out.join(&compiler.host.triple).join("stage0-sysroot") + host_dir.join("stage0-sysroot") + } else if builder.download_rustc() { + host_dir.join("ci-rustc-sysroot") } else { - builder.out.join(&compiler.host.triple).join(format!("stage{}", compiler.stage)) + host_dir.join(format!("stage{}", compiler.stage)) }; let _ = fs::remove_dir_all(&sysroot); t!(fs::create_dir_all(&sysroot)); @@ -1118,6 +1121,11 @@ fn run(self, builder: &Builder<'_>) -> Interned { builder.config.build, compiler.host, "Cross-compiling is not yet supported with `download-rustc`", ); + + // #102002, cleanup stage1 and stage0-sysroot folders when using download-rustc so people don't use old versions of the toolchain by accident. + let _ = fs::remove_dir_all(host_dir.join("stage1")); + let _ = fs::remove_dir_all(host_dir.join("stage0-sysroot")); + // Copy the compiler into the correct sysroot. let ci_rustc_dir = builder.config.out.join(&*builder.config.build.triple).join("ci-rustc");