Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project_model/src/build_scripts.rs')
| -rw-r--r-- | crates/project_model/src/build_scripts.rs | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/crates/project_model/src/build_scripts.rs b/crates/project_model/src/build_scripts.rs index d96c135ba5..5aa23331a1 100644 --- a/crates/project_model/src/build_scripts.rs +++ b/crates/project_model/src/build_scripts.rs @@ -7,11 +7,11 @@ //! here, but it covers procedural macros as well. use std::{ + io, path::PathBuf, process::{Command, Stdio}, }; -use anyhow::Result; use cargo_metadata::{camino::Utf8Path, Message}; use la_arena::ArenaMap; use paths::AbsPathBuf; @@ -80,7 +80,7 @@ impl WorkspaceBuildScripts { config: &CargoConfig, workspace: &CargoWorkspace, progress: &dyn Fn(String), - ) -> Result<WorkspaceBuildScripts> { + ) -> io::Result<WorkspaceBuildScripts> { let mut cmd = Self::build_command(config); if config.wrap_rustc_in_build_scripts { @@ -107,12 +107,12 @@ impl WorkspaceBuildScripts { by_id.insert(workspace[package].id.clone(), package); } - let mut callback_err = None; + let mut cfg_err = None; let mut stderr = String::new(); let output = stdx::process::streaming_output( cmd, &mut |line| { - if callback_err.is_some() { + if cfg_err.is_some() { return; } @@ -126,7 +126,7 @@ impl WorkspaceBuildScripts { match message { Message::BuildScriptExecuted(message) => { let package = match by_id.get(&message.package_id.repr) { - Some(it) => *it, + Some(&it) => it, None => return, }; let cfgs = { @@ -135,7 +135,7 @@ impl WorkspaceBuildScripts { match cfg.parse::<CfgFlag>() { Ok(it) => acc.push(it), Err(err) => { - callback_err = Some(anyhow::format_err!( + cfg_err = Some(format!( "invalid cfg from cargo-metadata: {}", err )); @@ -191,6 +191,11 @@ impl WorkspaceBuildScripts { for package in workspace.packages() { let package_build_data = &mut res.outputs[package]; + tracing::info!( + "{} BuildScriptOutput: {:?}", + workspace[package].manifest.parent().display(), + package_build_data, + ); // inject_cargo_env(package, package_build_data); if let Some(out_dir) = &package_build_data.out_dir { // NOTE: cargo and rustc seem to hide non-UTF-8 strings from env! and option_env!() @@ -200,6 +205,11 @@ impl WorkspaceBuildScripts { } } + if let Some(cfg_err) = cfg_err { + stderr.push_str(&cfg_err); + stderr.push('\n'); + } + if !output.status.success() { if stderr.is_empty() { stderr = "cargo check failed".to_string(); |