From 70d952e75123b9c0a935be77d1c58d5c1ed71af6 Mon Sep 17 00:00:00 2001 From: Matthias Krüger Date: Sun, 28 Feb 2021 02:07:01 +0100 Subject: lintcheck: more fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix a couple of issues when checking if lintcheck needed rerun after clippy binary changed. I was apparently still comparing the times wrongly, but it should be fixed™ now... I actually looked at the date of the sources.toml and not at the date of the log file! Also fix progress report counter not advancing in squential mode --- clippy_dev/src/lintcheck.rs | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'clippy_dev') diff --git a/clippy_dev/src/lintcheck.rs b/clippy_dev/src/lintcheck.rs index 622dad1740b..60e677b1e13 100644 --- a/clippy_dev/src/lintcheck.rs +++ b/clippy_dev/src/lintcheck.rs @@ -496,7 +496,7 @@ fn gather_stats(clippy_warnings: &[ClippyWarning]) -> (String, HashMap<&String, /// check if the latest modification of the logfile is older than the modification date of the /// clippy binary, if this is true, we should clean the lintchec shared target directory and recheck -fn lintcheck_needs_rerun(toml_path: &PathBuf) -> bool { +fn lintcheck_needs_rerun(lintcheck_logs_path: &PathBuf) -> bool { let clippy_modified: std::time::SystemTime = { let mut times = [CLIPPY_DRIVER_PATH, CARGO_CLIPPY_PATH].iter().map(|p| { std::fs::metadata(p) @@ -505,17 +505,17 @@ fn lintcheck_needs_rerun(toml_path: &PathBuf) -> bool { .expect("failed to get modification date") }); // the oldest modification of either of the binaries - std::cmp::min(times.next().unwrap(), times.next().unwrap()) + std::cmp::max(times.next().unwrap(), times.next().unwrap()) }; - let logs_modified: std::time::SystemTime = std::fs::metadata(toml_path) + let logs_modified: std::time::SystemTime = std::fs::metadata(lintcheck_logs_path) .expect("failed to get metadata of file") .modified() .expect("failed to get modification date"); - // if clippys modification time is smaller (older) than the logs mod time, we need to rerun - // lintcheck - clippy_modified < logs_modified + // time is represented in seconds since X + // logs_modified 2 and clippy_modified 5 means clippy binary is older and we need to recheck + logs_modified < clippy_modified } /// lintchecks `main()` function @@ -528,7 +528,7 @@ pub fn run(clap_config: &ArgMatches) { // if the clippy bin is newer than our logs, throw away target dirs to force clippy to // refresh the logs - if lintcheck_needs_rerun(&config.sources_toml_path) { + if lintcheck_needs_rerun(&config.lintcheck_results_path) { let shared_target_dir = "target/lintcheck/shared_target_dir"; match std::fs::metadata(&shared_target_dir) { Ok(metadata) => { @@ -538,8 +538,7 @@ pub fn run(clap_config: &ArgMatches) { .expect("failed to remove target/lintcheck/shared_target_dir"); } }, - Err(_) => { // dir probably does not exist, don't remove anything - }, + Err(_) => { /* dir probably does not exist, don't remove anything */ }, } } @@ -566,6 +565,8 @@ pub fn run(clap_config: &ArgMatches) { let crates = read_crates(&config.sources_toml_path); let old_stats = read_stats_from_file(&config.lintcheck_results_path); + let counter = AtomicUsize::new(1); + let clippy_warnings: Vec = if let Some(only_one_crate) = clap_config.value_of("only") { // if we don't have the specified crate in the .toml, throw an error if !crates.iter().any(|krate| { @@ -595,8 +596,6 @@ pub fn run(clap_config: &ArgMatches) { if config.max_jobs > 1 { // run parallel with rayon - let counter = AtomicUsize::new(0); - // Ask rayon for thread count. Assume that half of that is the number of physical cores // Use one target dir for each core so that we can run N clippys in parallel. // We need to use different target dirs because cargo would lock them for a single build otherwise, @@ -623,7 +622,7 @@ pub fn run(clap_config: &ArgMatches) { crates .into_iter() .map(|krate| krate.download_and_extract()) - .map(|krate| krate.run_clippy_lints(&cargo_clippy_path, &AtomicUsize::new(0), 1, num_crates)) + .map(|krate| krate.run_clippy_lints(&cargo_clippy_path, &counter, 1, num_crates)) .flatten() .collect() } -- cgit 1.4.1-3-g733a5