X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftools%2Ftidy%2Fsrc%2Fdeps.rs;h=55cf3fee9bf11d805880071e3913953e2e0dc4ab;hb=81482e67cbde2e15422bb8a07345ceab54a6a24e;hp=7775bbb13e88a02aad8e5150fcdbd47ea0b944d2;hpb=3c0b9d50ae43eb4c13390fcc363e7cc4d4d661d3;p=rust.git diff --git a/src/tools/tidy/src/deps.rs b/src/tools/tidy/src/deps.rs index 7775bbb13e8..55cf3fee9bf 100644 --- a/src/tools/tidy/src/deps.rs +++ b/src/tools/tidy/src/deps.rs @@ -63,6 +63,10 @@ ("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 @@ "chalk-ir", "chalk-solve", "chrono", - "cmake", "compiler_builtins", "cpufeatures", "crc32fast", @@ -309,7 +312,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 +332,20 @@ 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 that all licenses are in the valid list in `LICENSES`. @@ -409,6 +427,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 +457,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}"); }