diff options
| author | datdenkikniet <jcdra1@gmail.com> | 2023-04-15 14:28:24 +0200 |
|---|---|---|
| committer | datdenkikniet <jcdra1@gmail.com> | 2023-04-15 14:32:32 +0200 |
| commit | feb00a9755ae8f96c8b761f288a6dad2eb41c5b1 (patch) | |
| tree | fc21d07e6934e4aa9870abc49731f6f7b50a8ea2 /xtask/src/cargo_commands.rs | |
| parent | 622a58db5a06b1c4b29d9036ffaa593edff771b2 (diff) | |
Add support for "feature mixer"
Diffstat (limited to 'xtask/src/cargo_commands.rs')
| -rw-r--r-- | xtask/src/cargo_commands.rs | 96 |
1 files changed, 61 insertions, 35 deletions
diff --git a/xtask/src/cargo_commands.rs b/xtask/src/cargo_commands.rs index ec5fcfa..9cbdaef 100644 --- a/xtask/src/cargo_commands.rs +++ b/xtask/src/cargo_commands.rs @@ -86,29 +86,42 @@ pub fn cargo<'c>( package: &'c PackageOpt, backend: Backends, ) -> Vec<FinalRunResult<'c>> { - let runner = package.packages().map(move |package| { - let target = backend.to_target(); - let features = package.extract_features(target, backend); + let runner = package + .packages() + .flat_map(|package| { + let target = backend.to_target(); + let features = package.features(target, backend, globals.partial); - let command = match operation { - BuildOrCheck::Check => CargoCommand::Check { - cargoarg, - package: Some(package), - target, - features, - mode: BuildMode::Release, - }, - BuildOrCheck::Build => CargoCommand::Build { - cargoarg, - package: Some(package), - target, - features, - mode: BuildMode::Release, - }, - }; + #[cfg(feature = "rayon")] + { + features.into_par_iter().map(move |f| (package, target, f)) + } - (globals, command, false) - }); + #[cfg(not(feature = "rayon"))] + { + features.into_iter().map(move |f| (package, target, f)) + } + }) + .map(move |(package, target, features)| { + let command = match operation { + BuildOrCheck::Check => CargoCommand::Check { + cargoarg, + package: Some(package), + target, + features, + mode: BuildMode::Release, + }, + BuildOrCheck::Build => CargoCommand::Build { + cargoarg, + package: Some(package), + target, + features, + mode: BuildMode::Release, + }, + }; + + (globals, command, false) + }); runner.run_and_coalesce() } @@ -154,21 +167,34 @@ pub fn cargo_clippy<'c>( package: &'c PackageOpt, backend: Backends, ) -> Vec<FinalRunResult<'c>> { - let runner = package.packages().map(|p| { - let target = backend.to_target(); - let features = p.extract_features(target, backend); + let runner = package + .packages() + .flat_map(|package| { + let target = backend.to_target(); + let features = package.features(target, backend, globals.partial); - ( - globals, - CargoCommand::Clippy { - cargoarg, - package: Some(p), - target, - features, - }, - false, - ) - }); + #[cfg(feature = "rayon")] + { + features.into_par_iter().map(move |f| (package, target, f)) + } + + #[cfg(not(feature = "rayon"))] + { + features.into_iter().map(move |f| (package, target, f)) + } + }) + .map(move |(package, target, features)| { + ( + globals, + CargoCommand::Clippy { + cargoarg, + package: Some(package), + target, + features, + }, + false, + ) + }); runner.run_and_coalesce() } |
