@@ -12,6 +12,7 @@ pub mod rustc;
1212pub mod rustdoc;
1313
1414use std:: env;
15+ use std:: ffi:: OsString ;
1516use std:: fs;
1617use std:: io;
1718use std:: path:: { Path , PathBuf } ;
@@ -30,14 +31,28 @@ pub use run::{run, run_fail};
3031pub use rustc:: { aux_build, rustc, Rustc } ;
3132pub use rustdoc:: { bare_rustdoc, rustdoc, Rustdoc } ;
3233
34+ pub fn env_var ( name : & str ) -> String {
35+ match env:: var ( name) {
36+ Ok ( v) => v,
37+ Err ( err) => panic ! ( "failed to retrieve environment variable {name:?}: {err:?}" ) ,
38+ }
39+ }
40+
41+ pub fn env_var_os ( name : & str ) -> OsString {
42+ match env:: var_os ( name) {
43+ Some ( v) => v,
44+ None => panic ! ( "failed to retrieve environment variable {name:?}" ) ,
45+ }
46+ }
47+
3348/// Path of `TMPDIR` (a temporary build directory, not under `/tmp`).
3449pub fn tmp_dir ( ) -> PathBuf {
35- env :: var_os ( "TMPDIR" ) . unwrap ( ) . into ( )
50+ env_var_os ( "TMPDIR" ) . into ( )
3651}
3752
3853/// `TARGET`
3954pub fn target ( ) -> String {
40- env :: var ( "TARGET" ) . unwrap ( )
55+ env_var ( "TARGET" )
4156}
4257
4358/// Check if target is windows-like.
@@ -62,7 +77,7 @@ pub fn static_lib(name: &str) -> PathBuf {
6277}
6378
6479pub fn python_command ( ) -> Command {
65- let python_path = std :: env :: var ( "PYTHON" ) . expect ( "PYTHON environment variable does not exist ") ;
80+ let python_path = env_var ( "PYTHON" ) ;
6681 Command :: new ( python_path)
6782}
6883
@@ -73,7 +88,7 @@ pub fn htmldocck() -> Command {
7388}
7489
7590pub fn source_path ( ) -> PathBuf {
76- std :: env :: var ( "S" ) . expect ( "S variable does not exist ") . into ( )
91+ env_var ( "S" ) . into ( )
7792}
7893
7994/// Construct the static library name based on the platform.
@@ -197,12 +212,12 @@ fn handle_failed_output(cmd: &Command, output: Output, caller_line_number: u32)
197212
198213/// Set the runtime library path as needed for running the host rustc/rustdoc/etc.
199214pub fn set_host_rpath ( cmd : & mut Command ) {
200- let ld_lib_path_envvar = env :: var ( "LD_LIB_PATH_ENVVAR" ) . unwrap ( ) ;
215+ let ld_lib_path_envvar = env_var ( "LD_LIB_PATH_ENVVAR" ) ;
201216 cmd. env ( & ld_lib_path_envvar, {
202217 let mut paths = vec ! [ ] ;
203- paths. push ( PathBuf :: from ( env :: var ( "TMPDIR" ) . unwrap ( ) ) ) ;
204- paths. push ( PathBuf :: from ( env :: var ( "HOST_RPATH_DIR" ) . unwrap ( ) ) ) ;
205- for p in env:: split_paths ( & env :: var ( & ld_lib_path_envvar) . unwrap ( ) ) {
218+ paths. push ( PathBuf :: from ( env_var ( "TMPDIR" ) ) ) ;
219+ paths. push ( PathBuf :: from ( env_var ( "HOST_RPATH_DIR" ) ) ) ;
220+ for p in env:: split_paths ( & env_var ( & ld_lib_path_envvar) ) {
206221 paths. push ( p. to_path_buf ( ) ) ;
207222 }
208223 env:: join_paths ( paths. iter ( ) ) . unwrap ( )
0 commit comments