diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs index 95be9a396c17c..bfe2a64f5ba48 100644 --- a/src/bootstrap/dist.rs +++ b/src/bootstrap/dist.rs @@ -1083,7 +1083,8 @@ impl Step for Rls { let rls = builder.ensure(tool::Rls { compiler: builder.compiler(stage, build.build), target - }).expect("Rls to build: toolstate is testing"); + }).or_else(|| { println!("Unable to build RLS, skipping dist"); None })?; + install(&rls, &image.join("bin"), 0o755); let doc = image.join("share/doc/rls"); install(&src.join("README.md"), &doc, 0o644); @@ -1167,11 +1168,12 @@ impl Step for Rustfmt { let rustfmt = builder.ensure(tool::Rustfmt { compiler: builder.compiler(stage, build.build), target - }).expect("Rustfmt to build: toolstate is testing"); + }).or_else(|| { println!("Unable to build Rustfmt, skipping dist"); None })?; let cargofmt = builder.ensure(tool::Cargofmt { compiler: builder.compiler(stage, build.build), target - }).expect("Cargofmt to build: toolstate is testing"); + }).or_else(|| { println!("Unable to build Cargofmt, skipping dist"); None })?; + install(&rustfmt, &image.join("bin"), 0o755); install(&cargofmt, &image.join("bin"), 0o755); let doc = image.join("share/doc/rustfmt"); diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs index 9b16ca0980acb..fe1c82923405b 100644 --- a/src/bootstrap/tool.rs +++ b/src/bootstrap/tool.rs @@ -11,7 +11,7 @@ use std::fs; use std::env; use std::path::PathBuf; -use std::process::Command; +use std::process::{Command, exit}; use Mode; use Compiler; @@ -115,7 +115,14 @@ impl Step for ToolBuild { println!("Building stage{} tool {} ({})", compiler.stage, tool, target); let mut cargo = prepare_tool_cargo(builder, compiler, target, "build", path); - build.run_expecting(&mut cargo, expectation); + if !build.try_run(&mut cargo, expectation) { + if expectation == BuildExpectation::None { + exit(1); + } else { + return None; + } + } + if expectation == BuildExpectation::Succeeding || expectation == BuildExpectation::None { let cargo_out = build.cargo_out(compiler, Mode::Tool, target) .join(exe(tool, &compiler.host));