[PATCH 08/23] kbuild: simplify find command for rustfmt
From: Masahiro Yamada
Date: Tue Sep 17 2024 - 10:19:30 EST
The current 'find' command does not prune the rust/test directory
itself, requiring an additional 'grep -Fv' command to exclude it.
This is cumbersome.
The correct use of the -prune option can be seen in the 'make clean'
rule.
[Current command]
$ find . -type f -name '*.rs' -o -path ./rust/test -prune | wc
70 70 1939
$ find . -type f -name '*.rs' -o -path ./rust/test -prune | grep rust/test
./rust/test
[Improved command]
$ find . -path ./rust/test -prune -o -type f -name '*.rs' -print | wc
69 69 1927
$ find . -path ./rust/test -prune -o -type f -name '*.rs' -print | grep rust/test
With the improved 'find' command, the grep command is no longer needed.
There is also no need to use the absolute path, so $(abs_srctree) can be
replaced with $(srctree).
The pruned directory rust/test must be prefixed with $(srctree) instead
of $(objtree). Otherwise, 'make O=... rustfmt' would visit the stale
rust/test directory remaining in the source tree.
Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
---
Makefile | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index 5b16e0605a77..4992b2895dd5 100644
--- a/Makefile
+++ b/Makefile
@@ -1740,9 +1740,8 @@ PHONY += rustfmt rustfmtcheck
# when matching, which is a problem when e.g. `srctree` is `..`.
# We `grep` afterwards in order to remove the directory entry itself.
rustfmt:
- $(Q)find $(abs_srctree) -type f -name '*.rs' \
- -o -path $(abs_objtree)/rust/test -prune \
- | grep -Fv $(abs_objtree)/rust/test \
+ $(Q)find $(srctree) -path $(srctree)/rust/test -prune \
+ -o -type f -name '*.rs' -print \
| grep -Fv generated \
| xargs $(RUSTFMT) $(rustfmt_flags)
--
2.43.0