From 60f7e09b17d800a3e405a91cac7be7db05cacdd6 Mon Sep 17 00:00:00 2001 From: Jacob Lifshay Date: Thu, 20 May 2021 19:15:15 -0700 Subject: [PATCH] don't fail if rustfmt not found --- Cargo.toml | 1 - build.rs | 34 +++++++++++++++++++++++++--------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index d709c7a..56ad7be 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,6 @@ core_simd = { version = "0.1.0", git = "https://github.com/rust-lang/stdsimd", o [build-dependencies] vector-math-build-helpers = { version = "=0.1.0", path = "vector-math-build-helpers" } -which = "3" [features] default = ["fma"] diff --git a/build.rs b/build.rs index 33d01bc..d0bd64d 100644 --- a/build.rs +++ b/build.rs @@ -8,23 +8,39 @@ use std::{ use vector_math_build_helpers::make_context_types; fn format_source(source: String) -> String { - let rustfmt_path = which::which("rustfmt").unwrap(); - let mut command = Command::new(rustfmt_path) + match try_format_source(&source) { + Ok(v) => v, + Err(e) => { + eprintln!("rustfmt failed: {}", e); + source + } + } +} + +fn try_format_source(source: &str) -> io::Result { + let mut command = Command::new("rustfmt") .stdin(Stdio::piped()) .stdout(Stdio::piped()) - .spawn() - .unwrap(); + .spawn()?; let stdin = command.stdin.take().unwrap(); let reader_thread = thread::spawn(move || -> io::Result<(String, Child)> { let mut output = String::new(); command.stdout.take().unwrap().read_to_string(&mut output)?; Ok((output, command)) }); - { stdin }.write_all(source.as_bytes()).unwrap(); - let (output, mut command) = reader_thread.join().unwrap().unwrap(); - let exit_status = command.wait().unwrap(); - assert!(exit_status.success()); - output + let write_result = { stdin }.write_all(source.as_bytes()); + let join_result = reader_thread.join().unwrap(); + write_result?; + let (output, mut command) = join_result?; + let exit_status = command.wait()?; + if exit_status.success() { + Ok(output) + } else { + Err(io::Error::new( + io::ErrorKind::Other, + format!("exited with status {}", exit_status), + )) + } } fn main() { -- 2.30.2