Give a more helpful error when running the rustc shim directly

cc https://rust-lang.zulipchat.com/#narrow/stream/326414-t-infra.2Fbootstrap/topic/Building.20.60coretests.60.20by.20hand
This commit is contained in:
jyn 2023-05-07 11:19:13 -05:00
parent 0dddad0dc5
commit 654f56e086
2 changed files with 14 additions and 4 deletions

View File

@ -19,7 +19,7 @@
use std::env; use std::env;
use std::path::PathBuf; use std::path::PathBuf;
use std::process::{Child, Command}; use std::process::{exit, Child, Command};
use std::str::FromStr; use std::str::FromStr;
use std::time::Instant; use std::time::Instant;
@ -47,7 +47,12 @@ fn main() {
} else { } else {
("RUSTC_REAL", "RUSTC_LIBDIR") ("RUSTC_REAL", "RUSTC_LIBDIR")
}; };
let stage = env::var("RUSTC_STAGE").expect("RUSTC_STAGE was not set"); let stage = env::var("RUSTC_STAGE").unwrap_or_else(|_| {
// Don't panic here; it's reasonable to try and run these shims directly. Give a helpful error instead.
eprintln!("rustc shim: fatal: RUSTC_STAGE was not set");
eprintln!("rustc shim: note: use `x.py build -vvv` to see all environment variables set by bootstrap");
exit(101);
});
let sysroot = env::var_os("RUSTC_SYSROOT").expect("RUSTC_SYSROOT was not set"); let sysroot = env::var_os("RUSTC_SYSROOT").expect("RUSTC_SYSROOT was not set");
let on_fail = env::var_os("RUSTC_ON_FAIL").map(Command::new); let on_fail = env::var_os("RUSTC_ON_FAIL").map(Command::new);

View File

@ -5,13 +5,18 @@
use std::env; use std::env;
use std::ffi::OsString; use std::ffi::OsString;
use std::path::PathBuf; use std::path::PathBuf;
use std::process::Command; use std::process::{exit, Command};
include!("../dylib_util.rs"); include!("../dylib_util.rs");
fn main() { fn main() {
let args = env::args_os().skip(1).collect::<Vec<_>>(); let args = env::args_os().skip(1).collect::<Vec<_>>();
let stage = env::var("RUSTC_STAGE").expect("RUSTC_STAGE was not set"); let stage = env::var("RUSTC_STAGE").unwrap_or_else(|_| {
// Don't panic here; it's reasonable to try and run these shims directly. Give a helpful error instead.
eprintln!("rustc shim: fatal: RUSTC_STAGE was not set");
eprintln!("rustc shim: note: use `x.py build -vvv` to see all environment variables set by bootstrap");
exit(101);
});
let rustdoc = env::var_os("RUSTDOC_REAL").expect("RUSTDOC_REAL was not set"); let rustdoc = env::var_os("RUSTDOC_REAL").expect("RUSTDOC_REAL was not set");
let libdir = env::var_os("RUSTDOC_LIBDIR").expect("RUSTDOC_LIBDIR was not set"); let libdir = env::var_os("RUSTDOC_LIBDIR").expect("RUSTDOC_LIBDIR was not set");
let sysroot = env::var_os("RUSTC_SYSROOT").expect("RUSTC_SYSROOT was not set"); let sysroot = env::var_os("RUSTC_SYSROOT").expect("RUSTC_SYSROOT was not set");