OSDN Git Service

scripts/tags.sh: Invoke 'realpath' via 'xargs'
authorCristian Ciocaltea <cristian.ciocaltea@collabora.com>
Mon, 16 May 2022 23:46:46 +0000 (02:46 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 May 2022 16:54:40 +0000 (18:54 +0200)
When COMPILED_SOURCE is set, running

  make ARCH=x86_64 COMPILED_SOURCE=1 cscope tags

could throw the following errors:

scripts/tags.sh: line 98: /usr/bin/realpath: Argument list too long
cscope: no source files found
scripts/tags.sh: line 98: /usr/bin/realpath: Argument list too long
ctags: No files specified. Try "ctags --help".

This is most likely to happen when the kernel is configured to build a
large number of modules, which has the consequence of passing too many
arguments when calling 'realpath' in 'all_compiled_sources()'.

Let's improve this by invoking 'realpath' through 'xargs', which takes
care of properly limiting the argument list.

Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Link: https://lore.kernel.org/r/20220516234646.531208-1-cristian.ciocaltea@collabora.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
scripts/tags.sh

index 16d475b..01fab3d 100755 (executable)
@@ -95,10 +95,13 @@ all_sources()
 
 all_compiled_sources()
 {
-       realpath -es $([ -z "$KBUILD_ABS_SRCTREE" ] && echo --relative-to=.) \
-               include/generated/autoconf.h $(find $ignore -name "*.cmd" -exec \
-               grep -Poh '(?(?=^source_.* \K).*|(?=^  \K\S).*(?= \\))' {} \+ |
-               awk '!a[$0]++') | sort -u
+       {
+               echo include/generated/autoconf.h
+               find $ignore -name "*.cmd" -exec \
+                       grep -Poh '(?(?=^source_.* \K).*|(?=^  \K\S).*(?= \\))' {} \+ |
+               awk '!a[$0]++'
+       } | xargs realpath -es $([ -z "$KBUILD_ABS_SRCTREE" ] && echo --relative-to=.) |
+       sort -u
 }
 
 all_target_sources()