On Tue, May 20, 2025 at 3:53 PM Miguel Ojeda ojeda@kernel.org wrote:
We rarely modify `.clippy.toml`, but currently we do not rebuild if that happens, thus it is easy to miss possible changes in lints.
Thus rebuild in case of changes.
Cc: stable@vger.kernel.org Reported-by: Tamir Duberstein tamird@gmail.com Closes: https://github.com/Rust-for-Linux/linux/issues/1151 Fixes: 7d56786edcbd ("rust: introduce `.clippy.toml`") Signed-off-by: Miguel Ojeda ojeda@kernel.org
rust/Makefile | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/rust/Makefile b/rust/Makefile index 3aca903a7d08..107299c32065 100644 --- a/rust/Makefile +++ b/rust/Makefile @@ -57,6 +57,10 @@ rustdoc_test_quiet=--test-args -q rustdoc_test_kernel_quiet=>/dev/null endif
+ifeq ($(KBUILD_CLIPPY),1)
clippy_toml := $(srctree)/.clippy.toml
+endif
core-cfgs = \ --cfg no_fp_fmt_parse
@@ -405,11 +409,12 @@ quiet_cmd_rustc_procmacro = $(RUSTC_OR_CLIPPY_QUIET) P $@ --crate-name $(patsubst lib%.$(libmacros_extension),%,$(notdir $@)) $<
# Procedural macros can only be used with the `rustc` that compiled it. -$(obj)/$(libmacros_name): $(src)/macros/lib.rs FORCE +$(obj)/$(libmacros_name): $(src)/macros/lib.rs $(clippy_toml) FORCE +$(call if_changed_dep,rustc_procmacro)
$(obj)/$(libpin_init_internal_name): private rustc_target_flags = --cfg kernel -$(obj)/$(libpin_init_internal_name): $(src)/pin-init/internal/src/lib.rs FORCE +$(obj)/$(libpin_init_internal_name): $(src)/pin-init/internal/src/lib.rs \
- $(clippy_toml) FORCE +$(call if_changed_dep,rustc_procmacro)
quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L $@ @@ -495,7 +500,8 @@ endif
$(obj)/compiler_builtins.o: private skip_gendwarfksyms = 1 $(obj)/compiler_builtins.o: private rustc_objcopy = -w -W '__*' -$(obj)/compiler_builtins.o: $(src)/compiler_builtins.rs $(obj)/core.o FORCE +$(obj)/compiler_builtins.o: $(src)/compiler_builtins.rs $(obj)/core.o \
- $(clippy_toml) FORCE +$(call if_changed_rule,rustc_library)
$(obj)/pin_init.o: private skip_gendwarfksyms = 1
This is only changing 3 targets, right? libmacros, libpin_init, and compiler_builtins. Can you help me understand why only these need to change? Is it because these are leaf nodes in the graph?
The `rusttest` target wouldn't rebuild properly, I think? Is it possible to apply this rule to all rust targets, rather than individual ones?