Skip to content

Commit 9662ff8

Browse files
committed
more refactor
1 parent 7cf54dc commit 9662ff8

File tree

1 file changed

+54
-70
lines changed

1 file changed

+54
-70
lines changed

src/bootstrap/src/core/config/config.rs

Lines changed: 54 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ impl Config {
509509
// TOML values by accident instead, because flags have higher priority.
510510
let Build {
511511
description: build_description,
512-
build: mut build_build,
512+
build: build_build,
513513
host: build_host,
514514
target: build_target,
515515
build_dir: build_build_dir,
@@ -556,7 +556,7 @@ impl Config {
556556
metrics: _,
557557
android_ndk: build_android_ndk,
558558
optimized_compiler_builtins: build_optimized_compiler_builtins,
559-
jobs: mut build_jobs,
559+
jobs: build_jobs,
560560
compiletest_diff_tool: build_compiletest_diff_tool,
561561
compiletest_use_stage0_libtest: build_compiletest_use_stage0_libtest,
562562
tidy_extra_checks: build_tidy_extra_checks,
@@ -811,21 +811,59 @@ impl Config {
811811
let rust_codegen_backends = rust_codegen_backends_
812812
.map(|backends| parse_codegen_backends(backends, "rust"))
813813
.unwrap_or(vec![CodegenBackendKind::Llvm]);
814-
815-
let mut ccache = None;
816-
let mut submodules = None;
817-
let mut target_config = HashMap::new();
818-
let mut download_rustc_commit = None;
819814
let deny_warnings = match flags_warnings {
820815
Warnings::Deny => true,
821816
Warnings::Warn => false,
822817
Warnings::Default => rust_deny_warnings.unwrap_or(true),
823818
};
824-
let mut llvm_assertions = false;
819+
let ccache = match build_ccache {
820+
Some(StringOrBool::String(s)) => Some(s),
821+
Some(StringOrBool::Bool(true)) => Some("ccache".to_string()),
822+
_ => None,
823+
};
824+
825+
if rust_optimize_.as_ref().is_some_and(|v| matches!(v, RustOptimize::Bool(false))) {
826+
eprintln!(
827+
"WARNING: setting `optimize` to `false` is known to cause errors and \
828+
should be considered unsupported. Refer to `bootstrap.example.toml` \
829+
for more details."
830+
);
831+
}
832+
let rust_codegen_units = rust_codegen_units_.map(threads_from_config);
833+
let rust_codegen_units_std = rust_codegen_units_std_.map(threads_from_config);
834+
let rust_optimize = rust_optimize_.unwrap_or(RustOptimize::Bool(true));
835+
let gcc_ci_mode = match gcc_download_ci_gcc {
836+
Some(value) => match value {
837+
true => GccCiMode::DownloadFromCi,
838+
false => GccCiMode::BuildLocally,
839+
},
840+
None => GccCiMode::default(),
841+
};
842+
let jobs = Some(threads_from_config(flags_jobs.or(build_jobs).unwrap_or(0)));
843+
let host_target = flags_build
844+
.or(build_build)
845+
.map(|build| TargetSelection::from_user(&build))
846+
.unwrap_or_else(get_host_target);
847+
848+
let submodules = build_submodules;
849+
let llvm_assertions = llvm_assertions_.unwrap_or(false);
850+
let compiletest_diff_tool = build_compiletest_diff_tool;
851+
let compiletest_use_stage0_libtest = build_compiletest_use_stage0_libtest.unwrap_or(true);
852+
let tidy_extra_checks = build_tidy_extra_checks;
853+
let explicit_stage_from_config = build_test_stage.is_some()
854+
|| build_build_stage.is_some()
855+
|| build_doc_stage.is_some()
856+
|| build_dist_stage.is_some()
857+
|| build_install_stage.is_some()
858+
|| build_check_stage.is_some()
859+
|| build_bench_stage.is_some();
860+
let description = build_description;
861+
862+
let mut target_config = HashMap::new();
863+
let mut download_rustc_commit = None;
825864
let llvm_link_shared = Cell::default();
826865
let mut llvm_from_ci = false;
827866
let mut lld_enabled = false;
828-
let mut host_target = get_host_target();
829867
let mut channel = "dev".to_string();
830868
let mut out = PathBuf::from("build");
831869
let mut rust_info = GitInfo::Absent;
@@ -840,9 +878,6 @@ impl Config {
840878
build_cargo = build_cargo.take().or(std::env::var_os("CARGO").map(|p| p.into()));
841879
}
842880

843-
build_jobs = flags_jobs.or(build_jobs);
844-
build_build = flags_build.or(build_build);
845-
846881
let build_dir_ = flags_build_dir.or(build_build_dir.map(PathBuf::from));
847882
let host_ = if let Some(TargetSelectionList(hosts)) = flags_host {
848883
Some(hosts)
@@ -886,6 +921,13 @@ impl Config {
886921
.to_path_buf();
887922
}
888923

924+
#[cfg(feature = "tracing")]
925+
span!(
926+
target: "CONFIG_HANDLING",
927+
tracing::Level::TRACE,
928+
"normalizing and combining `flag.skip`/`flag.exclude` paths",
929+
"config.skip" = ?skip,
930+
);
889931
let skip = paths_
890932
.into_iter()
891933
.map(|p| {
@@ -900,19 +942,6 @@ impl Config {
900942
})
901943
.collect();
902944

903-
#[cfg(feature = "tracing")]
904-
span!(
905-
target: "CONFIG_HANDLING",
906-
tracing::Level::TRACE,
907-
"normalizing and combining `flag.skip`/`flag.exclude` paths",
908-
"config.skip" = ?skip,
909-
);
910-
911-
let jobs = Some(threads_from_config(build_jobs.unwrap_or(0)));
912-
if let Some(build) = build_build {
913-
host_target = TargetSelection::from_user(&build);
914-
}
915-
916945
set(&mut out, build_dir_);
917946
// NOTE: Bootstrap spawns various commands with different working directories.
918947
// To avoid writing to random places on the file system, `config.out` needs to be an absolute path.
@@ -1002,10 +1031,6 @@ impl Config {
10021031
hosts.clone()
10031032
};
10041033

1005-
submodules = build_submodules;
1006-
1007-
llvm_assertions = llvm_assertions_.unwrap_or(false);
1008-
10091034
let file_content = t!(fs::read_to_string(src.join("src/ci/channel")));
10101035
let ci_channel = file_content.trim_end();
10111036

@@ -1160,19 +1185,6 @@ impl Config {
11601185
}
11611186
}
11621187

1163-
if rust_optimize_.as_ref().is_some_and(|v| matches!(v, RustOptimize::Bool(false))) {
1164-
eprintln!(
1165-
"WARNING: setting `optimize` to `false` is known to cause errors and \
1166-
should be considered unsupported. Refer to `bootstrap.example.toml` \
1167-
for more details."
1168-
);
1169-
}
1170-
1171-
let rust_codegen_units = rust_codegen_units_.map(threads_from_config);
1172-
let rust_codegen_units_std = rust_codegen_units_std_.map(threads_from_config);
1173-
1174-
let rust_optimize = rust_optimize_.unwrap_or(RustOptimize::Bool(true));
1175-
11761188
// We make `x86_64-unknown-linux-gnu` use the self-contained linker by default, so we will
11771189
// build our internal lld and use it as the default linker, by setting the `rust.lld` config
11781190
// to true by default:
@@ -1198,8 +1210,6 @@ impl Config {
11981210
set(&mut lld_enabled, rust_lld_enabled);
11991211
}
12001212

1201-
let description = build_description;
1202-
12031213
// We need to override `rust.channel` if it's manually specified when using the CI rustc.
12041214
// This is because if the compiler uses a different channel than the one specified in bootstrap.toml,
12051215
// tests may fail due to using a different channel than the one used by the compiler during tests.
@@ -1298,22 +1308,6 @@ impl Config {
12981308
llvm_link_shared.set(Some(true));
12991309
}
13001310

1301-
let gcc_ci_mode = match gcc_download_ci_gcc {
1302-
Some(value) => match value {
1303-
true => GccCiMode::DownloadFromCi,
1304-
false => GccCiMode::BuildLocally,
1305-
},
1306-
None => GccCiMode::default(),
1307-
};
1308-
1309-
match build_ccache {
1310-
Some(StringOrBool::String(ref s)) => ccache = Some(s.to_string()),
1311-
Some(StringOrBool::Bool(true)) => {
1312-
ccache = Some("ccache".to_string());
1313-
}
1314-
Some(StringOrBool::Bool(false)) | None => {}
1315-
}
1316-
13171311
if llvm_from_ci {
13181312
let triple = &host_target.triple;
13191313
let dwn_ctx = DownloadContext::new(
@@ -1403,18 +1397,8 @@ impl Config {
14031397

14041398
let optimized_compiler_builtins =
14051399
build_optimized_compiler_builtins.unwrap_or(channel != "dev");
1406-
let compiletest_diff_tool = build_compiletest_diff_tool;
1407-
let compiletest_use_stage0_libtest = build_compiletest_use_stage0_libtest.unwrap_or(true);
1408-
let tidy_extra_checks = build_tidy_extra_checks;
14091400

14101401
let download_rustc = download_rustc_commit.is_some();
1411-
let explicit_stage_from_config = build_test_stage.is_some()
1412-
|| build_build_stage.is_some()
1413-
|| build_doc_stage.is_some()
1414-
|| build_dist_stage.is_some()
1415-
|| build_install_stage.is_some()
1416-
|| build_check_stage.is_some()
1417-
|| build_bench_stage.is_some();
14181402

14191403
let stage = match cmd {
14201404
Subcommand::Check { .. } => flags_stage.or(build_check_stage).unwrap_or(1),

0 commit comments

Comments
 (0)