From: Link Mauve <linkmauve@linkmauve.fr>
To: "Mukesh Kumar Chaurasiya (IBM)" <mkchauras@gmail.com>
Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com,
chleroy@kernel.org, peterz@infradead.org, jpoimboe@kernel.org,
jbaron@akamai.com, aliceryhl@google.com, rostedt@goodmis.org,
ardb@kernel.org, ojeda@kernel.org, boqun@kernel.org,
gary@garyguo.net, bjorn3_gh@protonmail.com, lossin@kernel.org,
a.hindborg@kernel.org, tmgross@umich.edu, dakr@kernel.org,
nathan@kernel.org, nick.desaulniers+lkml@gmail.com,
morbo@google.com, justinstitt@google.com,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
rust-for-linux@vger.kernel.org, llvm@lists.linux.dev
Subject: Re: [PATCH V11 1/4] rust: Fix "multiple candidates for rmeta dependency core" error
Date: Tue, 21 Apr 2026 11:38:08 +0200 [thread overview]
Message-ID: <aedFgEicDW6LAcuq@luna> (raw)
In-Reply-To: <20260417152253.2312961-2-mkchauras@gmail.com>
Hi Mukesh,
This patch doesn’t apply on top of mainline, which tree did you base it
off?
On Fri, Apr 17, 2026 at 08:52:50PM +0530, Mukesh Kumar Chaurasiya (IBM) wrote:
> When building Rust code for powerpc64le with LLVM=1 and -j1, rustc
> encounters an error: "multiple candidates for `rmeta` dependency `core`
> found", with two candidates:
> 1. The host's standard library from the rustup toolchain
> 2. The kernel's custom libcore.rmeta in the rust/ directory
>
> This occurs because the build system uses `-L$(objtree)/rust` for host
> library builds (proc_macro2, quote, syn), which causes rustc to search
> the rust/ directory. During this search, rustc finds both the kernel's
> custom libcore.rmeta and gains access to the host's standard library,
> creating a conflict.
>
> The solution is to separate host libraries into a dedicated rust/host/
> subdirectory and use `-L$(objtree)/rust/host` for host builds instead
> of `-L$(objtree)/rust`. This ensures that:
>
> 1. Host library builds (proc_macro2, quote, syn) only search rust/host/
> and never encounter the kernel's libcore.rmeta
> 2. Proc macro builds use `-L$(objtree)/rust/host` to find their
> dependencies
>
> Special handling is added for rustdoc-pin_init, which is a host build
> (to access the alloc crate) but depends on proc macros from the main
> rust/ directory. It uses explicit `--extern` paths to reference the
> proc macros without adding `-L$(objtree)/rust`, which would reintroduce
> the conflict.
>
> The rust/host/ directory is added to clean-files to ensure it's removed
> during `make clean`.
>
> Link: https://github.com/Rust-for-Linux/linux/issues/105
> Link: https://github.com/linuxppc/issues/issues/451
> Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
> ---
> rust/Makefile | 38 +++++++++++++++++++++-----------------
> 1 file changed, 21 insertions(+), 17 deletions(-)
>
> diff --git a/rust/Makefile b/rust/Makefile
> index 9801af2e1e02..e234b8a39358 100644
> --- a/rust/Makefile
> +++ b/rust/Makefile
> @@ -3,6 +3,9 @@
> # Where to place rustdoc generated documentation
> rustdoc_output := $(objtree)/Documentation/output/rust/rustdoc
>
> +# Clean generated host directory
> +clean-files := host/
> +
> obj-$(CONFIG_RUST) += core.o compiler_builtins.o ffi.o
> always-$(CONFIG_RUST) += exports_core_generated.h
>
> @@ -27,7 +30,7 @@ endif
>
> obj-$(CONFIG_RUST) += exports.o
>
> -always-$(CONFIG_RUST) += libproc_macro2.rlib libquote.rlib libsyn.rlib
> +always-$(CONFIG_RUST) += host/libproc_macro2.rlib host/libquote.rlib host/libsyn.rlib
>
> always-$(CONFIG_RUST_KERNEL_DOCTESTS) += doctests_kernel_generated.rs
> always-$(CONFIG_RUST_KERNEL_DOCTESTS) += doctests_kernel_generated_kunit.c
> @@ -150,7 +153,7 @@ quiet_cmd_rustdoc = RUSTDOC $(if $(rustdoc_host),H, ) $<
> OBJTREE=$(abspath $(objtree)) \
> $(RUSTDOC) $(filter-out $(skip_flags) --remap-path-prefix=% --remap-path-scope=%, \
> $(if $(rustdoc_host),$(rust_common_flags),$(rust_flags))) \
The issue is here ↑, --remap-path-prefix=% got removed and the two
previous lines got merged into one.
> - $(rustc_target_flags) -L$(objtree)/$(obj) \
> + $(rustc_target_flags) -L$(objtree)/$(obj)$(if $(rustdoc_host),/host) \
> -Zunstable-options --generate-link-to-definition \
> --output $(rustdoc_output) \
> --crate-name $(subst rustdoc-,,$@) \
[…]
Thanks anyway for iterating on this series! I’ve started writing a DRM
driver based off a previous version. :)
--
Link Mauve
next prev parent reply other threads:[~2026-04-21 9:47 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-17 15:22 [PATCH V11 0/4] Rust support for powerpc Mukesh Kumar Chaurasiya (IBM)
2026-04-17 15:22 ` [PATCH V11 1/4] rust: Fix "multiple candidates for rmeta dependency core" error Mukesh Kumar Chaurasiya (IBM)
2026-04-21 9:38 ` Link Mauve [this message]
2026-04-21 9:55 ` Mukesh Kumar Chaurasiya
2026-04-21 10:26 ` Link Mauve
2026-04-21 12:19 ` Mukesh Kumar Chaurasiya
2026-04-21 12:26 ` Link Mauve
2026-04-21 15:53 ` Mukesh Kumar Chaurasiya
2026-04-21 15:57 ` Gary Guo
2026-04-21 17:47 ` Mukesh Kumar Chaurasiya
2026-04-21 18:10 ` Gary Guo
2026-04-21 18:16 ` Miguel Ojeda
2026-04-22 7:53 ` Mukesh Kumar Chaurasiya
2026-04-22 8:01 ` Link Mauve
2026-04-21 16:00 ` Miguel Ojeda
2026-04-21 17:28 ` Mukesh Kumar Chaurasiya
2026-04-21 15:59 ` Gary Guo
2026-04-21 16:36 ` Link Mauve
2026-04-21 16:51 ` Gary Guo
2026-04-21 17:10 ` Link Mauve
2026-04-21 17:17 ` Link Mauve
2026-04-17 15:22 ` [PATCH V11 2/4] powerpc/jump_label: adjust inline asm to be consistent Mukesh Kumar Chaurasiya (IBM)
2026-04-17 15:22 ` [PATCH V11 3/4] rust: Add PowerPC support Mukesh Kumar Chaurasiya (IBM)
2026-04-21 15:59 ` Gary Guo
2026-04-17 15:22 ` [PATCH V11 4/4] powerpc: Enable Rust for ppc64le Mukesh Kumar Chaurasiya (IBM)
2026-04-21 15:59 ` Gary Guo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aedFgEicDW6LAcuq@luna \
--to=linkmauve@linkmauve.fr \
--cc=a.hindborg@kernel.org \
--cc=aliceryhl@google.com \
--cc=ardb@kernel.org \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun@kernel.org \
--cc=chleroy@kernel.org \
--cc=dakr@kernel.org \
--cc=gary@garyguo.net \
--cc=jbaron@akamai.com \
--cc=jpoimboe@kernel.org \
--cc=justinstitt@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=llvm@lists.linux.dev \
--cc=lossin@kernel.org \
--cc=maddy@linux.ibm.com \
--cc=mkchauras@gmail.com \
--cc=morbo@google.com \
--cc=mpe@ellerman.id.au \
--cc=nathan@kernel.org \
--cc=nick.desaulniers+lkml@gmail.com \
--cc=npiggin@gmail.com \
--cc=ojeda@kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tmgross@umich.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.