]> git.lizzy.rs Git - rust.git/blobdiff - src/tools/tidy/src/deps.rs
Remove individual crate checks for bootstrap in tidy
[rust.git] / src / tools / tidy / src / deps.rs
index 7775bbb13e88a02aad8e5150fcdbd47ea0b944d2..55cf3fee9bf11d805880071e3913953e2e0dc4ab 100644 (file)
     ("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"];
     "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}");
         }