Re: Request for Help - Too many perl arguments as of 2.43.0-rc0
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 4, 2023, 07:59 UTC
- Message-ID
- <xmqq8r7egd8u.fsf@gitster.g>
- In-Reply-To
- <CAPig+cQpxRQnhffR8EWWRhqJPmOeOuCE3qsuMcnDyuMLLbTH8Q@mail.gmail.com>
Eric Sunshine <sunshine@sunshineco.com> writes:
> Also, in the longer term, as you suggested, `xargs` is likely a more > fruitful solution.
Hmph, the list of our test scripts exceed command line limit? That sounds a bit nasty, as we somehow need to prepare a pipe and feed them into it, in order to drive xargs downstream of the pipe.
Ideally if there were a GNUMake function that slices a list into sublists of "reasonable" lengths, we could use it to directly drive N invocations of check-non-portable-shell script instead of xargs, but I didn't find one. Here is I came up with, using foreach that is "slice the list into many sublists of 1 element", but it made me feel dirty.
t/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git c/t/Makefile w/t/Makefile index 3e00cdd801..f9ac6bb4eb 100644 --- c/t/Makefile +++ w/t/Makefile @@ -122,7 +122,8 @@ test-lint-executable: echo >&2 "non-executable tests:" $$bad; exit 1; } test-lint-shell-syntax: - @'$(PERL_PATH_SQ)' check-non-portable-shell.pl $(T) $(THELPERS) $(TPERF) + @{ $(foreach t,$(T) $(THELPERS) $(TPERF),echo "$t";) } | \ + xargs '$(PERL_PATH_SQ)' check-non-portable-shell.pl test-lint-filenames: @# We do *not* pass a glob to ls-files but use grep instead, to catch