Auto merge of #43886 - oli-obk:clippy, r=nrc

Add clippy as a submodule

~~This builds clippy as part of `./x.py build` (locally and in CI).~~

This allows building clippy with `./x.py build src/tools/clippy`

~~Needs https://github.com/nrc/dev-tools-team/issues/18#issuecomment-322456461 to be resolved before it can be merged.~~ Contributers can simply open a PR to clippy and point the submodule at the `pull/$pr_number/head` branch.

This does **not** build clippy or test the clippy test suite at all as per https://github.com/nrc/dev-tools-team/issues/18#issuecomment-321411418

r? @nrc

cc @Manishearth @llogiq @mcarton @alexcrichton
This commit is contained in:
bors 2017-09-02 17:17:14 +00:00
commit 204c0a47e7
6 changed files with 70 additions and 1 deletions

3
.gitmodules vendored
View File

@ -33,3 +33,6 @@
[submodule "src/libcompiler_builtins"] [submodule "src/libcompiler_builtins"]
path = src/libcompiler_builtins path = src/libcompiler_builtins
url = https://github.com/rust-lang-nursery/compiler-builtins url = https://github.com/rust-lang-nursery/compiler-builtins
[submodule "src/tools/clippy"]
path = src/tools/clippy
url = https://github.com/rust-lang-nursery/rust-clippy.git

View File

@ -298,6 +298,32 @@ Speaking of tests, Rust has a comprehensive test suite. More information about
it can be found it can be found
[here](https://github.com/rust-lang/rust-wiki-backup/blob/master/Note-testsuite.md). [here](https://github.com/rust-lang/rust-wiki-backup/blob/master/Note-testsuite.md).
### External Dependencies
Currently building Rust will also build the following external projects:
* [clippy](https://github.com/rust-lang-nursery/rust-clippy)
If your changes break one of these projects, you need to fix them by opening
a pull request against the broken project. When you have opened a pull request,
you can point the submodule at your pull request by calling
```
git fetch origin pull/$id_of_your_pr/head:my_pr
git checkout my_pr
```
within the submodule's directory. Don't forget to also add your changes with
```
git add path/to/submodule
```
outside the submodule.
It can also be more convenient during development to set `submodules = false`
in the `config.toml` to prevent `x.py` from resetting to the original branch.
## Writing Documentation ## Writing Documentation
Documentation improvements are very welcome. The source of `doc.rust-lang.org` Documentation improvements are very welcome. The source of `doc.rust-lang.org`

View File

@ -248,7 +248,7 @@ impl<'a> Builder<'a> {
compile::StartupObjects, tool::BuildManifest, tool::Rustbook, tool::ErrorIndex, compile::StartupObjects, tool::BuildManifest, tool::Rustbook, tool::ErrorIndex,
tool::UnstableBookGen, tool::Tidy, tool::Linkchecker, tool::CargoTest, tool::UnstableBookGen, tool::Tidy, tool::Linkchecker, tool::CargoTest,
tool::Compiletest, tool::RemoteTestServer, tool::RemoteTestClient, tool::Compiletest, tool::RemoteTestServer, tool::RemoteTestClient,
tool::RustInstaller, tool::Cargo, tool::Rls, tool::Rustdoc, tool::RustInstaller, tool::Cargo, tool::Rls, tool::Rustdoc, tool::Clippy,
native::Llvm), native::Llvm),
Kind::Test => describe!(check::Tidy, check::Bootstrap, check::DefaultCompiletest, Kind::Test => describe!(check::Tidy, check::Bootstrap, check::DefaultCompiletest,
check::HostCompiletest, check::Crate, check::CrateLibrustc, check::Linkcheck, check::HostCompiletest, check::Crate, check::CrateLibrustc, check::Linkcheck,

View File

@ -340,6 +340,44 @@ impl Step for Cargo {
} }
} }
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct Clippy {
pub compiler: Compiler,
pub target: Interned<String>,
}
impl Step for Clippy {
type Output = PathBuf;
const DEFAULT: bool = false;
const ONLY_HOSTS: bool = true;
fn should_run(run: ShouldRun) -> ShouldRun {
run.path("src/tools/clippy")
}
fn make_run(run: RunConfig) {
run.builder.ensure(Clippy {
compiler: run.builder.compiler(run.builder.top_stage, run.builder.build.build),
target: run.target,
});
}
fn run(self, builder: &Builder) -> PathBuf {
// Clippy depends on procedural macros (serde), which requires a full host
// compiler to be available, so we need to depend on that.
builder.ensure(compile::Rustc {
compiler: self.compiler,
target: builder.build.build,
});
builder.ensure(ToolBuild {
compiler: self.compiler,
target: self.target,
tool: "clippy",
mode: Mode::Librustc,
})
}
}
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct Rls { pub struct Rls {
pub compiler: Compiler, pub compiler: Compiler,

1
src/tools/clippy Submodule

@ -0,0 +1 @@
Subproject commit 4402bc70a3b175c38994bbc802bee41ddc59165b

View File

@ -62,6 +62,7 @@ fn filter_dirs(path: &Path) -> bool {
"src/rt/hoedown", "src/rt/hoedown",
"src/tools/cargo", "src/tools/cargo",
"src/tools/rls", "src/tools/rls",
"src/tools/clippy",
"src/tools/rust-installer", "src/tools/rust-installer",
]; ];
skip.iter().any(|p| path.ends_with(p)) skip.iter().any(|p| path.ends_with(p))