diff options
| author | Yuki Okushi <jtitor@2k36.org> | 2023-01-23 19:29:59 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-23 19:29:59 +0900 |
| commit | ae15d1094a1185e965a3de1672c5159546af9863 (patch) | |
| tree | 90fe42dbf5335361238377a148c9b10285e91e79 /src/bootstrap | |
| parent | 9e79642a7b0578f69585fc59476b5269f6040c5a (diff) | |
| parent | 11e002a001348e7ea035c0cb2665be806e2a832e (diff) | |
| download | rust-ae15d1094a1185e965a3de1672c5159546af9863.tar.gz rust-ae15d1094a1185e965a3de1672c5159546af9863.zip | |
Rollup merge of #106886 - dtolnay:fastinstall, r=Mark-Simulacrum
Make stage2 rustdoc and proc-macro-srv disableable in x.py install Rustdoc will build if `[build] tools = ["rustdoc"]` is set, and rust-analyzer-proc-macro-srv will build if `[build] tools = ["rust-analyzer"]` is set. On my machine skipping these tools speeds up `x.py install` from 7m15s to 6m08s (0m43s for rustdoc and 0m24s for rust-analyzer-proc-macro-srv). This is a significant speedup, since I never use rust-analyzer-proc-macro-srv, and I practically never need to use a custom build of rustdoc.
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/dist.rs | 22 | ||||
| -rw-r--r-- | src/bootstrap/tool.rs | 6 |
2 files changed, 22 insertions, 6 deletions
diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs index 2e4f753965d..2d86ff1d2ba 100644 --- a/src/bootstrap/dist.rs +++ b/src/bootstrap/dist.rs @@ -392,19 +392,29 @@ impl Step for Rustc { t!(fs::create_dir_all(image.join("bin"))); builder.cp_r(&src.join("bin"), &image.join("bin")); - builder.install(&builder.rustdoc(compiler), &image.join("bin"), 0o755); + if builder + .config + .tools + .as_ref() + .map_or(true, |tools| tools.iter().any(|tool| tool == "rustdoc")) + { + let rustdoc = builder.rustdoc(compiler); + builder.install(&rustdoc, &image.join("bin"), 0o755); + } - let ra_proc_macro_srv = builder - .ensure(tool::RustAnalyzerProcMacroSrv { + if let Some(ra_proc_macro_srv) = builder.ensure_if_default( + tool::RustAnalyzerProcMacroSrv { compiler: builder.compiler_for( compiler.stage, builder.config.build, compiler.host, ), target: compiler.host, - }) - .expect("rust-analyzer-proc-macro-server always builds"); - builder.install(&ra_proc_macro_srv, &image.join("libexec"), 0o755); + }, + builder.kind, + ) { + builder.install(&ra_proc_macro_srv, &image.join("libexec"), 0o755); + } let libdir_relative = builder.libdir_relative(compiler); diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs index 9a2100c2fb7..ca5f500f93b 100644 --- a/src/bootstrap/tool.rs +++ b/src/bootstrap/tool.rs @@ -765,9 +765,15 @@ impl Step for RustAnalyzerProcMacroSrv { const ONLY_HOSTS: bool = true; fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { + let builder = run.builder; // Allow building `rust-analyzer-proc-macro-srv` both as part of the `rust-analyzer` and as a stand-alone tool. run.path("src/tools/rust-analyzer") .path("src/tools/rust-analyzer/crates/proc-macro-srv-cli") + .default_condition(builder.config.tools.as_ref().map_or(true, |tools| { + tools + .iter() + .any(|tool| tool == "rust-analyzer" || tool == "rust-analyzer-proc-macro-srv") + })) } fn make_run(run: RunConfig<'_>) { |
