rust: kbuild: disambiguate `zerocopy_derive` for `rusttest`
Subsystems (3)
Miguel Ojeda
maintainerPATCH 1/1 rust: kbuild: disambiguate `zerocopy_derive` for `rusttest`
The rustc-dev components for Rust 1.82.0 through 1.87.0 include a precompiled zerocopy_derive procedural macro in the sysroot. This range includes Rust 1.85.0, our minimum supported version.
This makes rusttest fail because the compiler finds both the sysroot copy and the copy built in rust/test:
error[E0464]: multiple candidates for `dylib` dependency `zerocopy_derive` found
--> rust/kernel/prelude.rs:70:9
|
70 | pub use zerocopy_derive::{
| ^^^^^^^^^^^^^^^
|
= note: candidate #1: .../lib/rustlib/x86_64-unknown-linux-gnu/lib/libzerocopy_derive-54d2b38896fa6bc5.so
= note: candidate #2: .../rust/test/libzerocopy_derive.soCommit fe39a233ea52 ("rust: kbuild: disambiguate zerocopy for rusttest") fixed the equivalent ambiguity for zerocopy.
Thus point to the dependency explicitly in this case too.
--- rust/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
rust/Makefile +2 -1
@@ -350,7 +350,8 @@ rusttestlib-pin_init: $(src)/pin-init/src/lib.rs rusttestlib-macros \ rusttestlib-kernel: private rustc_target_flags = --extern ffi \ --extern build_error --extern macros --extern pin_init \ --extern bindings --extern uapi \ - --extern zerocopy=$(objtree)/$(obj)/test/libzerocopy.rlib --extern zerocopy_derive + --extern zerocopy=$(objtree)/$(obj)/test/libzerocopy.rlib \ + --extern zerocopy_derive=$(objtree)/$(obj)/test/libzerocopy_derive.so rusttestlib-kernel: $(src)/kernel/lib.rs rusttestlib-bindings rusttestlib-uapi \ rusttestlib-build_error rusttestlib-pin_init $(obj)/$(libmacros_name) \ $(obj)/bindings.o rusttestlib-zerocopy rusttestlib-zerocopy_derive FORCE
base-commit: d24f5cdbeff8b6a063fca92d0a1f94122a799b59
Signature · 1 line
2.55.0
Quoted 2 lines · Miguel Ojeda
+ --extern zerocopy_derive=$(objtree)/$(obj)/test/libzerocopy_derive.so
This should be:
... test/$(libzerocopy_derive_name)
as Sashiko mentions, for the macOS support, of course.
Cheers,
Miguel
Miguel Ojeda
AppliedQuoted 20 lines · Miguel Ojeda
The
rustc-devcomponents for Rust 1.82.0 through 1.87.0 include a precompiledzerocopy_deriveprocedural macro in the sysroot. This range includes Rust 1.85.0, our minimum supported version.This makes
rusttestfail because the compiler finds both the sysroot copy and the copy built inrust/test:error[E0464]: multiple candidates for `dylib` dependency `zerocopy_derive` found --> rust/kernel/prelude.rs:70:9 | 70 | pub use zerocopy_derive::{ | ^^^^^^^^^^^^^^^ | = note: candidate #1: .../lib/rustlib/x86_64-unknown-linux-gnu/lib/libzerocopy_derive-54d2b38896fa6bc5.so = note: candidate #2: .../rust/test/libzerocopy_derive.soCommit
fe39a233ea52("rust: kbuild: disambiguatezerocopyforrusttest") fixed the equivalent ambiguity forzerocopy.
Quoted 6 lines
Thus point to the dependency explicitly in this case too.
Cc Antoni Boucher <[email protected]>Fixes 506054980429 ("rust: zerocopy-derive: enable support in kbuild")Signed-off-by Miguel Ojeda <[email protected]>
Applied to rust-fixes.
Cheers,
Miguel