Skip to content

Commit

Permalink
Report the actual error when failing to get the rustc version
Browse files Browse the repository at this point in the history
This should help with pinpointing the issue in rust-lang/crater#663.
  • Loading branch information
bjorn3 committed Nov 11, 2022
1 parent 8b6bfd7 commit 40c1942
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions build.rs
Expand Up @@ -6,7 +6,7 @@ fn main() {
// Avoid unnecessary re-building.
println!("cargo:rerun-if-changed=build.rs");

let (rustc_minor_ver, is_nightly) = rustc_minor_nightly().expect("Failed to get rustc version");
let (rustc_minor_ver, is_nightly) = rustc_minor_nightly();
let rustc_dep_of_std = env::var("CARGO_FEATURE_RUSTC_DEP_OF_STD").is_ok();
let align_cargo_feature = env::var("CARGO_FEATURE_ALIGN").is_ok();
let const_extern_fn_cargo_feature = env::var("CARGO_FEATURE_CONST_EXTERN_FN").is_ok();
Expand Down Expand Up @@ -112,23 +112,27 @@ fn main() {
}
}

fn rustc_minor_nightly() -> Option<(u32, bool)> {
fn rustc_minor_nightly() -> (u32, bool) {
macro_rules! otry {
($e:expr) => {
match $e {
Some(e) => e,
None => return None,
None => panic!("Failed to get rustc version"),
}
};
}

let rustc = otry!(env::var_os("RUSTC"));
let output = otry!(Command::new(rustc).arg("--version").output().ok());
let output = Command::new(rustc)
.arg("--version")
.output()
.ok()
.expect("Failed to get rustc version");
let version = otry!(str::from_utf8(&output.stdout).ok());
let mut pieces = version.split('.');

if pieces.next() != Some("rustc 1") {
return None;
panic!("Failed to get rustc version");
}

let minor = pieces.next();
Expand All @@ -144,7 +148,7 @@ fn rustc_minor_nightly() -> Option<(u32, bool)> {
.unwrap_or(false);
let minor = otry!(otry!(minor).parse().ok());

Some((minor, nightly))
(minor, nightly)
}

fn which_freebsd() -> Option<i32> {
Expand Down

0 comments on commit 40c1942

Please sign in to comment.