From 05b8bd649f2eacbc00df31ee093609640bb121a7 Mon Sep 17 00:00:00 2001 From: onur-ozkan Date: Tue, 27 Feb 2024 21:08:47 +0300 Subject: [PATCH] save dev state Signed-off-by: onur-ozkan --- src/bootstrap/src/core/build_steps/lint.rs | 19 ++++++++++ src/bootstrap/src/core/build_steps/mod.rs | 1 + src/bootstrap/src/core/build_steps/test.rs | 41 ++++++++++++++++++++++ src/tools/build_helper/src/ci.rs | 2 +- src/tools/build_helper/src/git.rs | 26 ++++++-------- src/tools/build_helper/src/util.rs | 1 + 6 files changed, 74 insertions(+), 16 deletions(-) create mode 100644 src/bootstrap/src/core/build_steps/lint.rs diff --git a/src/bootstrap/src/core/build_steps/lint.rs b/src/bootstrap/src/core/build_steps/lint.rs new file mode 100644 index 0000000000000..eb75643a27329 --- /dev/null +++ b/src/bootstrap/src/core/build_steps/lint.rs @@ -0,0 +1,19 @@ +use crate::core::builder::Builder; +use std::path::PathBuf; + +pub fn lint(build: &Builder<'_>, paths: &[PathBuf]) { + if build.config.dry_run() { + return; + } + + let compiler = build.compiler(0, build.config.build); + + for path in paths { + let mut clippy = build.cargo_clippy_cmd(compiler); + clippy.current_dir(path); + + clippy.env("RUSTC_BOOTSTRAP", "1"); + clippy.args(["--all-targets", "--all-features", "--", "--D", "warnings"]); + build.run(&mut clippy); + } +} diff --git a/src/bootstrap/src/core/build_steps/mod.rs b/src/bootstrap/src/core/build_steps/mod.rs index 50d83789be82a..0ee35585ec28c 100644 --- a/src/bootstrap/src/core/build_steps/mod.rs +++ b/src/bootstrap/src/core/build_steps/mod.rs @@ -5,6 +5,7 @@ pub(crate) mod dist; pub(crate) mod doc; pub(crate) mod format; pub(crate) mod install; +pub(crate) mod lint; pub(crate) mod llvm; pub(crate) mod run; pub(crate) mod setup; diff --git a/src/bootstrap/src/core/build_steps/test.rs b/src/bootstrap/src/core/build_steps/test.rs index a2c6e79d5e25c..28bf9309c5e8d 100644 --- a/src/bootstrap/src/core/build_steps/test.rs +++ b/src/bootstrap/src/core/build_steps/test.rs @@ -1117,6 +1117,47 @@ HELP: to skip test's attempt to check tidiness, pass `--skip src/tools/tidy` to crate::exit!(1); } crate::core::build_steps::format::format(builder, !builder.config.cmd.bless(), &[]); + + // TODO: don't run this by default (check if clippy is enabled in the build configuration) + builder.info("lint check"); + crate::core::build_steps::lint::lint( + builder, + &[ + // builder.src.join("src/bootstrap"), + builder.src.join("src/tools/build_helper"), + builder.src.join("src/tools/build-manifest"), + builder.src.join("src/tools/bump-stage0"), + builder.src.join("src/tools/cargotest"), + builder.src.join("src/tools/collect-license-metadata"), + builder.src.join("src/tools/compiletest"), + builder.src.join("src/tools/coverage-dump"), + builder.src.join("src/tools/error_index_generator"), + builder.src.join("src/tools/expand-yaml-anchors"), + builder.src.join("src/tools/generate-copyright"), + builder.src.join("src/tools/generate-windows-sys"), + builder.src.join("src/tools/html-checker"), + builder.src.join("src/tools/jsondocck"), + builder.src.join("src/tools/jsondoclint"), + builder.src.join("src/tools/linkchecker"), + builder.src.join("src/tools/lint-docs"), + builder.src.join("src/tools/lld-wrapper"), + builder.src.join("src/tools/miropt-test-tools"), + builder.src.join("src/tools/opt-dist"), + builder.src.join("src/tools/remote-test-client"), + builder.src.join("src/tools/remote-test-server"), + builder.src.join("src/tools/replace-version-placeholder"), + builder.src.join("src/tools/rust-demangler"), + builder.src.join("src/tools/rust-installer"), + builder.src.join("src/tools/rustbook"), + builder.src.join("src/tools/rustdoc-gui-test"), + builder.src.join("src/tools/rustdoc-themes"), + builder.src.join("src/tools/suggest-tests"), + builder.src.join("src/tools/tier-check"), + builder.src.join("src/tools/unicode-table-generator"), + builder.src.join("src/tools/unstable-book-gen"), + builder.src.join("src/tools/x"), + ], + ); } builder.info("tidy check"); diff --git a/src/tools/build_helper/src/ci.rs b/src/tools/build_helper/src/ci.rs index 09489b0d9b7da..cdd8c809015cf 100644 --- a/src/tools/build_helper/src/ci.rs +++ b/src/tools/build_helper/src/ci.rs @@ -30,7 +30,7 @@ impl CiEnv { // The explicit `TERM=xterm` environment is needed for // `--color always` to actually work. This env var was lost when // compiling through the Makefile. Very strange. - cmd.env("TERM", "xterm").args(&["--color", "always"]); + cmd.env("TERM", "xterm").args(["--color", "always"]); } } } diff --git a/src/tools/build_helper/src/git.rs b/src/tools/build_helper/src/git.rs index b91dc38e9248f..96983eed86fa0 100644 --- a/src/tools/build_helper/src/git.rs +++ b/src/tools/build_helper/src/git.rs @@ -21,7 +21,7 @@ fn output_result(cmd: &mut Command) -> Result { String::from_utf8(output.stderr).map_err(|err| format!("{err:?}"))? )); } - Ok(String::from_utf8(output.stdout).map_err(|err| format!("{err:?}"))?) + String::from_utf8(output.stdout).map_err(|err| format!("{err:?}")) } /// Finds the remote for rust-lang/rust. @@ -64,18 +64,14 @@ pub fn rev_exists(rev: &str, git_dir: Option<&Path>) -> Result { match output.status.code() { Some(0) => Ok(true), Some(128) => Ok(false), - None => { - return Err(format!( - "git didn't exit properly: {}", - String::from_utf8(output.stderr).map_err(|err| format!("{err:?}"))? - )); - } - Some(code) => { - return Err(format!( - "git command exited with status code: {code}: {}", - String::from_utf8(output.stderr).map_err(|err| format!("{err:?}"))? - )); - } + None => Err(format!( + "git didn't exit properly: {}", + String::from_utf8(output.stderr).map_err(|err| format!("{err:?}"))? + )), + Some(code) => Err(format!( + "git command exited with status code: {code}: {}", + String::from_utf8(output.stderr).map_err(|err| format!("{err:?}"))? + )), } } @@ -96,7 +92,7 @@ pub fn updated_master_branch( } } - Err(format!("Cannot find any suitable upstream master branch")) + Err("Cannot find any suitable upstream master branch".to_string()) } pub fn get_git_merge_base( @@ -117,7 +113,7 @@ pub fn get_git_merge_base( pub fn get_git_modified_files( config: &GitConfig<'_>, git_dir: Option<&Path>, - extensions: &Vec<&str>, + extensions: &[&str], ) -> Result>, String> { let merge_base = get_git_merge_base(config, git_dir)?; diff --git a/src/tools/build_helper/src/util.rs b/src/tools/build_helper/src/util.rs index 5801a8648f227..4af701836feca 100644 --- a/src/tools/build_helper/src/util.rs +++ b/src/tools/build_helper/src/util.rs @@ -27,6 +27,7 @@ pub fn fail(s: &str) -> ! { detail_exit(1, cfg!(test)); } +#[allow(clippy::result_unit_err)] pub fn try_run(cmd: &mut Command, print_cmd_on_fail: bool) -> Result<(), ()> { let status = match cmd.status() { Ok(status) => status,