about summary refs log tree commit diff
diff options
context:
space:
mode:
authorChase Douglas <chase@stackery.io>2024-02-20 16:49:07 -0800
committerChase Douglas <chase@stackery.io>2024-02-20 19:16:55 -0800
commit2826eb51aa60e2e73d7f35408d2ee2727ec36334 (patch)
treebf894d6b01864341c6d89d9c9ab4ea391d926e2f
parent344a79c17dd321279897cc287313ff38e0fe255e (diff)
downloadrust-2826eb51aa60e2e73d7f35408d2ee2727ec36334.tar.gz
rust-2826eb51aa60e2e73d7f35408d2ee2727ec36334.zip
Don't build dependencies when retrieving target data layout
`cargo rustc -- <args>` first builds dependencies then calls `rustc <args>` for the current package. Here, we don't want to build dependencies, we just want to call `rustc --print`. An unstable `cargo rustc` `--print` command bypasses building dependencies first. This speeds up execution of this code path and ensures RA doesn't recompile dependencies with the `RUSTC_BOOTSRAP=1` env var flag set.

Note that we must pass `-Z unstable-options` twice, first to enable the `cargo` unstable `--print` flag, then later to enable the unstable `rustc` `target-spec-json` print request.
-rw-r--r--crates/project-model/src/target_data_layout.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/crates/project-model/src/target_data_layout.rs b/crates/project-model/src/target_data_layout.rs
index af635dda578..98917351c5e 100644
--- a/crates/project-model/src/target_data_layout.rs
+++ b/crates/project-model/src/target_data_layout.rs
@@ -32,7 +32,16 @@ pub fn get(
             Sysroot::set_rustup_toolchain_env(&mut cmd, sysroot);
             cmd.envs(extra_env);
             cmd.current_dir(cargo_toml.parent())
-                .args(["rustc", "--", "-Z", "unstable-options", "--print", "target-spec-json"])
+                .args([
+                    "rustc",
+                    "-Z",
+                    "unstable-options",
+                    "--print",
+                    "target-spec-json",
+                    "--",
+                    "-Z",
+                    "unstable-options",
+                ])
                 .env("RUSTC_BOOTSTRAP", "1");
             if let Some(target) = target {
                 cmd.args(["--target", target]);