From 904358e830dbfd99bf00580a2252dd3357062a93 Mon Sep 17 00:00:00 2001 From: Eduard Burtescu Date: Fri, 20 Nov 2020 18:03:14 +0000 Subject: [PATCH] spirv-builder: pass through non-JSON stdout lines even after an error. --- crates/spirv-builder/src/lib.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/crates/spirv-builder/src/lib.rs b/crates/spirv-builder/src/lib.rs index f1730baf5b..6ad9cdda6e 100644 --- a/crates/spirv-builder/src/lib.rs +++ b/crates/spirv-builder/src/lib.rs @@ -162,9 +162,14 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result { .env("RUSTFLAGS", rustflags) .output() .expect("failed to execute cargo build"); + + // `get_last_artifact` has the side-effect of printing invalid lines, so + // we do that even in case of an error, to let through any useful messages + // that ended up on stdout instead of stderr. + let stdout = String::from_utf8(build.stdout).unwrap(); + let artifact = get_last_artifact(&stdout); + if build.status.success() { - let stdout = String::from_utf8(build.stdout).unwrap(); - let artifact = get_last_artifact(&stdout); if builder.print_metadata { print_deps_of(&artifact); }