From b1590b1dca53952f38d06f3f9142d9d59a302381 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sat, 30 Dec 2023 14:33:04 -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 baa7f79..372c73c 100644 --- a/build.rs +++ b/build.rs @@ -1,8 +1,9 @@ #![allow(clippy::option_if_let_else)] use std::env; +use std::ffi::OsString; use std::path::Path; -use std::process::{Command, ExitStatus, Stdio}; +use std::process::{self, Command, ExitStatus, Stdio}; use std::str; #[cfg(all(feature = "backtrace", not(feature = "std")))] @@ -66,8 +67,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. @@ -115,3 +116,13 @@ fn rustc_minor_version() -> Option { } pieces.next()?.parse().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); + }) +}