Don't generate more docs than necessary

This commit is contained in:
Guillaume Gomez 2021-05-11 15:51:25 +02:00
parent fe62c6e295
commit b9b67b7d5b
2 changed files with 23 additions and 10 deletions

View File

@ -451,6 +451,22 @@ impl Step for Std {
builder.run(&mut cargo.into());
};
let paths = builder
.paths
.iter()
.map(components_simplified)
.filter_map(|path| {
if path.get(0) == Some(&"library") {
Some(path[1].to_owned())
} else if !path.is_empty() {
Some(path[0].to_owned())
} else {
None
}
})
.collect::<Vec<_>>();
// Only build the following crates. While we could just iterate over the
// folder structure, that would also build internal crates that we do
// not want to show in documentation. These crates will later be visited
@ -464,20 +480,17 @@ impl Step for Std {
let krates = ["core", "alloc", "std", "proc_macro", "test"];
for krate in &krates {
run_cargo_rustdoc_for(krate);
if paths.iter().any(|p| p == krate) {
// No need to document more of the libraries if we have the one we want.
break;
}
}
builder.cp_r(&out_dir, &out);
// Look for library/std, library/core etc in the `x.py doc` arguments and
// open the corresponding rendered docs.
for path in builder.paths.iter().map(components_simplified) {
let requested_crate = if path.get(0) == Some(&"library") {
&path[1]
} else if !path.is_empty() {
&path[0]
} else {
continue;
};
if krates.contains(&requested_crate) {
for requested_crate in paths {
if krates.iter().any(|k| *k == requested_crate.as_str()) {
let index = out.join(requested_crate).join("index.html");
open(builder, &index);
}

View File

@ -34,7 +34,7 @@ ENV SCRIPT python3 ../x.py --stage 2 test src/tools/expand-yaml-anchors && \
python3 ../x.py build --stage 0 src/tools/build-manifest && \
python3 ../x.py test --stage 0 src/tools/compiletest && \
python3 ../x.py test --stage 2 src/tools/tidy && \
python3 ../x.py doc --stage 0 library/std && \
python3 ../x.py doc --stage 0 library/test && \
/scripts/validate-toolstate.sh && \
# Runs checks to ensure that there are no ES5 issues in our JS code.
es-check es5 ../src/librustdoc/html/static/*.js