Skip to content

Commit

Permalink
set the correct executable for initial_{rustc,cargo}
Browse files Browse the repository at this point in the history
Due to the way the paths initial_rustc and initial_cargo were
constructed before this commit, they mixed \ and / for path separators
and they omitted the .exe suffix.

This worked fine up until now, as Windows is capable of handling the
mixed path separators and the Command::new API adds the ".exe" suffix if
missing from the executable.

This resulted in paths that didn't actually exist on disk though, due to
the missing .exe suffix. This commit fixes that by adding the .exe
suffix to initial_rustc and initial_cargo when --build is Windows.
  • Loading branch information
pietroalbini committed Jul 8, 2024
1 parent fcb6ff5 commit 198c809
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions src/bootstrap/src/core/config/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1452,14 +1452,24 @@ impl Config {
config.out = crate::utils::helpers::absolute(&config.out);
}

// Hacky way to determine the executable suffix for the build target. We cannot use
// std::env::consts::EXE_SUFFIX as the build target might not be the target bootstrap was
// compiled with.
let initial_exe_suffix = if config.build.triple.contains("windows") { ".exe" } else { "" };

config.initial_rustc = if let Some(rustc) = rustc {
if !flags.skip_stage0_validation {
config.check_stage0_version(&rustc, "rustc");
}
rustc
} else {
config.download_beta_toolchain();
config.out.join(config.build.triple).join("stage0/bin/rustc")
config
.out
.join(config.build.triple)
.join("stage0")
.join("bin")
.join(format!("rustc{initial_exe_suffix}"))
};

config.initial_cargo = if let Some(cargo) = cargo {
Expand All @@ -1469,7 +1479,12 @@ impl Config {
cargo
} else {
config.download_beta_toolchain();
config.out.join(config.build.triple).join("stage0/bin/cargo")
config
.out
.join(config.build.triple)
.join("stage0")
.join("bin")
.join(format!("cargo{initial_exe_suffix}"))
};

// NOTE: it's important this comes *after* we set `initial_rustc` just above.
Expand Down

0 comments on commit 198c809

Please sign in to comment.