From 4c4e13c20d5a7b5aef3f2369df1f5074d5d82e45 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 18 Aug 2026 09:58:26 +0200 Subject: [PATCH] Rust: Set `RUSTUP_AUTO_INSTALL=1` --- rust/extractor/src/config.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/rust/extractor/src/config.rs b/rust/extractor/src/config.rs index 7677025a66f2..8ff68ea8a547 100644 --- a/rust/extractor/src/config.rs +++ b/rust/extractor/src/config.rs @@ -108,14 +108,23 @@ impl Config { figment.extract().context("loading configuration") } + fn get_extra_env(&self) -> FxHashMap> { + let mut extra_env = FxHashMap::default(); + // RUSTUP_AUTO_INSTALL is set to 0 by rust-analyzer (https://github.com/rust-lang/rust-analyzer/issues/20719), + // but we do want to allow rustup to auto-install toolchains if needed, so we set it to 1 here. + extra_env.insert("RUSTUP_AUTO_INSTALL".to_owned(), Some("1".to_owned())); + extra_env.extend(self.cargo_extra_env.clone()); + extra_env + } + fn sysroot(&self, dir: &AbsPath) -> Sysroot { let sysroot_input = self.sysroot.as_ref().map(|p| join_path_buf(dir, p)); let sysroot_src_input = self.sysroot_src.as_ref().map(|p| join_path_buf(dir, p)); match (sysroot_input, sysroot_src_input) { - (None, None) => Sysroot::discover(dir, &self.cargo_extra_env), + (None, None) => Sysroot::discover(dir, &self.get_extra_env()), (Some(sysroot), None) => Sysroot::discover_rust_lib_src_dir(sysroot), (None, Some(sysroot_src)) => { - Sysroot::discover_with_src_override(dir, &self.cargo_extra_env, sysroot_src) + Sysroot::discover_with_src_override(dir, &self.get_extra_env(), sysroot_src) } (Some(sysroot), Some(sysroot_src)) => Sysroot::new(Some(sysroot), Some(sysroot_src)), } @@ -166,7 +175,7 @@ impl Config { .map(ToOwned::to_owned) .map(RustLibSource::Path), - extra_env: self.cargo_extra_env.clone(), + extra_env: self.get_extra_env(), extra_args: self.cargo_extra_args.clone(), extra_includes: self .extra_includes