@@ -135,7 +135,8 @@ fn get_boringssl_source_path(config: &Config) -> &PathBuf {
135135 }
136136
137137 let _ = fs:: remove_dir_all ( & src_path) ;
138- fs_extra:: dir:: copy ( submodule_path, & config. out_dir , & Default :: default ( ) ) . unwrap ( ) ;
138+ fs_extra:: dir:: copy ( submodule_path, & config. out_dir , & Default :: default ( ) )
139+ . expect ( "out dir copy" ) ;
139140
140141 // NOTE: .git can be both file and dir, depening on whether it was copied from a submodule
141142 // or created by the patches code.
@@ -370,31 +371,23 @@ fn get_extra_clang_args_for_bindgen(config: &Config) -> Vec<String> {
370371 let mut params = Vec :: new ( ) ;
371372
372373 // Add platform-specific parameters.
373- #[ allow( clippy:: single_match) ]
374374 match & * config. target_os {
375375 "ios" | "macos" => {
376376 // When cross-compiling for Apple targets, tell bindgen to use SDK sysroot,
377377 // and *don't* use system headers of the host macOS.
378378 let sdk = get_apple_sdk_name ( config) ;
379- let output = std:: process:: Command :: new ( "xcrun" )
380- . args ( [ "--show-sdk-path" , "--sdk" , sdk] )
381- . output ( )
382- . unwrap ( ) ;
383- if !output. status . success ( ) {
384- if let Some ( exit_code) = output. status . code ( ) {
385- println ! ( "cargo:warning=xcrun failed: exit code {exit_code}" ) ;
386- } else {
387- println ! ( "cargo:warning=xcrun failed: killed" ) ;
379+ match run_command ( Command :: new ( "xcrun" ) . args ( [ "--show-sdk-path" , "--sdk" , sdk] ) ) {
380+ Ok ( output) => {
381+ let sysroot = std:: str:: from_utf8 ( & output. stdout ) . expect ( "xcrun output" ) ;
382+ params. push ( "-isysroot" . to_string ( ) ) ;
383+ // There is typically a newline at the end which confuses clang.
384+ params. push ( sysroot. trim_end ( ) . to_string ( ) ) ;
385+ }
386+ Err ( e) => {
387+ println ! ( "cargo:warning={e}" ) ;
388+ // Uh... let's try anyway, I guess?
388389 }
389- std:: io:: stderr ( ) . write_all ( & output. stderr ) . unwrap ( ) ;
390- // Uh... let's try anyway, I guess?
391- return params;
392390 }
393- let mut sysroot = String :: from_utf8 ( output. stdout ) . unwrap ( ) ;
394- // There is typically a newline at the end which confuses clang.
395- sysroot. truncate ( sysroot. trim_end ( ) . len ( ) ) ;
396- params. push ( "-isysroot" . to_string ( ) ) ;
397- params. push ( sysroot) ;
398391 }
399392 "android" => {
400393 let mut android_sysroot = config
@@ -405,20 +398,18 @@ fn get_extra_clang_args_for_bindgen(config: &Config) -> Vec<String> {
405398
406399 android_sysroot. extend ( [ "toolchains" , "llvm" , "prebuilt" ] ) ;
407400
408- let toolchain = match pick_best_android_ndk_toolchain ( & android_sysroot) {
409- Ok ( toolchain) => toolchain,
401+ match pick_best_android_ndk_toolchain ( & android_sysroot) {
402+ Ok ( toolchain) => {
403+ android_sysroot. push ( toolchain) ;
404+ android_sysroot. push ( "sysroot" ) ;
405+ params. push ( "--sysroot" . to_string ( ) ) ;
406+ params. push ( android_sysroot. into_os_string ( ) . into_string ( ) . unwrap ( ) ) ;
407+ }
410408 Err ( e) => {
411- println ! (
412- "cargo:warning=failed to find prebuilt Android NDK toolchain for bindgen: {e}"
413- ) ;
409+ println ! ( "cargo:warning=failed to find prebuilt Android NDK toolchain for bindgen: {e}" ) ;
414410 // Uh... let's try anyway, I guess?
415- return params;
416411 }
417- } ;
418- android_sysroot. push ( toolchain) ;
419- android_sysroot. push ( "sysroot" ) ;
420- params. push ( "--sysroot" . to_string ( ) ) ;
421- params. push ( android_sysroot. into_os_string ( ) . into_string ( ) . unwrap ( ) ) ;
412+ }
422413 }
423414 _ => { }
424415 }
@@ -502,8 +493,8 @@ fn apply_patch(config: &Config, patch_name: &str) -> io::Result<()> {
502493fn run_command ( command : & mut Command ) -> io:: Result < Output > {
503494 let out = command. output ( ) ?;
504495
505- println ! ( "{}" , std:: str :: from_utf8 ( & out. stdout ) . unwrap ( ) ) ;
506- eprintln ! ( "{}" , std:: str :: from_utf8 ( & out. stderr ) . unwrap ( ) ) ;
496+ std:: io :: stderr ( ) . write_all ( & out. stderr ) ? ;
497+ std:: io :: stdout ( ) . write_all ( & out. stdout ) ? ;
507498
508499 if !out. status . success ( ) {
509500 let err = match out. status . code ( ) {
0 commit comments