} 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"),
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
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());
.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() {