Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project-model/src/toolchain_info/target_triple.rs')
-rw-r--r--crates/project-model/src/toolchain_info/target_triple.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/crates/project-model/src/toolchain_info/target_triple.rs b/crates/project-model/src/toolchain_info/target_triple.rs
index 6b68cc6765..2d0d4a7c50 100644
--- a/crates/project-model/src/toolchain_info/target_triple.rs
+++ b/crates/project-model/src/toolchain_info/target_triple.rs
@@ -1,3 +1,5 @@
+use std::path::Path;
+
use anyhow::Context;
use rustc_hash::FxHashMap;
use toolchain::Tool;
@@ -16,23 +18,24 @@ pub fn get(
return Ok(vec![target.to_owned()]);
}
- let sysroot = match config {
+ let (sysroot, current_dir) = match config {
QueryConfig::Cargo(sysroot, cargo_toml) => {
match cargo_config_build_target(cargo_toml, extra_env, sysroot) {
Some(it) => return Ok(it),
- None => sysroot,
+ None => (sysroot, cargo_toml.parent().as_ref()),
}
}
- QueryConfig::Rustc(sysroot) => sysroot,
+ QueryConfig::Rustc(sysroot, current_dir) => (sysroot, current_dir),
};
- rustc_discover_host_triple(extra_env, sysroot).map(|it| vec![it])
+ rustc_discover_host_triple(extra_env, sysroot, current_dir).map(|it| vec![it])
}
fn rustc_discover_host_triple(
extra_env: &FxHashMap<String, String>,
sysroot: &Sysroot,
+ current_dir: &Path,
) -> anyhow::Result<String> {
- let mut cmd = sysroot.tool(Tool::Rustc, &std::env::current_dir()?);
+ let mut cmd = sysroot.tool(Tool::Rustc, current_dir);
cmd.envs(extra_env);
cmd.arg("-vV");
let stdout = utf8_stdout(&mut cmd)