public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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

  reply	other threads:[~2026-04-21  9:47 UTC|newest]

Thread overview: 24+ 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-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox