Auto merge of #45177 - oli-obk:clippy, r=alexcrichton
Enable building clippy in CI r? @alexcrichton As discussed at Rustfest. Measured additional time is 4 minutes on my machine if no dependencies are shared with other tools. In reality most dependencies are shared (especially the slow to compile ones like serde). cc @Manishearth Does not run clippy's test suite, since a) it is nontrivial in the rustc build system b) it breaks more frequently but the breakage is negligible If clippy breaks, the procedure to follow is documented under https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#external-dependencies
This commit is contained in:
commit
7778906bee
4 changed files with 12 additions and 7 deletions
|
@ -364,6 +364,7 @@ impl Step for Miri {
|
|||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
||||
pub struct Clippy {
|
||||
stage: u32,
|
||||
host: Interned<String>,
|
||||
}
|
||||
|
||||
|
@ -378,6 +379,7 @@ impl Step for Clippy {
|
|||
|
||||
fn make_run(run: RunConfig) {
|
||||
run.builder.ensure(Clippy {
|
||||
stage: run.builder.top_stage,
|
||||
host: run.target,
|
||||
});
|
||||
}
|
||||
|
@ -385,10 +387,11 @@ impl Step for Clippy {
|
|||
/// Runs `cargo test` for clippy.
|
||||
fn run(self, builder: &Builder) {
|
||||
let build = builder.build;
|
||||
let stage = self.stage;
|
||||
let host = self.host;
|
||||
let compiler = builder.compiler(1, host);
|
||||
let compiler = builder.compiler(stage, host);
|
||||
|
||||
let _clippy = builder.ensure(tool::Clippy { compiler, target: self.host });
|
||||
let clippy = builder.ensure(tool::Clippy { compiler, target: self.host });
|
||||
let mut cargo = builder.cargo(compiler, Mode::Tool, host, "test");
|
||||
cargo.arg("--manifest-path").arg(build.src.join("src/tools/clippy/Cargo.toml"));
|
||||
|
||||
|
@ -396,6 +399,8 @@ impl Step for Clippy {
|
|||
cargo.env("RUSTC_NO_PREFER_DYNAMIC", "1");
|
||||
// clippy tests need to know about the stage sysroot
|
||||
cargo.env("SYSROOT", builder.sysroot(compiler));
|
||||
// clippy tests need to find the driver
|
||||
cargo.env("CLIPPY_DRIVER_PATH", clippy);
|
||||
|
||||
builder.add_rustc_lib_path(compiler, &mut cargo);
|
||||
|
||||
|
|
|
@ -387,7 +387,7 @@ pub struct Clippy {
|
|||
|
||||
impl Step for Clippy {
|
||||
type Output = PathBuf;
|
||||
const DEFAULT: bool = false;
|
||||
const DEFAULT: bool = true;
|
||||
const ONLY_HOSTS: bool = true;
|
||||
|
||||
fn should_run(run: ShouldRun) -> ShouldRun {
|
||||
|
@ -411,7 +411,7 @@ impl Step for Clippy {
|
|||
builder.ensure(ToolBuild {
|
||||
compiler: self.compiler,
|
||||
target: self.target,
|
||||
tool: "clippy",
|
||||
tool: "clippy-driver",
|
||||
mode: Mode::Librustc,
|
||||
path: "src/tools/clippy",
|
||||
expectation: builder.build.config.toolstate.clippy.passes(ToolState::Compiling),
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 25444585592f5da648edd5317fcdd21f2db8bb64
|
||||
Subproject commit b62b1b68edcdf23a70cb12f31403c80e97f13634
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
# There are three states a tool can be in:
|
||||
# 1. Broken: The tool doesn't build
|
||||
# 2. Building: The tool builds but its tests are failing
|
||||
# 2. Compiling: The tool builds but its tests are failing
|
||||
# 3. Testing: The tool builds and its tests are passing
|
||||
#
|
||||
# In the future there will be further states like "Distributing", which
|
||||
|
@ -26,7 +26,7 @@
|
|||
miri = "Broken"
|
||||
|
||||
# ping @Manishearth @llogiq @mcarton @oli-obk
|
||||
clippy = "Broken"
|
||||
clippy = "Compiling"
|
||||
|
||||
# ping @nrc
|
||||
rls = "Testing"
|
||||
|
|
Loading…
Reference in a new issue