diff options
| author | bors <bors@rust-lang.org> | 2022-04-16 01:57:54 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-04-16 01:57:54 +0000 |
| commit | 27490eb4232ceebc4f5e1e11b529b55994cf0333 (patch) | |
| tree | 7998b5043a702aeb155b8175aa6be681ba5b7c3a | |
| parent | bb1a03c4fcbe547168fab128fa39b08d1122a1c2 (diff) | |
| parent | dd0ad7375e5c3eaa14c594af38e7e7821c8038cc (diff) | |
| download | rust-27490eb4232ceebc4f5e1e11b529b55994cf0333.tar.gz rust-27490eb4232ceebc4f5e1e11b529b55994cf0333.zip | |
Auto merge of #95450 - jyn514:faster-doc, r=Mark-Simulacrum
Only check the compiler and standard library before documenting them (take 2) Trying https://github.com/rust-lang/rust/pull/88675 again.
| -rw-r--r-- | src/bootstrap/doc.rs | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/src/bootstrap/doc.rs b/src/bootstrap/doc.rs index 077a86af50b..a2802f76008 100644 --- a/src/bootstrap/doc.rs +++ b/src/bootstrap/doc.rs @@ -441,7 +441,6 @@ impl Step for Std { t!(fs::create_dir_all(&out)); let compiler = builder.compiler(stage, builder.config.build); - builder.ensure(compile::Std { compiler, target }); let out_dir = builder.stage_out(compiler, Mode::Std).join(target.triple).join("doc"); t!(fs::copy(builder.src.join("src/doc/rust.css"), out.join("rust.css"))); @@ -548,7 +547,6 @@ impl Step for Rustc { fn run(self, builder: &Builder<'_>) { let stage = self.stage; let target = self.target; - builder.info(&format!("Documenting stage{} compiler ({})", stage, target)); let paths = builder .paths @@ -563,9 +561,12 @@ impl Step for Rustc { let out = builder.compiler_doc_out(target); t!(fs::create_dir_all(&out)); - // Build rustc. + // Build the standard library, so that proc-macros can use it. + // (Normally, only the metadata would be necessary, but proc-macros are special since they run at compile-time.) let compiler = builder.compiler(stage, builder.config.build); - builder.ensure(compile::Rustc { compiler, target }); + builder.ensure(compile::Std { compiler, target: builder.config.build }); + + builder.info(&format!("Documenting stage{} compiler ({})", stage, target)); // This uses a shared directory so that librustdoc documentation gets // correctly built and merged with the rustc documentation. This is @@ -642,7 +643,6 @@ macro_rules! tool_doc { ($tool: ident, $should_run: literal, $path: literal, [$($krate: literal),+ $(,)?] $(,)?) => { #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct $tool { - stage: u32, target: TargetSelection, } @@ -657,7 +657,7 @@ macro_rules! tool_doc { } fn make_run(run: RunConfig<'_>) { - run.builder.ensure($tool { stage: run.builder.top_stage, target: run.target }); + run.builder.ensure($tool { target: run.target }); } /// Generates compiler documentation. @@ -667,8 +667,21 @@ macro_rules! tool_doc { /// we do not merge it with the other documentation from std, test and /// proc_macros. This is largely just a wrapper around `cargo doc`. fn run(self, builder: &Builder<'_>) { - let stage = self.stage; + let stage = builder.top_stage; let target = self.target; + + // This is the intended out directory for compiler documentation. + let out = builder.compiler_doc_out(target); + t!(fs::create_dir_all(&out)); + + // Build rustc docs so that we generate relative links. + builder.ensure(Rustc { stage, target }); + // Rustdoc needs the rustc sysroot available to build. + // FIXME: is there a way to only ensure `check::Rustc` here? Last time I tried it failed + // with strange errors, but only on a full bors test ... + let compiler = builder.compiler(stage, builder.config.build); + builder.ensure(compile::Rustc { compiler, target }); + builder.info( &format!( "Documenting stage{} {} ({})", @@ -678,15 +691,6 @@ macro_rules! tool_doc { ), ); - // This is the intended out directory for compiler documentation. - let out = builder.compiler_doc_out(target); - t!(fs::create_dir_all(&out)); - - let compiler = builder.compiler(stage, builder.config.build); - - // Build rustc docs so that we generate relative links. - builder.ensure(Rustc { stage, target }); - // Symlink compiler docs to the output directory of rustdoc documentation. let out_dir = builder.stage_out(compiler, Mode::ToolRustc).join(target.triple).join("doc"); t!(fs::create_dir_all(&out_dir)); |
