mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-21 22:34:05 +00:00
bootstrap: allow setting --jobs
in config.toml
This commit is contained in:
parent
e92993dbb4
commit
65458aed68
@ -414,6 +414,11 @@
|
||||
# Specify the location of the Android NDK. Used when targeting Android.
|
||||
#android-ndk = "/path/to/android-ndk-r26d"
|
||||
|
||||
# Number of parallel jobs to be used for building and testing. If set to `0` or
|
||||
# omitted, it will be automatically determined. This is the `-j`/`--jobs` flag
|
||||
# passed to cargo invocations.
|
||||
#jobs = 0
|
||||
|
||||
# =============================================================================
|
||||
# General install configuration options
|
||||
# =============================================================================
|
||||
|
@ -891,6 +891,7 @@ define_config! {
|
||||
metrics: Option<bool> = "metrics",
|
||||
android_ndk: Option<PathBuf> = "android-ndk",
|
||||
optimized_compiler_builtins: Option<bool> = "optimized-compiler-builtins",
|
||||
jobs: Option<u32> = "jobs",
|
||||
}
|
||||
}
|
||||
|
||||
@ -1289,7 +1290,6 @@ impl Config {
|
||||
config.rustc_error_format = flags.rustc_error_format;
|
||||
config.json_output = flags.json_output;
|
||||
config.on_fail = flags.on_fail;
|
||||
config.jobs = Some(threads_from_config(flags.jobs as u32));
|
||||
config.cmd = flags.cmd;
|
||||
config.incremental = flags.incremental;
|
||||
config.dry_run = if flags.dry_run { DryRun::UserSelected } else { DryRun::Disabled };
|
||||
@ -1511,8 +1511,11 @@ impl Config {
|
||||
metrics: _,
|
||||
android_ndk,
|
||||
optimized_compiler_builtins,
|
||||
jobs,
|
||||
} = toml.build.unwrap_or_default();
|
||||
|
||||
config.jobs = Some(threads_from_config(flags.jobs.unwrap_or(jobs.unwrap_or(0))));
|
||||
|
||||
if let Some(file_build) = build {
|
||||
config.build = TargetSelection::from_user(&file_build);
|
||||
};
|
||||
|
@ -110,11 +110,10 @@ pub struct Flags {
|
||||
short,
|
||||
long,
|
||||
value_hint = clap::ValueHint::Other,
|
||||
default_value_t = std::thread::available_parallelism().map_or(1, std::num::NonZeroUsize::get),
|
||||
value_name = "JOBS"
|
||||
)]
|
||||
/// number of jobs to run in parallel
|
||||
pub jobs: usize,
|
||||
pub jobs: Option<u32>,
|
||||
// This overrides the deny-warnings configuration option,
|
||||
// which passes -Dwarnings to the compiler invocations.
|
||||
#[arg(global = true, long)]
|
||||
|
@ -352,3 +352,61 @@ fn parse_rust_std_features_empty() {
|
||||
fn parse_rust_std_features_invalid() {
|
||||
parse("rust.std-features = \"backtrace\"");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_jobs() {
|
||||
assert_eq!(parse("build.jobs = 1").jobs, Some(1));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn jobs_precedence() {
|
||||
// `--jobs` should take precedence over using `--set build.jobs`.
|
||||
|
||||
let config = Config::parse_inner(
|
||||
Flags::parse(&[
|
||||
"check".to_owned(),
|
||||
"--config=/does/not/exist".to_owned(),
|
||||
"--jobs=67890".to_owned(),
|
||||
"--set=build.jobs=12345".to_owned(),
|
||||
]),
|
||||
|&_| toml::from_str(""),
|
||||
);
|
||||
assert_eq!(config.jobs, Some(67890));
|
||||
|
||||
// `--set build.jobs` should take precedence over `config.toml`.
|
||||
let config = Config::parse_inner(
|
||||
Flags::parse(&[
|
||||
"check".to_owned(),
|
||||
"--config=/does/not/exist".to_owned(),
|
||||
"--set=build.jobs=12345".to_owned(),
|
||||
]),
|
||||
|&_| {
|
||||
toml::from_str(
|
||||
r#"
|
||||
[build]
|
||||
jobs = 67890
|
||||
"#,
|
||||
)
|
||||
},
|
||||
);
|
||||
assert_eq!(config.jobs, Some(12345));
|
||||
|
||||
// `--jobs` > `--set build.jobs` > `config.toml`
|
||||
let config = Config::parse_inner(
|
||||
Flags::parse(&[
|
||||
"check".to_owned(),
|
||||
"--jobs=123".to_owned(),
|
||||
"--config=/does/not/exist".to_owned(),
|
||||
"--set=build.jobs=456".to_owned(),
|
||||
]),
|
||||
|&_| {
|
||||
toml::from_str(
|
||||
r#"
|
||||
[build]
|
||||
jobs = 789
|
||||
"#,
|
||||
)
|
||||
},
|
||||
);
|
||||
assert_eq!(config.jobs, Some(123));
|
||||
}
|
||||
|
@ -275,4 +275,9 @@ pub const CONFIG_CHANGE_HISTORY: &[ChangeInfo] = &[
|
||||
severity: ChangeSeverity::Info,
|
||||
summary: "New option `./x setup editor` added, replacing `./x setup vscode` and adding support for vim, emacs and helix.",
|
||||
},
|
||||
ChangeInfo {
|
||||
change_id: 131838,
|
||||
severity: ChangeSeverity::Info,
|
||||
summary: "Allow setting `--jobs` in config.toml with `build.jobs`.",
|
||||
},
|
||||
];
|
||||
|
Loading…
Reference in New Issue
Block a user