diff options
| author | Joshua Nelson <jnelson@cloudflare.com> | 2022-05-29 10:37:05 -0500 |
|---|---|---|
| committer | Joshua Nelson <jnelson@cloudflare.com> | 2022-06-21 23:42:56 -0500 |
| commit | 85c87f6c67f966e7b4fd292217c6db41fce88e0d (patch) | |
| tree | 87eebf1e27072aec266863d086414da9a17107c4 | |
| parent | 9cde0f7877bda27e13da269ff7e6171831c84ec1 (diff) | |
| download | rust-85c87f6c67f966e7b4fd292217c6db41fce88e0d.tar.gz rust-85c87f6c67f966e7b4fd292217c6db41fce88e0d.zip | |
Add bootstrap to tidy check
| -rw-r--r-- | src/bootstrap/lib.rs | 2 | ||||
| -rw-r--r-- | src/tools/tidy/src/deps.rs | 108 |
2 files changed, 106 insertions, 4 deletions
diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index 37ed9a0b853..859d35b7d7b 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -549,7 +549,7 @@ impl Build { ]; for s in rust_submodules { build.update_submodule(Path::new(s)); - } + } build.verbose("learning about cargo"); metadata::build(&mut build); diff --git a/src/tools/tidy/src/deps.rs b/src/tools/tidy/src/deps.rs index 7775bbb13e8..c66ecda937d 100644 --- a/src/tools/tidy/src/deps.rs +++ b/src/tools/tidy/src/deps.rs @@ -63,6 +63,10 @@ const EXCEPTIONS_CRANELIFT: &[(&str, &str)] = &[ ("target-lexicon", "Apache-2.0 WITH LLVM-exception"), ]; +const EXCEPTIONS_BOOTSTRAP: &[(&str, &str)] = &[ + ("ryu", "Apache-2.0 OR BSL-1.0"), // through serde +]; + /// These are the root crates that are part of the runtime. The licenses for /// these and all their dependencies *must not* be in the exception list. const RUNTIME_CRATES: &[&str] = &["std", "core", "alloc", "test", "panic_abort", "panic_unwind"]; @@ -96,7 +100,6 @@ const PERMITTED_DEPENDENCIES: &[&str] = &[ "chalk-ir", "chalk-solve", "chrono", - "cmake", "compiler_builtins", "cpufeatures", "crc32fast", @@ -290,6 +293,82 @@ const PERMITTED_CRANELIFT_DEPENDENCIES: &[&str] = &[ "winapi-x86_64-pc-windows-gnu", ]; +const PERMITTED_BOOTSTRAP_DEPENDENCIES: &[&str] = &[ + "aho-corasick", + "autocfg", + "ansi_term", + "block-buffer", + "bitflags", + "bstr", + "core-foundation-sys", + "cc", + "cfg-if", + "crossbeam-utils", + "cmake", + "cpufeatures", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crypto-common", + "ctor", + "diff", + "digest", + "either", + "filetime", + "fnv", + "getopts", + "generic-array", + "globset", + "hermit-abi", + "hex", + "ignore", + "itoa", + "lazy_static", + "libc", + "log", + "lzma-sys", + "memchr", + "memoffset", + "ntapi", + "num_cpus", + "once_cell", + "opener", + "output_vt100", + "pkg-config", + "pretty_assertions", + "proc-macro2", + "quote", + "rayon", + "rayon-core", + "redox_syscall", + "regex", + "regex-automata", + "regex-syntax", + "ryu", + "same-file", + "scopeguard", + "serde", + "serde_derive", + "serde_json", + "sha2", + "syn", + "sysinfo", + "tar", + "thread_local", + "toml", + "typenum", + "unicode-ident", + "unicode-width", + "version_check", + "walkdir", + "winapi", + "winapi-i686-pc-windows-gnu", + "winapi-util", + "winapi-x86_64-pc-windows-gnu", + "xattr", + "xz2", +]; + const FORBIDDEN_TO_HAVE_DUPLICATES: &[&str] = &[ // These two crates take quite a long time to build, so don't allow two versions of them // to accidentally sneak into our dependency graph, in order to ensure we keep our CI times @@ -309,7 +388,13 @@ pub fn check(root: &Path, cargo: &Path, bad: &mut bool) { let metadata = t!(cmd.exec()); let runtime_ids = compute_runtime_crates(&metadata); check_exceptions(&metadata, EXCEPTIONS, runtime_ids, bad); - check_dependencies(&metadata, PERMITTED_DEPENDENCIES, RESTRICTED_DEPENDENCY_CRATES, bad); + check_dependencies( + &metadata, + "main workspace", + PERMITTED_DEPENDENCIES, + RESTRICTED_DEPENDENCY_CRATES, + bad, + ); check_crate_duplicate(&metadata, FORBIDDEN_TO_HAVE_DUPLICATES, bad); check_rustfix(&metadata, bad); @@ -323,11 +408,27 @@ pub fn check(root: &Path, cargo: &Path, bad: &mut bool) { check_exceptions(&metadata, EXCEPTIONS_CRANELIFT, runtime_ids, bad); check_dependencies( &metadata, + "cranelift", PERMITTED_CRANELIFT_DEPENDENCIES, &["rustc_codegen_cranelift"], bad, ); check_crate_duplicate(&metadata, &[], bad); + + let mut cmd = cargo_metadata::MetadataCommand::new(); + cmd.cargo_path(cargo) + .manifest_path(root.join("src/bootstrap/Cargo.toml")) + .features(cargo_metadata::CargoOpt::AllFeatures); + let metadata = t!(cmd.exec()); + let runtime_ids = HashSet::new(); + check_exceptions(&metadata, EXCEPTIONS_BOOTSTRAP, runtime_ids, bad); + check_dependencies( + &metadata, + "bootstrap", + PERMITTED_BOOTSTRAP_DEPENDENCIES, + &["bootstrap"], + bad, + ); } /// Check that all licenses are in the valid list in `LICENSES`. @@ -409,6 +510,7 @@ fn check_exceptions( /// Specifically, this checks that the dependencies are on the `PERMITTED_DEPENDENCIES`. fn check_dependencies( metadata: &Metadata, + descr: &str, permitted_dependencies: &[&'static str], restricted_dependency_crates: &[&'static str], bad: &mut bool, @@ -438,7 +540,7 @@ fn check_dependencies( } if !unapproved.is_empty() { - tidy_error!(bad, "Dependencies not explicitly permitted:"); + tidy_error!(bad, "Dependencies for {} not explicitly permitted:", descr); for dep in unapproved { println!("* {dep}"); } |
