@@ -326,13 +326,13 @@ impl Config {
326
326
// a wrapper script that sets up platform-specific prefixes.
327
327
match self . targetted_env_var ( "PKG_CONFIG_ALLOW_CROSS" ) {
328
328
// don't use pkg-config if explicitly disabled
329
- Ok ( ref val) if val == "0" => false ,
330
- Ok ( _) => true ,
331
- Err ( _ ) => {
329
+ Some ( ref val) if val == "0" => false ,
330
+ Some ( _) => true ,
331
+ None => {
332
332
// if not disabled, and pkg-config is customized,
333
333
// then assume it's prepared for cross-compilation
334
- self . targetted_env_var ( "PKG_CONFIG" ) . is_ok ( )
335
- || self . targetted_env_var ( "PKG_CONFIG_SYSROOT_DIR" ) . is_ok ( )
334
+ self . targetted_env_var ( "PKG_CONFIG" ) . is_some ( )
335
+ || self . targetted_env_var ( "PKG_CONFIG_SYSROOT_DIR" ) . is_some ( )
336
336
}
337
337
}
338
338
}
@@ -343,28 +343,23 @@ impl Config {
343
343
get_variable ( package, variable) . map_err ( |e| e. to_string ( ) )
344
344
}
345
345
346
- fn targetted_env_var ( & self , var_base : & str ) -> Result < String , env:: VarError > {
346
+ fn targetted_env_var ( & self , var_base : & str ) -> Option < OsString > {
347
+ // Typically both `TARGET` and `HOST` will be valid utf-8, so we implicitly ignore the
348
+ // possiblity of them having that failure mode.
347
349
if let Ok ( target) = env:: var ( "TARGET" ) {
348
- let host = env:: var ( "HOST" ) ?;
350
+ let host = env:: var ( "HOST" ) . ok ( ) ?;
349
351
let kind = if host == target { "HOST" } else { "TARGET" } ;
350
352
let target_u = target. replace ( "-" , "_" ) ;
351
353
352
- self . env_var ( & format ! ( "{}_{}" , var_base, target) )
353
- . or_else ( |_ | self . env_var ( & format ! ( "{}_{}" , var_base, target_u) ) )
354
- . or_else ( |_ | self . env_var ( & format ! ( "{}_{}" , kind, var_base) ) )
355
- . or_else ( |_ | self . env_var ( var_base) )
354
+ self . env_var_os ( & format ! ( "{}_{}" , var_base, target) )
355
+ . or_else ( || self . env_var_os ( & format ! ( "{}_{}" , var_base, target_u) ) )
356
+ . or_else ( || self . env_var_os ( & format ! ( "{}_{}" , kind, var_base) ) )
357
+ . or_else ( || self . env_var_os ( var_base) )
356
358
} else {
357
- self . env_var ( var_base)
359
+ self . env_var_os ( var_base)
358
360
}
359
361
}
360
362
361
- fn env_var ( & self , name : & str ) -> Result < String , env:: VarError > {
362
- if self . env_metadata {
363
- println ! ( "cargo:rerun-if-env-changed={}" , name) ;
364
- }
365
- env:: var ( name)
366
- }
367
-
368
363
fn env_var_os ( & self , name : & str ) -> Option < OsString > {
369
364
if self . env_metadata {
370
365
println ! ( "cargo:rerun-if-env-changed={}" , name) ;
@@ -378,21 +373,21 @@ impl Config {
378
373
379
374
fn command ( & self , name : & str , args : & [ & str ] ) -> Command {
380
375
let exe = self
381
- . env_var ( "PKG_CONFIG" )
382
- . unwrap_or_else ( |_| String :: from ( "pkg-config" ) ) ;
376
+ . env_var_os ( "PKG_CONFIG" )
377
+ . unwrap_or_else ( || OsString :: from ( "pkg-config" ) ) ;
383
378
let mut cmd = Command :: new ( exe) ;
384
379
if self . is_static ( name) {
385
380
cmd. arg ( "--static" ) ;
386
381
}
387
382
cmd. args ( args) . args ( & self . extra_args ) ;
388
383
389
- if let Ok ( value) = self . targetted_env_var ( "PKG_CONFIG_PATH" ) {
384
+ if let Some ( value) = self . targetted_env_var ( "PKG_CONFIG_PATH" ) {
390
385
cmd. env ( "PKG_CONFIG_PATH" , value) ;
391
386
}
392
- if let Ok ( value) = self . targetted_env_var ( "PKG_CONFIG_LIBDIR" ) {
387
+ if let Some ( value) = self . targetted_env_var ( "PKG_CONFIG_LIBDIR" ) {
393
388
cmd. env ( "PKG_CONFIG_LIBDIR" , value) ;
394
389
}
395
- if let Ok ( value) = self . targetted_env_var ( "PKG_CONFIG_SYSROOT_DIR" ) {
390
+ if let Some ( value) = self . targetted_env_var ( "PKG_CONFIG_SYSROOT_DIR" ) {
396
391
cmd. env ( "PKG_CONFIG_SYSROOT_DIR" , value) ;
397
392
}
398
393
if self . print_system_libs {
0 commit comments