diff options
| author | Mark Simulacrum <mark.simulacrum@gmail.com> | 2018-03-10 07:02:17 -0700 |
|---|---|---|
| committer | Mark Simulacrum <mark.simulacrum@gmail.com> | 2018-04-03 11:39:16 -0600 |
| commit | 8fd42ec130148cb49e83028153f17dab6843966e (patch) | |
| tree | 8ee6bee1704a8a493b95e58ef8d2afe87cb4035f /src/bootstrap | |
| parent | fde70b09637c2ac50ac76c6916c42a2d1505117c (diff) | |
| download | rust-8fd42ec130148cb49e83028153f17dab6843966e.tar.gz rust-8fd42ec130148cb49e83028153f17dab6843966e.zip | |
Extract default Config into function
Will permit creating Config in tests without having to parse a toml file.
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/config.rs | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index 8df5f406619..0848590a9bc 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -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; @@ -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; @@ -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); @@ -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); |
