Add bootstrap to tidy check
This commit is contained in:
parent
9cde0f7877
commit
85c87f6c67
@ -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);
|
||||
|
@ -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}");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user