diff options
| author | Amos Wenger <amoswenger@gmail.com> | 2022-07-22 16:23:40 +0200 |
|---|---|---|
| committer | Amos Wenger <amoswenger@gmail.com> | 2022-07-24 10:37:36 +0200 |
| commit | 9cf485c3db80788bbc6f7931dd163761cdfe81f5 (patch) | |
| tree | 615deebc1d56033b025231235b18fd0a7ece789a /src/bootstrap | |
| parent | 0f2266d3cca6ea6bae5ecf271174a0fed0d89546 (diff) | |
Add check step, stuck on 'no output generated for libgoto_def-hash rmeta'
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/builder.rs | 1 | ||||
| -rw-r--r-- | src/bootstrap/check.rs | 59 |
2 files changed, 60 insertions, 0 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index dee6228fe1a..74768c8e59e 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -621,6 +621,7 @@ impl<'a> Builder<'a> { check::Clippy, check::Miri, check::Rls, + check::RustAnalyzer, check::Rustfmt, check::Bootstrap ), diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs index 9196b78c513..73de0627c4d 100644 --- a/src/bootstrap/check.rs +++ b/src/bootstrap/check.rs @@ -301,6 +301,65 @@ impl Step for CodegenBackend { } } +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +pub struct RustAnalyzer { + pub target: TargetSelection, +} + +impl Step for RustAnalyzer { + type Output = (); + const ONLY_HOSTS: bool = true; + const DEFAULT: bool = true; + + fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { + run.paths(&["src/tools/rust-analyzer"]) + } + + fn make_run(run: RunConfig<'_>) { + run.builder.ensure(RustAnalyzer { target: run.target }); + } + + fn run(self, builder: &Builder<'_>) { + let compiler = builder.compiler(builder.top_stage, builder.config.build); + let target = self.target; + + builder.ensure(Std { target }); + + let mut cargo = prepare_tool_cargo( + builder, + compiler, + Mode::ToolStd, + target, + cargo_subcommand(builder.kind), + "src/tools/rust-analyzer", + SourceType::InTree, + &["rust-analyzer/in-rust-tree".to_owned()], + ); + + cargo.rustflag( + "-Zallow-features=proc_macro_internals,proc_macro_diagnostic,proc_macro_span", + ); + + // For ./x.py clippy, don't run with --all-targets because + // linting tests and benchmarks can produce very noisy results + if builder.kind != Kind::Clippy { + cargo.arg("--all-targets"); + } + + builder.info(&format!( + "Checking stage{} {} artifacts ({} -> {})", + builder.top_stage, "rust-analyzer", &compiler.host.triple, target.triple + )); + run_cargo(builder, cargo, args(builder), &stamp(builder, compiler, target), vec![], true); + + /// Cargo's output path in a given stage, compiled by a particular + /// compiler for the specified target. + fn stamp(builder: &Builder<'_>, compiler: Compiler, target: TargetSelection) -> PathBuf { + builder.cargo_out(compiler, Mode::ToolStd, target).join(".rust-analyzer-check.stamp") + } + } +} + macro_rules! tool_check_step { ($name:ident, $path:literal, $($alias:literal, )* $source_type:path $(, $default:literal )?) => { #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] |
