[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20260122-rust-analyzer-types-v1-1-29cc2e91dcd5@kernel.org>
Date: Thu, 22 Jan 2026 12:30:45 -0500
From: Tamir Duberstein <tamird@...nel.org>
To: Jesung Yang <y.j3ms.n@...il.com>, Miguel Ojeda <ojeda@...nel.org>,
Boqun Feng <boqun.feng@...il.com>, Gary Guo <gary@...yguo.net>,
Björn Roy Baron <bjorn3_gh@...tonmail.com>,
Benno Lossin <lossin@...nel.org>, Andreas Hindborg <a.hindborg@...nel.org>,
Alice Ryhl <aliceryhl@...gle.com>, Trevor Gross <tmgross@...ch.edu>,
Danilo Krummrich <dakr@...nel.org>
Cc: rust-for-linux@...r.kernel.org, linux-kernel@...r.kernel.org,
Tamir Duberstein <tamird@...nel.org>,
Daniel Almeida <daniel.almeida@...labora.com>,
Fiona Behrens <me@...enk.dev>
Subject: [PATCH 1/4] scripts: generate_rust_analyzer.py: extract
`{build,register}_crate`
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@...ch.edu>
Reviewed-by: Daniel Almeida <daniel.almeida@...labora.com>
Tested-by: Daniel Almeida <daniel.almeida@...labora.com>
Reviewed-by: Fiona Behrens <me@...enk.dev>
Reviewed-by: Trevor Gross <tmgross@...ch.edu>
Signed-off-by: Tamir Duberstein <tamird@...nel.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
Powered by blists - more mailing lists