Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project-model/src/workspace.rs')
| -rw-r--r-- | crates/project-model/src/workspace.rs | 72 |
1 files changed, 12 insertions, 60 deletions
diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index b88db41957..3c69625685 100644 --- a/crates/project-model/src/workspace.rs +++ b/crates/project-model/src/workspace.rs @@ -16,7 +16,7 @@ use paths::{AbsPath, AbsPathBuf, Utf8PathBuf}; use rustc_hash::{FxHashMap, FxHashSet}; use semver::Version; use span::{Edition, FileId}; -use toolchain::{NO_RUSTUP_AUTO_INSTALL_ENV, Tool}; +use toolchain::Tool; use tracing::instrument; use tracing::{debug, error, info}; use triomphe::Arc; @@ -295,11 +295,6 @@ impl ProjectWorkspace { &sysroot, *no_deps, ); - let target_dir = config - .target_dir - .clone() - .or_else(|| fetch_metadata.no_deps_metadata().map(|m| m.target_directory.clone())) - .unwrap_or_else(|| workspace_dir.join("target").into()); // We spawn a bunch of processes to query various information about the workspace's // toolchain and sysroot @@ -345,7 +340,7 @@ impl ProjectWorkspace { }, &sysroot, *no_deps, - ).exec(&target_dir, true, progress) { + ).exec(true, progress) { Ok((meta, _error)) => { let workspace = CargoWorkspace::new( meta, @@ -374,7 +369,7 @@ impl ProjectWorkspace { }) }); - let cargo_metadata = s.spawn(|| fetch_metadata.exec(&target_dir, false, progress)); + let cargo_metadata = s.spawn(|| fetch_metadata.exec(false, progress)); let loaded_sysroot = s.spawn(|| { sysroot.load_workspace( &RustSourceWorkspaceConfig::CargoMetadata(sysroot_metadata_config( @@ -383,7 +378,6 @@ impl ProjectWorkspace { toolchain.clone(), )), config.no_deps, - &target_dir, progress, ) }); @@ -463,12 +457,6 @@ impl ProjectWorkspace { let targets = target_tuple::get(query_config, config.target.as_deref(), &config.extra_env) .unwrap_or_default(); let toolchain = version::get(query_config, &config.extra_env).ok().flatten(); - let project_root = project_json.project_root(); - let target_dir = config - .target_dir - .clone() - .or_else(|| cargo_target_dir(project_json.manifest()?, &config.extra_env, &sysroot)) - .unwrap_or_else(|| project_root.join("target").into()); // We spawn a bunch of processes to query various information about the workspace's // toolchain and sysroot @@ -486,7 +474,6 @@ impl ProjectWorkspace { sysroot.load_workspace( &RustSourceWorkspaceConfig::Json(*sysroot_project), config.no_deps, - &target_dir, progress, ) } else { @@ -497,7 +484,6 @@ impl ProjectWorkspace { toolchain.clone(), )), config.no_deps, - &target_dir, progress, ) } @@ -545,11 +531,6 @@ impl ProjectWorkspace { .unwrap_or_default(); let rustc_cfg = rustc_cfg::get(query_config, None, &config.extra_env); let target_data = target_data::get(query_config, None, &config.extra_env); - let target_dir = config - .target_dir - .clone() - .or_else(|| cargo_target_dir(detached_file, &config.extra_env, &sysroot)) - .unwrap_or_else(|| dir.join("target").into()); let loaded_sysroot = sysroot.load_workspace( &RustSourceWorkspaceConfig::CargoMetadata(sysroot_metadata_config( @@ -558,7 +539,6 @@ impl ProjectWorkspace { toolchain.clone(), )), config.no_deps, - &target_dir, &|_| (), ); if let Some(loaded_sysroot) = loaded_sysroot { @@ -579,21 +559,15 @@ impl ProjectWorkspace { &sysroot, config.no_deps, ); - let target_dir = config - .target_dir - .clone() - .or_else(|| fetch_metadata.no_deps_metadata().map(|m| m.target_directory.clone())) - .unwrap_or_else(|| dir.join("target").into()); - let cargo_script = - fetch_metadata.exec(&target_dir, false, &|_| ()).ok().map(|(ws, error)| { - let cargo_config_extra_env = - cargo_config_env(detached_file, &config_file, &config.extra_env); - ( - CargoWorkspace::new(ws, detached_file.clone(), cargo_config_extra_env, false), - WorkspaceBuildScripts::default(), - error.map(Arc::new), - ) - }); + let cargo_script = fetch_metadata.exec(false, &|_| ()).ok().map(|(ws, error)| { + let cargo_config_extra_env = + cargo_config_env(detached_file, &config_file, &config.extra_env); + ( + CargoWorkspace::new(ws, detached_file.clone(), cargo_config_extra_env, false), + WorkspaceBuildScripts::default(), + error.map(Arc::new), + ) + }); Ok(ProjectWorkspace { kind: ProjectWorkspaceKind::DetachedFile { @@ -1902,25 +1876,3 @@ fn sysroot_metadata_config( kind: "sysroot", } } - -fn cargo_target_dir( - manifest: &ManifestPath, - extra_env: &FxHashMap<String, Option<String>>, - sysroot: &Sysroot, -) -> Option<Utf8PathBuf> { - let cargo = sysroot.tool(Tool::Cargo, manifest.parent(), extra_env); - let mut meta = cargo_metadata::MetadataCommand::new(); - meta.env(NO_RUSTUP_AUTO_INSTALL_ENV.0, NO_RUSTUP_AUTO_INSTALL_ENV.1); - meta.cargo_path(cargo.get_program()); - meta.manifest_path(manifest); - // `--no-deps` doesn't (over)write lockfiles as it doesn't do any package resolve. - // So we can use it to get `target_directory` before copying lockfiles - meta.no_deps(); - let mut other_options = vec![]; - if manifest.is_rust_manifest() { - meta.env("RUSTC_BOOTSTRAP", "1"); - other_options.push("-Zscript".to_owned()); - } - meta.other_options(other_options); - meta.exec().map(|m| m.target_directory).ok() -} |