fix: Don't overwrite RUSTUP_TOOLCHAIN if it is already set

This commit is contained in:
Lukas Wirth 2025-05-16 14:52:28 +02:00
parent b3e086ad10
commit 09ecc4cbf6
3 changed files with 15 additions and 2 deletions

View file

@ -137,7 +137,12 @@ impl Sysroot {
} }
let mut cmd = toolchain::command(tool.prefer_proxy(), current_dir, envs); let mut cmd = toolchain::command(tool.prefer_proxy(), current_dir, envs);
if !envs.contains_key("RUSTUP_TOOLCHAIN")
&& std::env::var_os("RUSTUP_TOOLCHAIN").is_none()
{
cmd.env("RUSTUP_TOOLCHAIN", AsRef::<std::path::Path>::as_ref(root)); cmd.env("RUSTUP_TOOLCHAIN", AsRef::<std::path::Path>::as_ref(root));
}
cmd cmd
} }
_ => toolchain::command(tool.path(), current_dir, envs), _ => toolchain::command(tool.path(), current_dir, envs),

View file

@ -470,8 +470,12 @@ impl FlycheckActor {
let mut cmd = let mut cmd =
toolchain::command(Tool::Cargo.path(), &*self.root, &options.extra_env); toolchain::command(Tool::Cargo.path(), &*self.root, &options.extra_env);
if let Some(sysroot_root) = &self.sysroot_root { if let Some(sysroot_root) = &self.sysroot_root {
if !options.extra_env.contains_key("RUSTUP_TOOLCHAIN")
&& std::env::var_os("RUSTUP_TOOLCHAIN").is_none()
{
cmd.env("RUSTUP_TOOLCHAIN", AsRef::<std::path::Path>::as_ref(sysroot_root)); cmd.env("RUSTUP_TOOLCHAIN", AsRef::<std::path::Path>::as_ref(sysroot_root));
} }
}
cmd.arg(command); cmd.arg(command);
match package { match package {

View file

@ -659,6 +659,10 @@ impl GlobalState {
.chain( .chain(
ws.sysroot ws.sysroot
.root() .root()
.filter(|_| {
!self.config.extra_env(None).contains_key("RUSTUP_TOOLCHAIN")
&& std::env::var_os("RUSTUP_TOOLCHAIN").is_none()
})
.map(|it| ("RUSTUP_TOOLCHAIN".to_owned(), Some(it.to_string()))), .map(|it| ("RUSTUP_TOOLCHAIN".to_owned(), Some(it.to_string()))),
) )
.collect(), .collect(),