From eac2e512a120167d44915b2e9c53f3cc8578d0ca Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 14 May 2024 21:26:37 +0200 Subject: [PATCH] fix: Don't emit --keep-going for custom build script commands --- crates/project-model/src/build_scripts.rs | 23 +++++++++++++++-------- crates/project-model/src/workspace.rs | 2 +- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/crates/project-model/src/build_scripts.rs b/crates/project-model/src/build_scripts.rs index 4dc3b3f349..8e1f7fdcde 100644 --- a/crates/project-model/src/build_scripts.rs +++ b/crates/project-model/src/build_scripts.rs @@ -64,8 +64,10 @@ impl WorkspaceBuildScripts { config: &CargoConfig, allowed_features: &FxHashSet, manifest_path: &ManifestPath, + toolchain: Option<&Version>, sysroot: Option<&Sysroot>, ) -> io::Result { + const RUST_1_75: Version = Version::new(1, 75, 0); let mut cmd = match config.run_build_script_command.as_deref() { Some([program, args @ ..]) => { let mut cmd = Command::new(program); @@ -120,6 +122,10 @@ impl WorkspaceBuildScripts { cmd.arg("-Zscript"); } + if toolchain.map_or(false, |it| *it >= RUST_1_75) { + cmd.arg("--keep-going"); + } + cmd } }; @@ -142,11 +148,9 @@ impl WorkspaceBuildScripts { config: &CargoConfig, workspace: &CargoWorkspace, progress: &dyn Fn(String), - toolchain: &Option, + toolchain: Option<&Version>, sysroot: Option<&Sysroot>, ) -> io::Result { - const RUST_1_75: Version = Version::new(1, 75, 0); - let current_dir = match &config.invocation_location { InvocationLocation::Root(root) if config.run_build_script_command.is_some() => { root.as_path() @@ -156,11 +160,13 @@ impl WorkspaceBuildScripts { .as_ref(); let allowed_features = workspace.workspace_features(); - let mut cmd = - Self::build_command(config, &allowed_features, workspace.manifest_path(), sysroot)?; - if toolchain.as_ref().map_or(false, |it| *it >= RUST_1_75) { - cmd.args(["--keep-going"]); - } + let cmd = Self::build_command( + config, + &allowed_features, + workspace.manifest_path(), + toolchain, + sysroot, + )?; Self::run_per_ws(cmd, workspace, current_dir, progress) } @@ -189,6 +195,7 @@ impl WorkspaceBuildScripts { // This is not gonna be used anyways, so just construct a dummy here &ManifestPath::try_from(workspace_root.clone()).unwrap(), None, + None, )?; // NB: Cargo.toml could have been modified between `cargo metadata` and // `cargo check`. We shouldn't assume that package ids we see here are diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index 3e927b2935..85621444e3 100644 --- a/crates/project-model/src/workspace.rs +++ b/crates/project-model/src/workspace.rs @@ -488,7 +488,7 @@ impl ProjectWorkspace { config, cargo, progress, - &self.toolchain, + self.toolchain.as_ref(), self.sysroot.as_ref().ok(), ) .with_context(|| {