Skip to content

Commit bb01f31

Browse files
committed
Do check the deps of path deps
1 parent 6180a3f commit bb01f31

File tree

1 file changed

+44
-32
lines changed

1 file changed

+44
-32
lines changed

src/tools/tidy/src/deps.rs

+44-32
Original file line numberDiff line numberDiff line change
@@ -56,29 +56,40 @@ static WHITELIST_CRATES: &'static [CrateVersion] = &[
5656

5757
/// Whitelist of crates rustc is allowed to depend on. Avoid adding to the list if possible.
5858
static WHITELIST: &'static [Crate] = &[
59-
Crate("backtrace"),
60-
Crate("backtrace-sys"),
61-
Crate("bitflags"),
62-
Crate("byteorder"),
63-
Crate("cc"),
64-
Crate("cfg-if"),
65-
Crate("flate2"),
66-
Crate("fuchsia-zircon"),
67-
Crate("fuchsia-zircon-sys"),
68-
Crate("jobserver"),
69-
Crate("lazy_static"),
70-
Crate("libc"),
71-
Crate("log"),
72-
Crate("miniz-sys"),
73-
Crate("num_cpus"),
74-
Crate("rand"),
75-
Crate("rustc"),
76-
Crate("rustc-demangle"),
77-
Crate("rustc_trans"),
78-
Crate("tempdir"),
79-
Crate("winapi"),
80-
Crate("winapi-i686-pc-windows-gnu"),
81-
Crate("winapi-x86_64-pc-windows-gnu"),
59+
// Crate("ar"),
60+
// Crate("backtrace"),
61+
// Crate("backtrace-sys"),
62+
// Crate("bitflags"),
63+
// Crate("byteorder"),
64+
// Crate("cc"),
65+
// Crate("cfg-if"),
66+
// Crate("cmake"),
67+
// Crate("filetime"),
68+
// Crate("flate2"),
69+
// Crate("fuchsia-zircon"),
70+
// Crate("fuchsia-zircon-sys"),
71+
// Crate("jobserver"),
72+
// Crate("kernel32-sys"),
73+
// Crate("lazy_static"),
74+
// Crate("libc"),
75+
// Crate("log"),
76+
// Crate("log_settings"),
77+
// Crate("miniz-sys"),
78+
// Crate("num_cpus"),
79+
// Crate("owning_ref"),
80+
// Crate("parking_lot"),
81+
// Crate("parking_lot_core"),
82+
// Crate("rand"),
83+
// Crate("redox_syscall"),
84+
// Crate("rustc-demangle"),
85+
// Crate("smallvec"),
86+
// Crate("stable_deref_trait"),
87+
// Crate("tempdir"),
88+
// Crate("unicode-width"),
89+
// Crate("winapi"),
90+
// Crate("winapi-build"),
91+
// Crate("winapi-i686-pc-windows-gnu"),
92+
// Crate("winapi-x86_64-pc-windows-gnu"),
8293
];
8394

8495
// Some types for Serde to deserialize the output of `cargo metadata` to...
@@ -179,7 +190,7 @@ pub fn check_whitelist(path: &Path, cargo: &Path, bad: &mut bool) {
179190
let mut visited = BTreeSet::new();
180191
let mut unapproved = BTreeSet::new();
181192
for &krate in WHITELIST_CRATES.iter() {
182-
let mut bad = check_crate_whitelist(&whitelist, &resolve, &mut visited, krate);
193+
let mut bad = check_crate_whitelist(&whitelist, &resolve, &mut visited, krate, false);
183194
unapproved.append(&mut bad);
184195
}
185196

@@ -256,6 +267,7 @@ fn check_crate_whitelist<'a, 'b>(
256267
resolve: &'a Resolve,
257268
visited: &'b mut BTreeSet<CrateVersion<'a>>,
258269
krate: CrateVersion<'a>,
270+
must_be_on_whitelist: bool,
259271
) -> BTreeSet<Crate<'a>> {
260272
// Will contain bad deps
261273
let mut unapproved = BTreeSet::new();
@@ -267,9 +279,12 @@ fn check_crate_whitelist<'a, 'b>(
267279

268280
visited.insert(krate);
269281

270-
// If this dependency is not on the WHITELIST, add to bad set
271-
if !whitelist.contains(&krate.into()) {
272-
unapproved.insert(krate.into());
282+
// If this path is in-tree, we don't require it to be on the whitelist
283+
if must_be_on_whitelist {
284+
// If this dependency is not on the WHITELIST, add to bad set
285+
if !whitelist.contains(&krate.into()) {
286+
unapproved.insert(krate.into());
287+
}
273288
}
274289

275290
// Do a DFS in the crate graph (it's a DAG, so we know we have no cycles!)
@@ -282,11 +297,8 @@ fn check_crate_whitelist<'a, 'b>(
282297
for dep in to_check.dependencies.iter() {
283298
let (krate, is_path_dep) = CrateVersion::from_str(dep);
284299

285-
// We don't check in-tree deps
286-
if !is_path_dep {
287-
let mut bad = check_crate_whitelist(whitelist, resolve, visited, krate);
288-
unapproved.append(&mut bad);
289-
}
300+
let mut bad = check_crate_whitelist(whitelist, resolve, visited, krate, !is_path_dep);
301+
unapproved.append(&mut bad);
290302
}
291303

292304
unapproved

0 commit comments

Comments
 (0)