From: Alice Ryhl <aliceryhl@google.com>
To: Miguel Ojeda <ojeda@kernel.org>,
Nathan Chancellor <nathan@kernel.org>,
Nicolas Schier <nsc@kernel.org>
Cc: "Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Trevor Gross" <tmgross@umich.edu>,
"Danilo Krummrich" <dakr@kernel.org>,
"Tamir Duberstein" <tamird@kernel.org>,
"Jesung Yang" <y.j3ms.n@gmail.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Carlos Llamas" <cmllamas@google.com>,
linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
rust-for-linux@vger.kernel.org,
"Alice Ryhl" <aliceryhl@google.com>
Subject: [PATCH 1/2] rust: support overriding crate_name
Date: Tue, 24 Feb 2026 09:38:34 +0000 [thread overview]
Message-ID: <20260224-binder-crate-name-v1-1-7dfc1289abbd@google.com> (raw)
In-Reply-To: <20260224-binder-crate-name-v1-0-7dfc1289abbd@google.com>
Currently you cannot filter out the crate-name argument
RUSTFLAGS_REMOVE_stem.o because the Rust filter-out invocation does not
include that particular argument. Since --crate-name is an argument that
can't be passed multiple times, this means that it's currently not
possible to override the crate name. Thus, add a RUST_CRATENAME_ option
to make this possible.
The logic for getting the crate name in generate_rust_analyzer.py is a
bit hacky, but I'm not sure how to do it otherwise.
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
---
scripts/Makefile.build | 4 +++-
scripts/generate_rust_analyzer.py | 21 ++++++++++++++++++---
2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 32e209bc7985..dea8320e5bde 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -324,6 +324,8 @@ rust_allowed_features := asm_const,asm_goto,arbitrary_self_types,lint_reasons,of
# `--out-dir` is required to avoid temporaries being created by `rustc` in the
# current working directory, which may be not accessible in the out-of-tree
# modules case.
+rust_cratename = $(if $(RUST_CRATENAME_$(target-stem).o),$(RUST_CRATENAME_$(target-stem).o),$(basename $(notdir $@)))
+
rust_common_cmd = \
OBJTREE=$(abspath $(objtree)) \
RUST_MODFILE=$(modfile) $(RUSTC_OR_CLIPPY) $(rust_flags) \
@@ -332,7 +334,7 @@ rust_common_cmd = \
-Zcrate-attr='feature($(rust_allowed_features))' \
-Zunstable-options --extern pin_init --extern kernel \
--crate-type rlib -L $(objtree)/rust/ \
- --crate-name $(basename $(notdir $@)) \
+ --crate-name $(rust_cratename) \
--sysroot=/dev/null \
--out-dir $(dir $@) --emit=dep-info=$(depfile)
diff --git a/scripts/generate_rust_analyzer.py b/scripts/generate_rust_analyzer.py
index f9b545104f21..4126acdc03ec 100755
--- a/scripts/generate_rust_analyzer.py
+++ b/scripts/generate_rust_analyzer.py
@@ -8,6 +8,7 @@ import json
import logging
import os
import pathlib
+import re
import subprocess
import sys
@@ -194,6 +195,16 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs, core_edit
except FileNotFoundError:
return False
+ def get_crate_name(build_file, target):
+ try:
+ contents = build_file.read_text()
+ match = re.search(rf'RUST_CRATENAME_{target}\.o\s*[:=]+\s*(\w+)', contents)
+ if match:
+ return match.group(1)
+ except FileNotFoundError:
+ pass
+ return target
+
# Then, the rest outside of `rust/`.
#
# We explicitly mention the top-level folders we want to cover.
@@ -206,13 +217,17 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs, core_edit
name = path.name.replace(".rs", "")
# Skip those that are not crate roots.
- if not is_root_crate(path.parent / "Makefile", name) and \
- not is_root_crate(path.parent / "Kbuild", name):
+ makefile = path.parent / "Makefile"
+ kbuild = path.parent / "Kbuild"
+ if not is_root_crate(makefile, name) and \
+ not is_root_crate(kbuild, name):
continue
logging.info("Adding %s", name)
+ crate_name = get_crate_name(makefile, name)
+
append_crate(
- name,
+ crate_name,
path,
["core", "kernel", "pin_init"],
cfg=cfg,
--
2.53.0.371.g1d285c8824-goog
next prev parent reply other threads:[~2026-02-24 9:38 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-24 9:38 [PATCH 0/2] Change Rust Binder crate name to rust_binder Alice Ryhl
2026-02-24 9:38 ` Alice Ryhl [this message]
2026-02-24 9:38 ` [PATCH 2/2] rust_binder: override " Alice Ryhl
2026-02-24 13:24 ` [PATCH 0/2] Change Rust Binder " Miguel Ojeda
2026-02-24 15:17 ` Alice Ryhl
2026-03-05 10:49 ` Alice Ryhl
2026-03-05 12:17 ` Gary Guo
2026-03-05 12:27 ` Alice Ryhl
2026-03-05 12:34 ` Gary Guo
2026-03-05 12:44 ` Alice Ryhl
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=20260224-binder-crate-name-v1-1-7dfc1289abbd@google.com \
--to=aliceryhl@google.com \
--cc=a.hindborg@kernel.org \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun@kernel.org \
--cc=cmllamas@google.com \
--cc=dakr@kernel.org \
--cc=gary@garyguo.net \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=nathan@kernel.org \
--cc=nsc@kernel.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tamird@kernel.org \
--cc=tmgross@umich.edu \
--cc=y.j3ms.n@gmail.com \
/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
all inboxes | Powered by JetHome®