Skip to content

Commit 8fd42ec

Browse files
Extract default Config into function
Will permit creating Config in tests without having to parse a toml file.
1 parent fde70b0 commit 8fd42ec

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

src/bootstrap/config.rs

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -318,11 +318,8 @@ struct TomlTarget {
318318
}
319319

320320
impl Config {
321-
pub fn parse(args: &[String]) -> Config {
322-
let flags = Flags::parse(&args);
323-
let file = flags.config.clone();
321+
pub fn default_opts() -> Config {
324322
let mut config = Config::default();
325-
config.exclude = flags.exclude;
326323
config.llvm_enabled = true;
327324
config.llvm_optimize = true;
328325
config.llvm_version_check = true;
@@ -342,11 +339,26 @@ impl Config {
342339
config.rust_codegen_backends = vec![INTERNER.intern_str("llvm")];
343340
config.rust_codegen_backends_dir = "codegen-backends".to_owned();
344341

342+
// set by bootstrap.py
343+
config.src = env::var_os("SRC").map(PathBuf::from).expect("'SRC' to be set");
344+
config.build = INTERNER.intern_str(&env::var("BUILD").expect("'BUILD' to be set"));
345+
config.out = env::var_os("BUILD_DIR").map(PathBuf::from).expect("'BUILD_DIR' set");
346+
347+
let stage0_root = config.out.join(&config.build).join("stage0/bin");
348+
config.initial_rustc = stage0_root.join(exe("rustc", &config.build));
349+
config.initial_cargo = stage0_root.join(exe("cargo", &config.build));
350+
351+
config
352+
}
353+
354+
pub fn parse(args: &[String]) -> Config {
355+
let flags = Flags::parse(&args);
356+
let file = flags.config.clone();
357+
let mut config = Config::default_opts();
358+
config.exclude = flags.exclude;
345359
config.rustc_error_format = flags.rustc_error_format;
346360
config.on_fail = flags.on_fail;
347361
config.stage = flags.stage;
348-
// set by bootstrap.py
349-
config.src = env::var_os("SRC").map(PathBuf::from).expect("'SRC' to be set");
350362
config.jobs = flags.jobs;
351363
config.cmd = flags.cmd;
352364
config.incremental = flags.incremental;
@@ -371,7 +383,6 @@ impl Config {
371383

372384
let build = toml.build.clone().unwrap_or(Build::default());
373385
// set by bootstrap.py
374-
config.build = INTERNER.intern_str(&env::var("BUILD").unwrap());
375386
config.hosts.push(config.build.clone());
376387
for host in build.host.iter() {
377388
let host = INTERNER.intern_str(host);
@@ -539,22 +550,12 @@ impl Config {
539550
set(&mut config.rust_dist_src, t.src_tarball);
540551
}
541552

542-
let out = env::var_os("BUILD_DIR").map(PathBuf::from).expect("'BUILD_DIR' set");
543-
config.out = out.clone();
544-
545-
let stage0_root = out.join(&config.build).join("stage0/bin");
546-
config.initial_rustc = match build.rustc {
547-
Some(s) => PathBuf::from(s),
548-
None => stage0_root.join(exe("rustc", &config.build)),
549-
};
550-
config.initial_cargo = match build.cargo {
551-
Some(s) => PathBuf::from(s),
552-
None => stage0_root.join(exe("cargo", &config.build)),
553-
};
554-
555553
// Now that we've reached the end of our configuration, infer the
556554
// default values for all options that we haven't otherwise stored yet.
557555

556+
set(&mut config.initial_rustc, build.rustc.map(PathBuf::from));
557+
set(&mut config.initial_rustc, build.cargo.map(PathBuf::from));
558+
558559
let default = false;
559560
config.llvm_assertions = llvm_assertions.unwrap_or(default);
560561

0 commit comments

Comments
 (0)