Skip to content

Commit ccaa0f3

Browse files
Rollup merge of rust-lang#135193 - onur-ozkan:tidy-cache-invalidation, r=jieyouxu
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` (rust-lang#134865) unconditionally and that leads cargo to recompile tidy. This patch fixes that.
2 parents ebf2e51 + b0324cc commit ccaa0f3

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
@@ -619,12 +619,17 @@ fn check_proc_macro_dep_list(root: &Path, cargo: &Path, bless: bool, bad: &mut b
619619
}
620620
// Remove the proc-macro crates themselves
621621
proc_macro_deps.retain(|pkg| !is_proc_macro_pkg(&metadata[pkg]));
622-
let proc_macro_deps_iter = proc_macro_deps.into_iter().map(|dep| metadata[dep].name.clone());
623622

624-
if bless {
625-
let mut proc_macro_deps: Vec<_> = proc_macro_deps_iter.collect();
623+
let proc_macro_deps: HashSet<_> =
624+
proc_macro_deps.into_iter().map(|dep| metadata[dep].name.clone()).collect();
625+
let expected = proc_macro_deps::CRATES.iter().map(|s| s.to_string()).collect::<HashSet<_>>();
626+
627+
let needs_blessing = proc_macro_deps.difference(&expected).next().is_some()
628+
|| expected.difference(&proc_macro_deps).next().is_some();
629+
630+
if needs_blessing && bless {
631+
let mut proc_macro_deps: Vec<_> = proc_macro_deps.into_iter().collect();
626632
proc_macro_deps.sort();
627-
proc_macro_deps.dedup();
628633
let mut file = File::create(root.join("src/bootstrap/src/utils/proc_macro_deps.rs"))
629634
.expect("`proc_macro_deps` should exist");
630635
writeln!(
@@ -646,10 +651,8 @@ pub static CRATES: &[&str] = &[
646651
)
647652
.unwrap();
648653
} else {
649-
let proc_macro_deps: HashSet<_> = proc_macro_deps_iter.collect();
650-
let expected =
651-
proc_macro_deps::CRATES.iter().map(|s| s.to_string()).collect::<HashSet<_>>();
652654
let old_bad = *bad;
655+
653656
for missing in proc_macro_deps.difference(&expected) {
654657
tidy_error!(
655658
bad,

0 commit comments

Comments
 (0)