diff options
| author | Tamir Duberstein <tamird@kernel.org> | 2026-01-22 12:30:45 -0500 |
|---|---|---|
| committer | Tamir Duberstein <tamird@kernel.org> | 2026-03-09 13:20:04 -0400 |
| commit | e33d58ee0c081c4468d0ea4f03fcb93c6cb5e21a (patch) | |
| tree | 70e4c234edb0ba3806526443e0fd20e340809cc1 /scripts | |
| parent | 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681 (diff) | |
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`.
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>
Reviewed-by: Jesung Yang <y.j3ms.n@gmail.com>
Tested-by: Jesung Yang <y.j3ms.n@gmail.com>
Link: https://patch.msgid.link/20260122-rust-analyzer-types-v1-1-29cc2e91dcd5@kernel.org
Signed-off-by: Tamir Duberstein <tamird@kernel.org>
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/generate_rust_analyzer.py | 74 |
1 files changed, 61 insertions, 13 deletions
diff --git a/scripts/generate_rust_analyzer.py b/scripts/generate_rust_analyzer.py index f9b545104f21..a650689c7da4 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,19 +69,45 @@ 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=[], + *, + cfg=None, ): - append_crate( + return append_crate( display_name, sysroot_src / display_name / "src" / "lib.rs", deps, - cfg, + cfg=cfg, is_workspace_member=False, # Miguel Ojeda writes: # @@ -169,20 +210,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"]) |
