Skip to content

Commit

Permalink
Extract default Config into function
Browse files Browse the repository at this point in the history
Will permit creating Config in tests without having to parse a toml
file.
  • Loading branch information
Mark-Simulacrum committed Apr 3, 2018
1 parent fde70b0 commit 8fd42ec
Showing 1 changed file with 21 additions and 20 deletions.
41 changes: 21 additions & 20 deletions src/bootstrap/config.rs
Expand Up @@ -318,11 +318,8 @@ struct TomlTarget {
}

impl Config {
pub fn parse(args: &[String]) -> Config {
let flags = Flags::parse(&args);
let file = flags.config.clone();
pub fn default_opts() -> Config {
let mut config = Config::default();
config.exclude = flags.exclude;
config.llvm_enabled = true;
config.llvm_optimize = true;
config.llvm_version_check = true;
Expand All @@ -342,11 +339,26 @@ impl Config {
config.rust_codegen_backends = vec![INTERNER.intern_str("llvm")];
config.rust_codegen_backends_dir = "codegen-backends".to_owned();

// set by bootstrap.py
config.src = env::var_os("SRC").map(PathBuf::from).expect("'SRC' to be set");
config.build = INTERNER.intern_str(&env::var("BUILD").expect("'BUILD' to be set"));
config.out = env::var_os("BUILD_DIR").map(PathBuf::from).expect("'BUILD_DIR' set");

let stage0_root = config.out.join(&config.build).join("stage0/bin");
config.initial_rustc = stage0_root.join(exe("rustc", &config.build));
config.initial_cargo = stage0_root.join(exe("cargo", &config.build));

config
}

pub fn parse(args: &[String]) -> Config {
let flags = Flags::parse(&args);
let file = flags.config.clone();
let mut config = Config::default_opts();
config.exclude = flags.exclude;
config.rustc_error_format = flags.rustc_error_format;
config.on_fail = flags.on_fail;
config.stage = flags.stage;
// set by bootstrap.py
config.src = env::var_os("SRC").map(PathBuf::from).expect("'SRC' to be set");
config.jobs = flags.jobs;
config.cmd = flags.cmd;
config.incremental = flags.incremental;
Expand All @@ -371,7 +383,6 @@ impl Config {

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

let out = env::var_os("BUILD_DIR").map(PathBuf::from).expect("'BUILD_DIR' set");
config.out = out.clone();

let stage0_root = out.join(&config.build).join("stage0/bin");
config.initial_rustc = match build.rustc {
Some(s) => PathBuf::from(s),
None => stage0_root.join(exe("rustc", &config.build)),
};
config.initial_cargo = match build.cargo {
Some(s) => PathBuf::from(s),
None => stage0_root.join(exe("cargo", &config.build)),
};

// Now that we've reached the end of our configuration, infer the
// default values for all options that we haven't otherwise stored yet.

set(&mut config.initial_rustc, build.rustc.map(PathBuf::from));
set(&mut config.initial_rustc, build.cargo.map(PathBuf::from));

let default = false;
config.llvm_assertions = llvm_assertions.unwrap_or(default);

Expand Down

0 comments on commit 8fd42ec

Please sign in to comment.