From: Tamir Duberstein <tamird@kernel.org>
To: "Jesung Yang" <y.j3ms.n@gmail.com>,
"Miguel Ojeda" <ojeda@kernel.org>,
"Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Trevor Gross" <tmgross@umich.edu>,
"Danilo Krummrich" <dakr@kernel.org>
Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
Tamir Duberstein <tamird@kernel.org>,
Daniel Almeida <daniel.almeida@collabora.com>,
Fiona Behrens <me@kloenk.dev>
Subject: [PATCH 1/4] scripts: generate_rust_analyzer.py: extract `{build,register}_crate`
Date: Thu, 22 Jan 2026 12:30:45 -0500 [thread overview]
Message-ID: <20260122-rust-analyzer-types-v1-1-29cc2e91dcd5@kernel.org> (raw)
In-Reply-To: <20260122-rust-analyzer-types-v1-0-29cc2e91dcd5@kernel.org>
Extract helpers from `append_crate` to avoid the need to peek into
`crates[-1]`. This improves readability.
Change default parameters to `None` with true defaults applied in
`build_crate` to avoid repeating the defaults in wrapper functions such
as `append_crate`.
Use `ruff format` to format modified lines.
Suggested-by: Trevor Gross <tmgross@umich.edu>
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com>
Tested-by: Daniel Almeida <daniel.almeida@collabora.com>
Reviewed-by: Fiona Behrens <me@kloenk.dev>
Reviewed-by: Trevor Gross <tmgross@umich.edu>
Signed-off-by: Tamir Duberstein <tamird@kernel.org>
---
scripts/generate_rust_analyzer.py | 76 +++++++++++++++++++++++++++++++--------
1 file changed, 62 insertions(+), 14 deletions(-)
diff --git a/scripts/generate_rust_analyzer.py b/scripts/generate_rust_analyzer.py
index 147d0cc94068..fbf686f0dced 100755
--- a/scripts/generate_rust_analyzer.py
+++ b/scripts/generate_rust_analyzer.py
@@ -35,7 +35,22 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs, core_edit
crates_indexes = {}
crates_cfgs = args_crates_cfgs(cfgs)
- def append_crate(display_name, root_module, deps, cfg=[], is_workspace_member=True, is_proc_macro=False, edition="2021"):
+ def build_crate(
+ display_name,
+ root_module,
+ deps,
+ *,
+ cfg,
+ is_workspace_member,
+ is_proc_macro,
+ edition,
+ ):
+ cfg = cfg if cfg is not None else []
+ is_workspace_member = (
+ is_workspace_member if is_workspace_member is not None else True
+ )
+ is_proc_macro = is_proc_macro if is_proc_macro is not None else False
+ edition = edition if edition is not None else "2021"
crate = {
"display_name": display_name,
"root_module": str(root_module),
@@ -54,20 +69,46 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs, core_edit
stdin=subprocess.DEVNULL,
).decode('utf-8').strip()
crate["proc_macro_dylib_path"] = f"{objtree}/rust/{proc_macro_dylib_name}"
- crates_indexes[display_name] = len(crates)
+ return crate
+
+ def register_crate(crate):
+ crates_indexes[crate["display_name"]] = len(crates)
crates.append(crate)
+ def append_crate(
+ display_name,
+ root_module,
+ deps,
+ *,
+ cfg=None,
+ is_workspace_member=None,
+ is_proc_macro=None,
+ edition=None,
+ ):
+ return register_crate(
+ build_crate(
+ display_name,
+ root_module,
+ deps,
+ cfg=cfg,
+ is_workspace_member=is_workspace_member,
+ is_proc_macro=is_proc_macro,
+ edition=edition,
+ )
+ )
+
def append_sysroot_crate(
display_name,
deps,
- cfg=[],
- edition="2021",
+ *,
+ cfg=None,
+ edition=None,
):
- append_crate(
+ return append_crate(
display_name,
sysroot_src / display_name / "src" / "lib.rs",
deps,
- cfg,
+ cfg=cfg,
is_workspace_member=False,
edition=edition,
)
@@ -145,20 +186,27 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs, core_edit
display_name,
deps,
):
- append_crate(
+ crate = build_crate(
display_name,
srctree / "rust"/ display_name / "lib.rs",
deps,
cfg=cfg,
+ is_workspace_member=True,
+ is_proc_macro=False,
+ edition=None,
)
- crates[-1]["env"]["OBJTREE"] = str(objtree.resolve(True))
- crates[-1]["source"] = {
- "include_dirs": [
- str(srctree / "rust" / display_name),
- str(objtree / "rust")
- ],
- "exclude_dirs": [],
+ crate["env"]["OBJTREE"] = str(objtree.resolve(True))
+ crate_with_generated = {
+ **crate,
+ "source": {
+ "include_dirs": [
+ str(srctree / "rust" / display_name),
+ str(objtree / "rust"),
+ ],
+ "exclude_dirs": [],
+ },
}
+ return register_crate(crate_with_generated)
append_crate_with_generated("bindings", ["core", "ffi", "pin_init"])
append_crate_with_generated("uapi", ["core", "ffi", "pin_init"])
--
2.52.0
next prev parent reply other threads:[~2026-01-22 17:30 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-22 17:30 [PATCH 0/4] scripts: generate_rust_analyzer.py: tidy and add type hints Tamir Duberstein
2026-01-22 17:30 ` Tamir Duberstein [this message]
2026-01-22 17:30 ` [PATCH 2/4] scripts: generate_rust_analyzer.py: drop `"is_proc_macro": false` Tamir Duberstein
2026-01-22 17:30 ` [PATCH 3/4] scripts: generate_rust_analyzer.py: add type hints Tamir Duberstein
2026-01-22 17:30 ` [PATCH 4/4] scripts: generate_rust_analyzer.py: identify crates explicitly Tamir Duberstein
2026-01-28 6:06 ` [PATCH 0/4] scripts: generate_rust_analyzer.py: tidy and add type hints Jesung Yang
2026-01-30 19:56 ` Tamir Duberstein
2026-01-30 20:11 ` Miguel Ojeda
2026-01-30 20:24 ` Tamir Duberstein
2026-01-30 20:31 ` Tamir Duberstein
2026-01-30 20:42 ` Miguel Ojeda
2026-03-02 16:23 ` Tamir Duberstein
2026-01-30 20:32 ` Miguel Ojeda
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=20260122-rust-analyzer-types-v1-1-29cc2e91dcd5@kernel.org \
--to=tamird@kernel.org \
--cc=a.hindborg@kernel.org \
--cc=aliceryhl@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=gary@garyguo.net \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=me@kloenk.dev \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.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 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.