From 05d1d992f4d5027d4cc4f6f8afde2c5e2643cf6c Mon Sep 17 00:00:00 2001 From: Marcin Mielniczuk Date: Sat, 8 Dec 2018 12:01:34 +0100 Subject: [PATCH] Workaround #703 to prevent obscure failures due to sccache. --- src/main.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main.rs b/src/main.rs index 2c4f638f97e..a9a3b055d0f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -37,6 +37,7 @@ )] extern "C" {} +use log::warn; use env_logger; use rustc_tools_util::*; @@ -60,6 +61,7 @@ pub mod server; mod test; const RUSTC_SHIM_ENV_VAR_NAME: &str = "RLS_RUSTC_SHIM"; +const RUSTC_WRAPPER_ENV_VAR: &str = "RUSTC_WRAPPER"; type Span = rls_span::Span; @@ -73,6 +75,19 @@ pub fn main() { fn main_inner() -> i32 { env_logger::init(); + // [workaround] + // Currently sccache breaks RLS with obscure error messages. + // Until it's actually fixed disable the wrapper completely + // in the current process tree. + // + // See https://github.com/rust-lang/rls/issues/703 + // and https://github.com/mozilla/sccache/issues/303 + if env::var_os(RUSTC_WRAPPER_ENV_VAR).is_some() { + warn!("The {} environment variable is incompatible with RLS, \ + removing it from the process environment", RUSTC_WRAPPER_ENV_VAR); + env::remove_var(RUSTC_WRAPPER_ENV_VAR); + } + if env::var(RUSTC_SHIM_ENV_VAR_NAME) .map(|v| v != "0") .unwrap_or(false)