diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-01-07 15:30:27 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-07 15:30:27 +0100 |
| commit | ccaa0f331c12aff5fb97e63c1cef84b265ac4732 (patch) | |
| tree | c87306404f930c2d3bcc66cf227116383278e330 | |
| parent | ebf2e51c3ebe144e8e596af612f9b63dfdcea166 (diff) | |
| parent | b0324cc1080ef787c54f9b3fd02d795b7eb91aea (diff) | |
| download | rust-ccaa0f331c12aff5fb97e63c1cef84b265ac4732.tar.gz rust-ccaa0f331c12aff5fb97e63c1cef84b265ac4732.zip | |
Rollup merge of #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` (https://github.com/rust-lang/rust/pull/134865) unconditionally and that leads cargo to recompile tidy. This patch fixes that.
| -rw-r--r-- | src/tools/tidy/src/deps.rs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/tools/tidy/src/deps.rs b/src/tools/tidy/src/deps.rs index b71ce92771a..d4cbc37f6d2 100644 --- a/src/tools/tidy/src/deps.rs +++ b/src/tools/tidy/src/deps.rs @@ -619,12 +619,17 @@ fn check_proc_macro_dep_list(root: &Path, cargo: &Path, bless: bool, bad: &mut b } // Remove the proc-macro crates themselves proc_macro_deps.retain(|pkg| !is_proc_macro_pkg(&metadata[pkg])); - let proc_macro_deps_iter = proc_macro_deps.into_iter().map(|dep| metadata[dep].name.clone()); - if bless { - let mut proc_macro_deps: Vec<_> = proc_macro_deps_iter.collect(); + let proc_macro_deps: HashSet<_> = + proc_macro_deps.into_iter().map(|dep| metadata[dep].name.clone()).collect(); + let expected = proc_macro_deps::CRATES.iter().map(|s| s.to_string()).collect::<HashSet<_>>(); + + let needs_blessing = proc_macro_deps.difference(&expected).next().is_some() + || expected.difference(&proc_macro_deps).next().is_some(); + + if needs_blessing && bless { + let mut proc_macro_deps: Vec<_> = proc_macro_deps.into_iter().collect(); proc_macro_deps.sort(); - proc_macro_deps.dedup(); let mut file = File::create(root.join("src/bootstrap/src/utils/proc_macro_deps.rs")) .expect("`proc_macro_deps` should exist"); writeln!( @@ -646,10 +651,8 @@ pub static CRATES: &[&str] = &[ ) .unwrap(); } else { - let proc_macro_deps: HashSet<_> = proc_macro_deps_iter.collect(); - let expected = - proc_macro_deps::CRATES.iter().map(|s| s.to_string()).collect::<HashSet<_>>(); let old_bad = *bad; + for missing in proc_macro_deps.difference(&expected) { tidy_error!( bad, |
