]> git.proxmox.com Git - cargo.git/commitdiff
Also set RUSTC_WORKSPACE_WRAPPER for build.rs
authorJon Gjengset <jongje@amazon.com>
Tue, 6 Jul 2021 16:25:03 +0000 (09:25 -0700)
committerJon Gjengset <jongje@amazon.com>
Tue, 6 Jul 2021 16:46:02 +0000 (09:46 -0700)
src/cargo/core/compiler/custom_build.rs
src/doc/src/reference/environment-variables.md
tests/testsuite/build_script.rs

index 53f532d52f7b1e94d1b87da126a5ed7308bb9a46..91416789734c6dc7ad2311e23e2fb1732b3d75eb 100644 (file)
@@ -255,6 +255,12 @@ fn build_work(cx: &mut Context<'_, '_>, unit: &Unit) -> CargoResult<Job> {
     } else {
         cmd.env_remove("RUSTC_WRAPPER");
     }
+    cmd.env_remove("RUSTC_WORKSPACE_WRAPPER");
+    if cx.bcx.ws.is_member(&unit.pkg) {
+        if let Some(wrapper) = bcx.rustc().workspace_wrapper.as_ref() {
+            cmd.env("RUSTC_WORKSPACE_WRAPPER", wrapper);
+        }
+    }
     cmd.env(
         "CARGO_ENCODED_RUSTFLAGS",
         bcx.rustflags_args(unit).join("\x1f"),
index 2fb77c31c72c424dd5b77796f536515a7322053c..a16e182ee54a0631d16e2a5ac2b496aab9146fac 100644 (file)
@@ -342,6 +342,9 @@ let out_dir = env::var("OUT_DIR").unwrap();
                        use it as well.
 * `RUSTC_WRAPPER` — the `rustc` wrapper, if any, that Cargo is using.
                     See [`build.rustc-wrapper`].
+* `RUSTC_WORKSPACE_WRAPPER` — the `rustc` wrapper, if any, that Cargo is
+                             using for workspace members. See
+                             [`build.rustc-workspace-wrapper`].
 * `RUSTC_LINKER` — The path to the linker binary that Cargo has resolved to use
                    for the current target, if specified. The linker can be
                    changed by editing `.cargo/config.toml`; see the documentation
index 56533075eaae75d56bec04d73893549874e69f33..e035579a5b812b03e76e16c912a7a9fd5b71df7e 100644 (file)
@@ -119,6 +119,7 @@ fn custom_build_env_vars() {
                 assert_eq!(rustdoc, "rustdoc");
 
                 assert!(env::var("RUSTC_WRAPPER").is_err());
+                assert!(env::var("RUSTC_WORKSPACE_WRAPPER").is_err());
 
                 assert!(env::var("RUSTC_LINKER").is_err());
 
@@ -250,6 +251,32 @@ fn custom_build_env_var_rustc_wrapper() {
         .run();
 }
 
+#[cargo_test]
+fn custom_build_env_var_rustc_workspace_wrapper() {
+    let wrapper = tools::echo_wrapper();
+    let p = project()
+        .file(
+            "build.rs",
+            r#"
+            use std::env;
+
+            fn main() {{
+                assert_eq!(
+                    env::var("RUSTC_WORKSPACE_WRAPPER").unwrap(),
+                    env::var("CARGO_RUSTC_WORKSPACE_WRAPPER_CHECK").unwrap()
+                );
+            }}
+            "#,
+        )
+        .file("src/lib.rs", "")
+        .build();
+
+    p.cargo("check")
+        .env("CARGO_BUILD_RUSTC_WORKSPACE_WRAPPER", &wrapper)
+        .env("CARGO_RUSTC_WORKSPACE_WRAPPER_CHECK", &wrapper)
+        .run();
+}
+
 #[cargo_test]
 fn custom_build_env_var_rustc_linker() {
     if cross_compile::disabled() {