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 authored and tatref committed Mar 20, 2023
1 parent 9600b44 commit 4190d8d
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions build.rs
Original file line number Diff line number Diff line change
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 4190d8d

Please sign in to comment.