From ccce49639140ad3eaba530d1c1281e397bbc2fe2 Mon Sep 17 00:00:00 2001 From: David Zbarsky Date: Sat, 6 Sep 2025 10:09:14 -0400 Subject: [PATCH] proc macro stuff --- crate_universe/BUILD.bazel | 6 +- crate_universe/defs.bzl | 8 +- crate_universe/extensions.bzl | 4 - crate_universe/src/rendering.rs | 88 ++++++------ crate_universe/src/utils/starlark.rs | 8 -- .../tools/cross_installer/BUILD.bazel | 6 +- .../tools/urls_generator/BUILD.bazel | 6 +- .../crate_universe/cargo_aliases/BUILD.bazel | 12 +- .../private/wasm_bindgen_test.bzl | 6 +- rust/defs.bzl | 5 +- rust/private/clippy.bzl | 2 +- rust/private/rust.bzl | 127 ++++-------------- rust/private/rust_proc_macro.bzl | 71 ++++++++++ rust/private/rust_proc_macro_inner.bzl | 74 ++++++++++ rust/private/rustc.bzl | 4 +- rust/private/rustdoc_test.bzl | 7 +- rust/private/unpretty.bzl | 2 +- rust/private/utils.bzl | 23 ++++ rust/rust_proc_macro.bzl | 4 +- .../ambiguous_libs/ambiguous_libs_test.bzl | 2 +- .../is_proc_macro_dep_test.bzl | 5 +- test/unit/lto/lto_test_suite.bzl | 2 +- .../native_deps/native_action_inputs_test.bzl | 2 +- test/unit/native_deps/native_deps_test.bzl | 2 +- test/unit/proc_macro/proc_macro_test.bzl | 4 +- test/unit/rustdoc/rustdoc_unit_test.bzl | 5 +- 26 files changed, 286 insertions(+), 199 deletions(-) create mode 100644 rust/private/rust_proc_macro.bzl create mode 100644 rust/private/rust_proc_macro_inner.bzl diff --git a/crate_universe/BUILD.bazel b/crate_universe/BUILD.bazel index 3f8a594dfc..5fdd7b0508 100644 --- a/crate_universe/BUILD.bazel +++ b/crate_universe/BUILD.bazel @@ -66,7 +66,6 @@ rust_library( aliases = aliases(), compile_data = [":rust_data"], edition = "2021", - proc_macro_deps = all_crate_deps(proc_macro = True), # This target embeds additional, stamping related information (see # https://docs.bazel.build/versions/main/user-manual.html#workspace_status # for more information). Set stamp = -1 to indicate that it should respect @@ -74,7 +73,10 @@ rust_library( stamp = -1, version = VERSION, visibility = ["//visibility:public"], - deps = all_crate_deps(normal = True), + deps = all_crate_deps( + normal = True, + proc_macro = True, + ), ) rust_binary( diff --git a/crate_universe/defs.bzl b/crate_universe/defs.bzl index 2d5f219ebd..52ca4250ed 100644 --- a/crate_universe/defs.bzl +++ b/crate_universe/defs.bzl @@ -75,8 +75,6 @@ rust_library( aliases = aliases(), deps = all_crate_deps( normal = True, - ), - proc_macro_deps = all_crate_deps( proc_macro = True, ), ) @@ -90,8 +88,6 @@ rust_test( ), deps = all_crate_deps( normal_dev = True, - ), - proc_macro_deps = all_crate_deps( proc_macro_dev = True, ), ) @@ -143,10 +139,8 @@ load("@rules_rust//rust:defs.bzl", "rust_library", "rust_test") rust_library( name = "lib", deps = [ - "@crate_index//:tokio", - ], - proc_macro_deps = [ "@crate_index//:async-trait", + "@crate_index//:tokio", ], ) diff --git a/crate_universe/extensions.bzl b/crate_universe/extensions.bzl index 2f105af3a2..3aa51a0c2f 100644 --- a/crate_universe/extensions.bzl +++ b/crate_universe/extensions.bzl @@ -89,8 +89,6 @@ rust_library( aliases = aliases(), deps = all_crate_deps( normal = True, - ), - proc_macro_deps = all_crate_deps( proc_macro = True, ), ) @@ -104,8 +102,6 @@ rust_test( ), deps = all_crate_deps( normal_dev = True, - ), - proc_macro_deps = all_crate_deps( proc_macro_dev = True, ), ) diff --git a/crate_universe/src/rendering.rs b/crate_universe/src/rendering.rs index 425bd1b213..88761b52f8 100644 --- a/crate_universe/src/rendering.rs +++ b/crate_universe/src/rendering.rs @@ -582,11 +582,21 @@ impl Renderer { attrs.map(|attrs| attrs.data.clone()).unwrap_or_default(), ), deps: SelectSet::new( - self.make_deps( - attrs.map(|attrs| attrs.deps.clone()).unwrap_or_default(), - attrs - .map(|attrs| attrs.extra_deps.clone()) - .unwrap_or_default(), + Select::merge( + self.make_deps( + attrs.map(|attrs| attrs.deps.clone()).unwrap_or_default(), + attrs + .map(|attrs| attrs.extra_deps.clone()) + .unwrap_or_default(), + ), + self.make_deps( + attrs + .map(|attrs| attrs.proc_macro_deps.clone()) + .unwrap_or_default(), + attrs + .map(|attrs| attrs.extra_proc_macro_deps.clone()) + .unwrap_or_default(), + ), ), platforms, ), @@ -605,17 +615,6 @@ impl Renderer { linker_script: krate.common_attrs.linker_script.clone(), links: attrs.and_then(|attrs| attrs.links.clone()), pkg_name: Some(krate.name.clone()), - proc_macro_deps: SelectSet::new( - self.make_deps( - attrs - .map(|attrs| attrs.proc_macro_deps.clone()) - .unwrap_or_default(), - attrs - .map(|attrs| attrs.extra_proc_macro_deps.clone()) - .unwrap_or_default(), - ), - platforms, - ), rundir: SelectScalar::new( attrs.map(|attrs| attrs.rundir.clone()).unwrap_or_default(), platforms, @@ -674,16 +673,15 @@ impl Renderer { Ok(RustProcMacro { name: target.crate_name.clone(), deps: SelectSet::new( - self.make_deps( - krate.common_attrs.deps.clone(), - krate.common_attrs.extra_deps.clone(), - ), - platforms, - ), - proc_macro_deps: SelectSet::new( - self.make_deps( - krate.common_attrs.proc_macro_deps.clone(), - krate.common_attrs.extra_proc_macro_deps.clone(), + Select::merge( + self.make_deps( + krate.common_attrs.deps.clone(), + krate.common_attrs.extra_deps.clone(), + ), + self.make_deps( + krate.common_attrs.proc_macro_deps.clone(), + krate.common_attrs.extra_proc_macro_deps.clone(), + ), ), platforms, ), @@ -701,16 +699,15 @@ impl Renderer { Ok(RustLibrary { name: target.crate_name.clone(), deps: SelectSet::new( - self.make_deps( - krate.common_attrs.deps.clone(), - krate.common_attrs.extra_deps.clone(), - ), - platforms, - ), - proc_macro_deps: SelectSet::new( - self.make_deps( - krate.common_attrs.proc_macro_deps.clone(), - krate.common_attrs.extra_proc_macro_deps.clone(), + Select::merge( + self.make_deps( + krate.common_attrs.deps.clone(), + krate.common_attrs.extra_deps.clone(), + ), + self.make_deps( + krate.common_attrs.proc_macro_deps.clone(), + krate.common_attrs.extra_proc_macro_deps.clone(), + ), ), platforms, ), @@ -729,9 +726,15 @@ impl Renderer { Ok(RustBinary { name: format!("{}__bin", target.crate_name), deps: { - let mut deps = self.make_deps( - krate.common_attrs.deps.clone(), - krate.common_attrs.extra_deps.clone(), + let mut deps = Select::merge( + self.make_deps( + krate.common_attrs.deps.clone(), + krate.common_attrs.extra_deps.clone(), + ), + self.make_deps( + krate.common_attrs.proc_macro_deps.clone(), + krate.common_attrs.extra_proc_macro_deps.clone(), + ), ); if let Some(library_target_name) = &krate.library_target_name { deps.insert( @@ -741,13 +744,6 @@ impl Renderer { } SelectSet::new(deps, platforms) }, - proc_macro_deps: SelectSet::new( - self.make_deps( - krate.common_attrs.proc_macro_deps.clone(), - krate.common_attrs.extra_proc_macro_deps.clone(), - ), - platforms, - ), aliases: SelectDict::new(self.make_aliases(krate, false, false), platforms), common: self.make_common_attrs(platforms, krate, target)?, }) diff --git a/crate_universe/src/utils/starlark.rs b/crate_universe/src/utils/starlark.rs index a33a1ac77a..8a21eef0ba 100644 --- a/crate_universe/src/utils/starlark.rs +++ b/crate_universe/src/utils/starlark.rs @@ -118,8 +118,6 @@ pub(crate) struct CargoBuildScript { pub(crate) links: Option, #[serde(skip_serializing_if = "Option::is_none")] pub(crate) pkg_name: Option, - #[serde(skip_serializing_if = "SelectSet::is_empty")] - pub(crate) proc_macro_deps: SelectSet