about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-06-04 13:05:36 +0000
committerbors <bors@rust-lang.org>2022-06-04 13:05:36 +0000
commit044b6ddca93375320db7f33744bf14a061b016e6 (patch)
tree0da16effde147c2540cfb7d6474158e342714e5d
parent312913a640760e9af0cff07cbb29950b810a643c (diff)
parent62fede212ac6c8f0cb8948ece79a237cfb18e095 (diff)
downloadrust-044b6ddca93375320db7f33744bf14a061b016e6.tar.gz
rust-044b6ddca93375320db7f33744bf14a061b016e6.zip
Auto merge of #12465 - Veykril:buildscripts, r=Veykril
internal: Only record build script outputs when the output has been changed

Follow up to https://github.com/rust-lang/rust-analyzer/pull/12457
-rw-r--r--crates/project-model/src/build_scripts.rs20
1 files changed, 10 insertions, 10 deletions
diff --git a/crates/project-model/src/build_scripts.rs b/crates/project-model/src/build_scripts.rs
index 73091306a85..ff46bb8fb43 100644
--- a/crates/project-model/src/build_scripts.rs
+++ b/crates/project-model/src/build_scripts.rs
@@ -142,18 +142,18 @@ impl WorkspaceBuildScripts {
                             }
                             acc
                         };
-                        let package_build_data =
-                            outputs[package].get_or_insert_with(Default::default);
                         // cargo_metadata crate returns default (empty) path for
                         // older cargos, which is not absolute, so work around that.
-                        if !message.out_dir.as_str().is_empty() {
-                            let out_dir =
-                                AbsPathBuf::assert(PathBuf::from(message.out_dir.into_os_string()));
-                            package_build_data.out_dir = Some(out_dir);
-                            package_build_data.cfgs = cfgs;
+                        let out_dir = message.out_dir.into_os_string();
+                        if !out_dir.is_empty() {
+                            let data = outputs[package].get_or_insert_with(Default::default);
+                            let out_dir = Some(AbsPathBuf::assert(PathBuf::from(out_dir)));
+                            (data.out_dir, data.cfgs) = (out_dir, cfgs);
+                        }
+                        if !message.env.is_empty() {
+                            outputs[package].get_or_insert_with(Default::default).envs =
+                                message.env;
                         }
-
-                        package_build_data.envs = message.env;
                     }
                     Message::CompilerArtifact(message) => {
                         let package = match by_id.get(&message.package_id.repr) {
@@ -195,7 +195,7 @@ impl WorkspaceBuildScripts {
         for package in workspace.packages() {
             if let Some(package_build_data) = &mut outputs[package] {
                 tracing::info!(
-                    "{} BuildScriptOutput: {:?}",
+                    "{}: {:?}",
                     workspace[package].manifest.parent().display(),
                     package_build_data,
                 );