Skip to content

Commit e7342b8

Browse files
Permit constructing Build without executing
1 parent a5e56b6 commit e7342b8

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

src/bootstrap/lib.rs

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ impl Build {
326326
let rls_info = channel::GitInfo::new(&config, &src.join("src/tools/rls"));
327327
let rustfmt_info = channel::GitInfo::new(&config, &src.join("src/tools/rustfmt"));
328328

329-
Build {
329+
let mut build = Build {
330330
initial_rustc: config.initial_rustc.clone(),
331331
initial_cargo: config.initial_cargo.clone(),
332332
local_rebuild: config.local_rebuild,
@@ -357,7 +357,27 @@ impl Build {
357357
delayed_failures: RefCell::new(Vec::new()),
358358
prerelease_version: Cell::new(None),
359359
tool_artifacts: Default::default(),
360+
};
361+
362+
build.verbose("finding compilers");
363+
cc_detect::find(&mut build);
364+
build.verbose("running sanity check");
365+
sanity::check(&mut build);
366+
// If local-rust is the same major.minor as the current version, then force a local-rebuild
367+
let local_version_verbose = output(
368+
Command::new(&build.initial_rustc).arg("--version").arg("--verbose"));
369+
let local_release = local_version_verbose
370+
.lines().filter(|x| x.starts_with("release:"))
371+
.next().unwrap().trim_left_matches("release:").trim();
372+
let my_version = channel::CFG_RELEASE_NUM;
373+
if local_release.split('.').take(2).eq(my_version.split('.').take(2)) {
374+
build.verbose(&format!("auto-detected local-rebuild {}", local_release));
375+
build.local_rebuild = true;
360376
}
377+
build.verbose("learning about cargo");
378+
metadata::build(&mut build);
379+
380+
build
361381
}
362382

363383
pub fn build_triple(&self) -> &[Interned<String>] {
@@ -376,24 +396,6 @@ impl Build {
376396
return clean::clean(self, all);
377397
}
378398

379-
self.verbose("finding compilers");
380-
cc_detect::find(self);
381-
self.verbose("running sanity check");
382-
sanity::check(self);
383-
// If local-rust is the same major.minor as the current version, then force a local-rebuild
384-
let local_version_verbose = output(
385-
Command::new(&self.initial_rustc).arg("--version").arg("--verbose"));
386-
let local_release = local_version_verbose
387-
.lines().filter(|x| x.starts_with("release:"))
388-
.next().unwrap().trim_left_matches("release:").trim();
389-
let my_version = channel::CFG_RELEASE_NUM;
390-
if local_release.split('.').take(2).eq(my_version.split('.').take(2)) {
391-
self.verbose(&format!("auto-detected local-rebuild {}", local_release));
392-
self.local_rebuild = true;
393-
}
394-
self.verbose("learning about cargo");
395-
metadata::build(self);
396-
397399
let builder = builder::Builder::new(&self);
398400
if let Some(path) = builder.paths.get(0) {
399401
if path == Path::new("nonexistent/path/to/trigger/cargo/metadata") {

0 commit comments

Comments
 (0)