* [PATCH v3 0/2] rust: reduce duplicate information
@ 2026-01-27 13:55 Tamir Duberstein
2026-01-27 13:55 ` [PATCH v3 1/2] rust: kbuild: extract configs for reuse Tamir Duberstein
2026-01-27 13:55 ` [PATCH v3 2/2] scripts: generate_rust_analyzer.py: reduce cfg plumbing Tamir Duberstein
0 siblings, 2 replies; 8+ messages in thread
From: Tamir Duberstein @ 2026-01-27 13:55 UTC (permalink / raw)
To: Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron,
Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross,
Danilo Krummrich, Jesung Yang
Cc: rust-for-linux, linux-kernel, Nathan Chancellor, Nicolas Schier,
Linux Kbuild mailing list, Tamir Duberstein
This series reuses `rust/Makefile`'s knowledge of `pin_init` and
`pin_init_internal`'s `cfg`s in `scripts/generate_rust_analzyer.py` and
reduces the ceremony needed to use that knowledge in the script.
Signed-off-by: Tamir Duberstein <tamird@kernel.org>
---
Changes in v3:
- Move flag passing from patch 1 to patch 2. (Miguel Ojeda)
- Link to v2: https://patch.msgid.link/20260120-rust-analyzer-pin-init-duplication-v2-0-a1c76f0d3bef@kernel.org
Changes in v2:
- Split into two patches. (Miguel Ojeda)
- CC kbuild. (Miguel Ojeda)
- Link to v1: https://patch.msgid.link/20260116-rust-analyzer-pin-init-duplication-v1-1-5e85c5824a02@kernel.org
---
Tamir Duberstein (2):
rust: kbuild: extract configs for reuse
scripts: generate_rust_analyzer.py: reduce cfg plumbing
rust/Makefile | 32 +++++++++++++++++++++++---------
scripts/generate_rust_analyzer.py | 13 +++++--------
2 files changed, 28 insertions(+), 17 deletions(-)
---
base-commit: 74a862d251ad5f57b58738cfe0192d807b1a0313
change-id: 20260116-rust-analyzer-pin-init-duplication-a22d05221771
Best regards,
--
Tamir Duberstein <tamird@kernel.org>
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH v3 1/2] rust: kbuild: extract configs for reuse 2026-01-27 13:55 [PATCH v3 0/2] rust: reduce duplicate information Tamir Duberstein @ 2026-01-27 13:55 ` Tamir Duberstein 2026-01-30 4:43 ` Miguel Ojeda 2026-01-27 13:55 ` [PATCH v3 2/2] scripts: generate_rust_analyzer.py: reduce cfg plumbing Tamir Duberstein 1 sibling, 1 reply; 8+ messages in thread From: Tamir Duberstein @ 2026-01-27 13:55 UTC (permalink / raw) To: Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, Jesung Yang Cc: rust-for-linux, linux-kernel, Nathan Chancellor, Nicolas Schier, Linux Kbuild mailing list, Tamir Duberstein Extract `pin_init{,_internal}-{cfgs,flags}` to reduce duplication. Acked-by: Benno Lossin <lossin@kernel.org> Signed-off-by: Tamir Duberstein <tamird@kernel.org> --- rust/Makefile | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/rust/Makefile b/rust/Makefile index 5d357dce1704..280a18617627 100644 --- a/rust/Makefile +++ b/rust/Makefile @@ -210,16 +210,30 @@ rustdoc-ffi: private is-kernel-object := y rustdoc-ffi: $(src)/ffi.rs rustdoc-core FORCE +$(call if_changed,rustdoc) +pin_init_internal-cfgs := \ + kernel + +pin_init_internal-flags := \ + $(call cfgs-to-flags,$(pin_init_internal-cfgs)) + rustdoc-pin_init_internal: private rustdoc_host = yes -rustdoc-pin_init_internal: private rustc_target_flags = --cfg kernel \ +rustdoc-pin_init_internal: private rustc_target_flags = $(pin_init_internal-flags) \ --extern proc_macro --crate-type proc-macro rustdoc-pin_init_internal: $(src)/pin-init/internal/src/lib.rs \ rustdoc-clean FORCE +$(call if_changed,rustdoc) +pin_init-cfgs := \ + kernel + +pin_init-flags := \ + --extern pin_init_internal \ + --extern macros \ + $(call cfgs-to-flags,$(pin_init-cfgs)) + rustdoc-pin_init: private rustdoc_host = yes -rustdoc-pin_init: private rustc_target_flags = --extern pin_init_internal \ - --extern macros --extern alloc --cfg kernel --cfg feature=\"alloc\" +rustdoc-pin_init: private rustc_target_flags = $(pin_init-flags) \ + --extern alloc --cfg feature=\"alloc\" rustdoc-pin_init: $(src)/pin-init/src/lib.rs rustdoc-pin_init_internal \ rustdoc-macros FORCE +$(call if_changed,rustdoc) @@ -272,14 +286,13 @@ rusttestlib-macros: $(src)/macros/lib.rs \ rusttestlib-proc_macro2 rusttestlib-quote rusttestlib-syn FORCE +$(call if_changed,rustc_test_library) -rusttestlib-pin_init_internal: private rustc_target_flags = --cfg kernel \ +rusttestlib-pin_init_internal: private rustc_target_flags = $(pin_init_internal-flags) \ --extern proc_macro rusttestlib-pin_init_internal: private rustc_test_library_proc = yes rusttestlib-pin_init_internal: $(src)/pin-init/internal/src/lib.rs FORCE +$(call if_changed,rustc_test_library) -rusttestlib-pin_init: private rustc_target_flags = --extern pin_init_internal \ - --extern macros --cfg kernel +rusttestlib-pin_init: private rustc_target_flags = $(pin_init-flags) rusttestlib-pin_init: $(src)/pin-init/src/lib.rs rusttestlib-macros \ rusttestlib-pin_init_internal $(obj)/$(libpin_init_internal_name) FORCE +$(call if_changed,rustc_test_library) @@ -547,7 +560,7 @@ $(obj)/$(libmacros_name): $(src)/macros/lib.rs $(obj)/libproc_macro2.rlib \ $(obj)/libquote.rlib $(obj)/libsyn.rlib FORCE +$(call if_changed_dep,rustc_procmacro) -$(obj)/$(libpin_init_internal_name): private rustc_target_flags = --cfg kernel +$(obj)/$(libpin_init_internal_name): private rustc_target_flags = $(pin_init_internal-flags) $(obj)/$(libpin_init_internal_name): $(src)/pin-init/internal/src/lib.rs FORCE +$(call if_changed_dep,rustc_procmacro) @@ -642,8 +655,7 @@ $(obj)/compiler_builtins.o: $(src)/compiler_builtins.rs $(obj)/core.o FORCE +$(call if_changed_rule,rustc_library) $(obj)/pin_init.o: private skip_gendwarfksyms = 1 -$(obj)/pin_init.o: private rustc_target_flags = --extern pin_init_internal \ - --extern macros --cfg kernel +$(obj)/pin_init.o: private rustc_target_flags = $(pin_init-flags) $(obj)/pin_init.o: $(src)/pin-init/src/lib.rs $(obj)/compiler_builtins.o \ $(obj)/$(libpin_init_internal_name) $(obj)/$(libmacros_name) FORCE +$(call if_changed_rule,rustc_library) -- 2.52.0 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 1/2] rust: kbuild: extract configs for reuse 2026-01-27 13:55 ` [PATCH v3 1/2] rust: kbuild: extract configs for reuse Tamir Duberstein @ 2026-01-30 4:43 ` Miguel Ojeda 2026-01-30 11:24 ` Tamir Duberstein 0 siblings, 1 reply; 8+ messages in thread From: Miguel Ojeda @ 2026-01-30 4:43 UTC (permalink / raw) To: Tamir Duberstein Cc: Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, Jesung Yang, rust-for-linux, linux-kernel, Nathan Chancellor, Nicolas Schier, Linux Kbuild mailing list On Tue, Jan 27, 2026 at 2:55 PM Tamir Duberstein <tamird@kernel.org> wrote: > > Extract `pin_init{,_internal}-{cfgs,flags}` to reduce duplication. > > Acked-by: Benno Lossin <lossin@kernel.org> > Signed-off-by: Tamir Duberstein <tamird@kernel.org> Applied to `rust-next` -- thanks everyone! I rebased and things changed a fair bit since now we have a few `--extern`s more -- Tamir, please double-check that things will still work with your future rust-analyzer patch on top! [ The new variables will be used later on to easily pass them to the `scripts/generate_rust_analyzer.py` script. - Miguel ] [ Rebased. Moved new variables above. Reworded title. - Miguel ] Cheers, Miguel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 1/2] rust: kbuild: extract configs for reuse 2026-01-30 4:43 ` Miguel Ojeda @ 2026-01-30 11:24 ` Tamir Duberstein 0 siblings, 0 replies; 8+ messages in thread From: Tamir Duberstein @ 2026-01-30 11:24 UTC (permalink / raw) To: Miguel Ojeda Cc: Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, Jesung Yang, rust-for-linux, linux-kernel, Nathan Chancellor, Nicolas Schier, Linux Kbuild mailing list On Thu, Jan 29, 2026 at 11:43 PM Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> wrote: > > On Tue, Jan 27, 2026 at 2:55 PM Tamir Duberstein <tamird@kernel.org> wrote: > > > > Extract `pin_init{,_internal}-{cfgs,flags}` to reduce duplication. > > > > Acked-by: Benno Lossin <lossin@kernel.org> > > Signed-off-by: Tamir Duberstein <tamird@kernel.org> > > Applied to `rust-next` -- thanks everyone! > > I rebased and things changed a fair bit since now we have a few > `--extern`s more -- Tamir, please double-check that things will still > work with your future rust-analyzer patch on top! Looks good. > [ The new variables will be used later on to easily pass them to > the `scripts/generate_rust_analyzer.py` script. - Miguel ] > > [ Rebased. Moved new variables above. Reworded title. - Miguel ] > > Cheers, > Miguel Thanks Miguel! ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 2/2] scripts: generate_rust_analyzer.py: reduce cfg plumbing 2026-01-27 13:55 [PATCH v3 0/2] rust: reduce duplicate information Tamir Duberstein 2026-01-27 13:55 ` [PATCH v3 1/2] rust: kbuild: extract configs for reuse Tamir Duberstein @ 2026-01-27 13:55 ` Tamir Duberstein 2026-01-27 15:05 ` Miguel Ojeda 1 sibling, 1 reply; 8+ messages in thread From: Tamir Duberstein @ 2026-01-27 13:55 UTC (permalink / raw) To: Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, Jesung Yang Cc: rust-for-linux, linux-kernel, Nathan Chancellor, Nicolas Schier, Linux Kbuild mailing list, Tamir Duberstein - rust/Makefile: pass `pin_init{,_internal}-cfgs` from rust/Makefile to scripts/generate_rust_analyzer.py. - scripts/generate_rust_analyzer.py: centralize `cfg` lookup in `append_crate` to avoid having to do so for each crate. Remove hardcoded `cfg`s for `pin-init{,-internal}` now that these are passed from `rust/Makefile`. Reviewed-by: Jesung Yang <y.j3ms.n@gmail.com> Acked-by: Benno Lossin <lossin@kernel.org> Signed-off-by: Tamir Duberstein <tamird@kernel.org> --- rust/Makefile | 2 ++ scripts/generate_rust_analyzer.py | 13 +++++-------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/rust/Makefile b/rust/Makefile index 280a18617627..2461c5835a7e 100644 --- a/rust/Makefile +++ b/rust/Makefile @@ -583,6 +583,8 @@ rust-analyzer: --cfgs='proc_macro2=$(proc_macro2-cfgs)' \ --cfgs='quote=$(quote-cfgs)' \ --cfgs='syn=$(syn-cfgs)' \ + --cfgs='pin_init_internal=$(pin_init_internal-cfgs)' \ + --cfgs='pin_init=$(pin_init-cfgs)' \ $(realpath $(srctree)) $(realpath $(objtree)) \ $(rustc_sysroot) $(RUST_LIB_SRC) $(if $(KBUILD_EXTMOD),$(srcroot)) \ > rust-project.json diff --git a/scripts/generate_rust_analyzer.py b/scripts/generate_rust_analyzer.py index 147d0cc94068..b96d3cbe3df1 100755 --- a/scripts/generate_rust_analyzer.py +++ b/scripts/generate_rust_analyzer.py @@ -35,7 +35,9 @@ 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 append_crate(display_name, root_module, deps, cfg=None, is_workspace_member=True, is_proc_macro=False, edition="2021"): + if cfg is None: + cfg = crates_cfgs.get(display_name, []) crate = { "display_name": display_name, "root_module": str(root_module), @@ -60,7 +62,7 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs, core_edit def append_sysroot_crate( display_name, deps, - cfg=[], + cfg=None, edition="2021", ): append_crate( @@ -75,7 +77,7 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs, core_edit # NB: sysroot crates reexport items from one another so setting up our transitive dependencies # here is important for ensuring that rust-analyzer can resolve symbols. The sources of truth # for this dependency graph are `(sysroot_src / crate / "Cargo.toml" for crate in crates)`. - append_sysroot_crate("core", [], cfg=crates_cfgs.get("core", []), edition=core_edition) + append_sysroot_crate("core", [], edition=core_edition) append_sysroot_crate("alloc", ["core"]) append_sysroot_crate("std", ["alloc", "core"]) append_sysroot_crate("proc_macro", ["core", "std"]) @@ -90,21 +92,18 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs, core_edit "proc_macro2", srctree / "rust" / "proc-macro2" / "lib.rs", ["core", "alloc", "std", "proc_macro"], - cfg=crates_cfgs["proc_macro2"], ) append_crate( "quote", srctree / "rust" / "quote" / "lib.rs", ["alloc", "proc_macro", "proc_macro2"], - cfg=crates_cfgs["quote"], ) append_crate( "syn", srctree / "rust" / "syn" / "lib.rs", ["proc_macro", "proc_macro2", "quote"], - cfg=crates_cfgs["syn"], ) append_crate( @@ -124,7 +123,6 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs, core_edit "pin_init_internal", srctree / "rust" / "pin-init" / "internal" / "src" / "lib.rs", [], - cfg=["kernel"], is_proc_macro=True, ) @@ -132,7 +130,6 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs, core_edit "pin_init", srctree / "rust" / "pin-init" / "src" / "lib.rs", ["core", "pin_init_internal", "macros"], - cfg=["kernel"], ) append_crate( -- 2.52.0 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 2/2] scripts: generate_rust_analyzer.py: reduce cfg plumbing 2026-01-27 13:55 ` [PATCH v3 2/2] scripts: generate_rust_analyzer.py: reduce cfg plumbing Tamir Duberstein @ 2026-01-27 15:05 ` Miguel Ojeda 2026-01-27 16:41 ` Tamir Duberstein 0 siblings, 1 reply; 8+ messages in thread From: Miguel Ojeda @ 2026-01-27 15:05 UTC (permalink / raw) To: Tamir Duberstein Cc: Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, Jesung Yang, rust-for-linux, linux-kernel, Nathan Chancellor, Nicolas Schier, Linux Kbuild mailing list On Tue, Jan 27, 2026 at 2:56 PM Tamir Duberstein <tamird@kernel.org> wrote: > > - rust/Makefile: pass `pin_init{,_internal}-cfgs` from rust/Makefile to > scripts/generate_rust_analyzer.py. > - scripts/generate_rust_analyzer.py: centralize `cfg` lookup in > `append_crate` to avoid having to do so for each crate. Remove > hardcoded `cfg`s for `pin-init{,-internal}` now that these are passed > from `rust/Makefile`. > > Reviewed-by: Jesung Yang <y.j3ms.n@gmail.com> > Acked-by: Benno Lossin <lossin@kernel.org> > Signed-off-by: Tamir Duberstein <tamird@kernel.org> I may still take #1 this cycle, but this one you will need either way next cycle, so: Acked-by: Miguel Ojeda <ojeda@kernel.org> By the way, the commit messages (in the kernel, I know e.g. some GNU projects do it differently) are not typically bullet points, i.e. they usually tell a story and make the points relate to each other, so e.g. it could say that what the first bullet point mentions is needed for the second etc. (I am mentioning this sort of thing since you will be taking commits from others etc.) Thanks! Cheers, Miguel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 2/2] scripts: generate_rust_analyzer.py: reduce cfg plumbing 2026-01-27 15:05 ` Miguel Ojeda @ 2026-01-27 16:41 ` Tamir Duberstein 2026-03-02 17:15 ` Tamir Duberstein 0 siblings, 1 reply; 8+ messages in thread From: Tamir Duberstein @ 2026-01-27 16:41 UTC (permalink / raw) To: Miguel Ojeda Cc: Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, Jesung Yang, rust-for-linux, linux-kernel, Nathan Chancellor, Nicolas Schier, Linux Kbuild mailing list On Tue, Jan 27, 2026 at 10:05 AM Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> wrote: > > On Tue, Jan 27, 2026 at 2:56 PM Tamir Duberstein <tamird@kernel.org> wrote: > > > > - rust/Makefile: pass `pin_init{,_internal}-cfgs` from rust/Makefile to > > scripts/generate_rust_analyzer.py. > > - scripts/generate_rust_analyzer.py: centralize `cfg` lookup in > > `append_crate` to avoid having to do so for each crate. Remove > > hardcoded `cfg`s for `pin-init{,-internal}` now that these are passed > > from `rust/Makefile`. > > > > Reviewed-by: Jesung Yang <y.j3ms.n@gmail.com> > > Acked-by: Benno Lossin <lossin@kernel.org> > > Signed-off-by: Tamir Duberstein <tamird@kernel.org> > > I may still take #1 this cycle, but this one you will need either way > next cycle, so: > > Acked-by: Miguel Ojeda <ojeda@kernel.org> > > By the way, the commit messages (in the kernel, I know e.g. some GNU > projects do it differently) are not typically bullet points, i.e. they > usually tell a story and make the points relate to each other, so e.g. > it could say that what the first bullet point mentions is needed for > the second etc. > > (I am mentioning this sort of thing since you will be taking commits > from others etc.) Makes sense, thanks. I'll reword into paragraph form on apply. Thanks! Tamir ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 2/2] scripts: generate_rust_analyzer.py: reduce cfg plumbing 2026-01-27 16:41 ` Tamir Duberstein @ 2026-03-02 17:15 ` Tamir Duberstein 0 siblings, 0 replies; 8+ messages in thread From: Tamir Duberstein @ 2026-03-02 17:15 UTC (permalink / raw) To: Miguel Ojeda Cc: Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, Jesung Yang, rust-for-linux, linux-kernel, Nathan Chancellor, Nicolas Schier, Linux Kbuild mailing list On Tue, Jan 27, 2026 at 11:41 AM Tamir Duberstein <tamird@kernel.org> wrote: > > On Tue, Jan 27, 2026 at 10:05 AM Miguel Ojeda > <miguel.ojeda.sandonis@gmail.com> wrote: > > > > On Tue, Jan 27, 2026 at 2:56 PM Tamir Duberstein <tamird@kernel.org> wrote: > > > > > > - rust/Makefile: pass `pin_init{,_internal}-cfgs` from rust/Makefile to > > > scripts/generate_rust_analyzer.py. > > > - scripts/generate_rust_analyzer.py: centralize `cfg` lookup in > > > `append_crate` to avoid having to do so for each crate. Remove > > > hardcoded `cfg`s for `pin-init{,-internal}` now that these are passed > > > from `rust/Makefile`. > > > > > > Reviewed-by: Jesung Yang <y.j3ms.n@gmail.com> > > > Acked-by: Benno Lossin <lossin@kernel.org> > > > Signed-off-by: Tamir Duberstein <tamird@kernel.org> > > > > I may still take #1 this cycle, but this one you will need either way > > next cycle, so: > > > > Acked-by: Miguel Ojeda <ojeda@kernel.org> > > > > By the way, the commit messages (in the kernel, I know e.g. some GNU > > projects do it differently) are not typically bullet points, i.e. they > > usually tell a story and make the points relate to each other, so e.g. > > it could say that what the first bullet point mentions is needed for > > the second etc. > > > > (I am mentioning this sort of thing since you will be taking commits > > from others etc.) > > Makes sense, thanks. I'll reword into paragraph form on apply. > > Thanks! > Tamir Applied to `rust-analyzer-next`. Thanks all! ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-03-02 17:16 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-01-27 13:55 [PATCH v3 0/2] rust: reduce duplicate information Tamir Duberstein 2026-01-27 13:55 ` [PATCH v3 1/2] rust: kbuild: extract configs for reuse Tamir Duberstein 2026-01-30 4:43 ` Miguel Ojeda 2026-01-30 11:24 ` Tamir Duberstein 2026-01-27 13:55 ` [PATCH v3 2/2] scripts: generate_rust_analyzer.py: reduce cfg plumbing Tamir Duberstein 2026-01-27 15:05 ` Miguel Ojeda 2026-01-27 16:41 ` Tamir Duberstein 2026-03-02 17:15 ` Tamir Duberstein
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®