diff --git a/src/cargo/util/config/mod.rs b/src/cargo/util/config/mod.rs index de8816f07b3..7c386a2e238 100644 --- a/src/cargo/util/config/mod.rs +++ b/src/cargo/util/config/mod.rs @@ -1745,6 +1745,20 @@ impl Config { .env_config .try_borrow_with(|| self.get::("env"))?; + // Reasons for disallowing these values: + // + // - CARGO_HOME: The initial call to cargo does not honor this value + // from the [env] table. Recursive calls to cargo would use the new + // value, possibly behaving differently from the outer cargo. + // + // - RUSTUP_HOME: Under normal usage with rustup, this will have no + // effect because the rustup proxy sets RUSTUP_HOME, and that would + // override the [env] table. If the outer cargo is executed directly + // circumventing the rustup proxy, then this would affect calls to + // rustc (assuming that is a proxy), which could potentially cause + // problems with cargo and rustc being from different toolchains. We + // consider this to be not a use case we would like to support, + // since it will likely cause problems or lead to confusion. for disallowed in &["CARGO_HOME", "RUSTUP_HOME"] { if env_config.contains_key(*disallowed) { bail!(