Skip to content

Commit 94bc438

Browse files
bootstrap: doc: document std crates one by one
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
1 parent b5d46ec commit 94bc438

1 file changed

Lines changed: 41 additions & 30 deletions

File tree

  • src/bootstrap/src/core/build_steps

src/bootstrap/src/core/build_steps/doc.rs

Lines changed: 41 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//! Everything here is basically just a shim around calling either `rustbook` or
88
//! `rustdoc`.
99
10+
use std::collections::HashMap;
1011
use std::io::{self, Write};
1112
use std::path::{Path, PathBuf};
1213
use std::{env, fs, mem};
@@ -806,40 +807,50 @@ fn doc_std(
806807
// as a function parameter.
807808
let out_dir = target_dir.join(target).join("doc");
808809

809-
let mut cargo = builder::Cargo::new(
810-
builder,
811-
build_compiler,
812-
Mode::Std,
813-
SourceType::InTree,
814-
target,
815-
Kind::Doc,
816-
);
810+
let mut crates = requested_crates.to_vec();
811+
let std_lib_crate_order = STD_PUBLIC_CRATES
812+
.iter()
813+
.enumerate()
814+
.map(|(i, v)| (v.to_string(), i))
815+
.collect::<HashMap<_, _>>();
816+
crates.sort_by_key(|c| std_lib_crate_order.get(c).unwrap_or(&usize::MAX));
817817

818-
compile::std_cargo(builder, target, &mut cargo, requested_crates);
819-
cargo
820-
.arg("--no-deps")
821-
.arg("--target-dir")
822-
.arg(&*target_dir.to_string_lossy())
823-
.arg("-Zskip-rustdoc-fingerprint")
824-
.arg("-Zrustdoc-map")
825-
.rustdocflag("--extern-html-root-url")
826-
.rustdocflag("std_detect=https://docs.rs/std_detect/latest/")
827-
.rustdocflag("--extern-html-root-takes-precedence")
828-
.rustdocflag("--resource-suffix")
829-
.rustdocflag(&builder.version);
830-
for arg in extra_args {
831-
cargo.rustdocflag(arg);
832-
}
818+
for krate in crates {
819+
let mut cargo = builder::Cargo::new(
820+
builder,
821+
build_compiler,
822+
Mode::Std,
823+
SourceType::InTree,
824+
target,
825+
Kind::Doc,
826+
);
833827

834-
if builder.config.library_docs_private_items {
835-
cargo.rustdocflag("--document-private-items").rustdocflag("--document-hidden-items");
836-
}
828+
compile::std_cargo(builder, target, &mut cargo, std::slice::from_ref(&krate));
829+
cargo
830+
.arg("--no-deps")
831+
.arg("--target-dir")
832+
.arg(&*target_dir.to_string_lossy())
833+
.arg("-Zskip-rustdoc-fingerprint")
834+
.arg("-Zrustdoc-map")
835+
.rustdocflag("--extern-html-root-url")
836+
.rustdocflag("std_detect=https://docs.rs/std_detect/latest/")
837+
.rustdocflag("--extern-html-root-takes-precedence")
838+
.rustdocflag("--resource-suffix")
839+
.rustdocflag(&builder.version);
840+
for arg in extra_args {
841+
cargo.rustdocflag(arg);
842+
}
837843

838-
let description =
839-
format!("library{} in {} format", crate_description(requested_crates), format.as_str());
840-
let _guard = builder.msg(Kind::Doc, description, Mode::Std, build_compiler, target);
844+
if builder.config.library_docs_private_items {
845+
cargo.rustdocflag("--document-private-items").rustdocflag("--document-hidden-items");
846+
}
847+
848+
let description =
849+
format!("library{} in {} format", crate_description(&[krate]), format.as_str());
850+
let _guard = builder.msg(Kind::Doc, description, Mode::Std, build_compiler, target);
851+
cargo.into_cmd().run(builder);
852+
}
841853

842-
cargo.into_cmd().run(builder);
843854
builder.cp_link_r(&out_dir, out);
844855
}
845856

0 commit comments

Comments
 (0)