From 9b7356fd4398400272909aed007859392e2fa909 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sat, 30 Dec 2023 13:05:16 -0800 Subject: [PATCH] Require cargo promised environment variables to be present --- build.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/build.rs b/build.rs index 993194d..ad8eb0b 100644 --- a/build.rs +++ b/build.rs @@ -1,8 +1,9 @@ #![allow(clippy::needless_raw_string_hashes)] use std::env; +use std::ffi::OsString; use std::path::Path; -use std::process::{Command, ExitStatus, Stdio}; +use std::process::{self, Command, ExitStatus, Stdio}; fn main() { println!("cargo:rerun-if-env-changed=RUSTC_BOOTSTRAP"); @@ -25,8 +26,8 @@ fn compile_probe() -> Option { return None; } - let rustc = env::var_os("RUSTC")?; - let out_dir = env::var_os("OUT_DIR")?; + let rustc = cargo_env_var("RUSTC"); + let out_dir = cargo_env_var("OUT_DIR"); let probefile = Path::new("build").join("probe.rs"); // Make sure to pick up Cargo rustc configuration. @@ -63,3 +64,13 @@ fn compile_probe() -> Option { cmd.status().ok() } + +fn cargo_env_var(key: &str) -> OsString { + env::var_os(key).unwrap_or_else(|| { + eprintln!( + "Environment variable ${} is not set during execution of build script", + key, + ); + process::exit(1); + }) +}