Skip to content

Commit b0324cc

Browse files
committed
don't bless proc_macro_deps.rs unless it's necessary
Running tidy with `--bless` flag is breaking the build cache as tidy updates mtime of `proc_macro_deps.rs` unconditionally and that leads cargo to recompile tidy. This patch fixes that. Signed-off-by: onur-ozkan <[email protected]>
1 parent ab3924b commit b0324cc

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/tools/tidy/src/deps.rs

+10-7
Original file line numberDiff line numberDiff line change
@@ -622,12 +622,17 @@ fn check_proc_macro_dep_list(root: &Path, cargo: &Path, bless: bool, bad: &mut b
622622
}
623623
// Remove the proc-macro crates themselves
624624
proc_macro_deps.retain(|pkg| !is_proc_macro_pkg(&metadata[pkg]));
625-
let proc_macro_deps_iter = proc_macro_deps.into_iter().map(|dep| metadata[dep].name.clone());
626625

627-
if bless {
628-
let mut proc_macro_deps: Vec<_> = proc_macro_deps_iter.collect();
626+
let proc_macro_deps: HashSet<_> =
627+
proc_macro_deps.into_iter().map(|dep| metadata[dep].name.clone()).collect();
628+
let expected = proc_macro_deps::CRATES.iter().map(|s| s.to_string()).collect::<HashSet<_>>();
629+
630+
let needs_blessing = proc_macro_deps.difference(&expected).next().is_some()
631+
|| expected.difference(&proc_macro_deps).next().is_some();
632+
633+
if needs_blessing && bless {
634+
let mut proc_macro_deps: Vec<_> = proc_macro_deps.into_iter().collect();
629635
proc_macro_deps.sort();
630-
proc_macro_deps.dedup();
631636
let mut file = File::create(root.join("src/bootstrap/src/utils/proc_macro_deps.rs"))
632637
.expect("`proc_macro_deps` should exist");
633638
writeln!(
@@ -649,10 +654,8 @@ pub static CRATES: &[&str] = &[
649654
)
650655
.unwrap();
651656
} else {
652-
let proc_macro_deps: HashSet<_> = proc_macro_deps_iter.collect();
653-
let expected =
654-
proc_macro_deps::CRATES.iter().map(|s| s.to_string()).collect::<HashSet<_>>();
655657
let old_bad = *bad;
658+
656659
for missing in proc_macro_deps.difference(&expected) {
657660
tidy_error!(
658661
bad,

0 commit comments

Comments
 (0)