From: Raph Levien Date: Thu, 26 Jan 2017 21:43:13 +0000 (-0800) Subject: Add build script rerun-if-changed dependencies X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~11^2~12^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=d79249b629a1fb532a16c2c9d60717afaf7a204a;p=cargo.git Add build script rerun-if-changed dependencies Also pick up the rerun-if-changed dependencies from build scripts. --- diff --git a/src/cargo/ops/cargo_rustc/output_depinfo.rs b/src/cargo/ops/cargo_rustc/output_depinfo.rs index 5ed98eb11..188956187 100644 --- a/src/cargo/ops/cargo_rustc/output_depinfo.rs +++ b/src/cargo/ops/cargo_rustc/output_depinfo.rs @@ -27,6 +27,7 @@ fn add_deps_for_unit<'a, 'b>(deps: &mut HashSet, context: &mut Context< } visited.insert(unit.clone()); + // Add dependencies from rustc dep-info output (stored in fingerprint directory) let dep_info_loc = fingerprint::dep_info_loc(context, unit); if let Some(paths) = fingerprint::parse_dep_info(&dep_info_loc)? { for path in paths { @@ -34,7 +35,15 @@ fn add_deps_for_unit<'a, 'b>(deps: &mut HashSet, context: &mut Context< } } - // recursively traverse all transitive dependencies + // Add rerun-if-changed dependencies + let key = (unit.pkg.package_id().clone(), unit.kind); + if let Some(output) = context.build_state.outputs.lock().unwrap().get(&key) { + for path in &output.rerun_if_changed { + deps.insert(path.into()); + } + } + + // Recursively traverse all transitive dependencies for dep_unit in &context.dep_targets(unit)? { let source_id = dep_unit.pkg.package_id().source_id(); if source_id.is_path() {