Message ID | 20240424113655.2382993-1-jcmvbkbc@gmail.com |
---|---|
State | New |
Headers | show |
Series | Makerules: fix out-of-tree build error "Argument list too long" | expand |
Hi On 24 April 2024 13:36:55 CEST, Max Filippov <jcmvbkbc@gmail.com> wrote: >Make rule that announces and makes static libc archive can generate >command line that is too long when a full path O= option is used. That >breaks the build with the following message: > > make: /bin/sh: Argument list too long > >Use make $(file) construct to generate file list file and use that file >as $(AR) argument instead. Busybox ar does not (yet) support passing in a file containing the list of files, I fear? Can you maybe add support for that, please? thanks > >Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> >--- > Makerules | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > >diff --git a/Makerules b/Makerules >index fe8a7916e657..96f2a71ec49a 100644 >--- a/Makerules >+++ b/Makerules >@@ -276,7 +276,7 @@ cmd_compile.mi= $(cmd_compile.m:-c=-E -dD) $(UCLIBC_EXTRA_CPPFLAGS) > cmd_compile-m = $(CC) $^ -c -o $@ $(CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $(@D))) $(CFLAGS-$(notdir $@)) $(sort $(foreach d,$(^:$(top_srcdir)=),$(collect_multi_flags))) > cmd_strip = $(STRIPTOOL) $(STRIP_FLAGS) $^ > cmd_t_strip = $(STRIPTOOL) $(STRIP_FLAGS) $@ >-cmd_ar = $(AR) $(ARFLAGS) $@ $(call objects_with_syms,,$^) >+cmd_ar = $(AR) $(ARFLAGS) $@ @$@.list > > define do_ln > @$(disp_ln) >@@ -317,6 +317,7 @@ hcompile.u= @$(disp_hcompile.u); $(cmd_hcompile.u) > hcompile.o= @$(disp_hcompile.o); $(cmd_hcompile.o) > > define do_ar >+ @$(file >$@.list,$(call objects_with_syms,,$^)) > @$(disp_ar) ; $(cmd_ar) > @$(do_t_strip) > endef
On Mon, Jun 3, 2024 at 6:03 AM <rep.dot.nop@gmail.com> wrote: > On 24 April 2024 13:36:55 CEST, Max Filippov <jcmvbkbc@gmail.com> wrote: > >Make rule that announces and makes static libc archive can generate > >command line that is too long when a full path O= option is used. That > >breaks the build with the following message: > > > > make: /bin/sh: Argument list too long > > > >Use make $(file) construct to generate file list file and use that file > >as $(AR) argument instead. > > > Busybox ar does not (yet) support passing in a file containing the list of files, I fear? > Can you maybe add support for that, please? At supporting such ar, or at adding support for @file notation to busybox ar?
On 3 June 2024 18:23:33 CEST, Max Filippov <jcmvbkbc@gmail.com> wrote: >On Mon, Jun 3, 2024 at 6:03 AM <rep.dot.nop@gmail.com> wrote: >> On 24 April 2024 13:36:55 CEST, Max Filippov <jcmvbkbc@gmail.com> wrote: >> >Make rule that announces and makes static libc archive can generate >> >command line that is too long when a full path O= option is used. That >> >breaks the build with the following message: >> > >> > make: /bin/sh: Argument list too long >> > >> >Use make $(file) construct to generate file list file and use that file >> >as $(AR) argument instead. >> >> >> Busybox ar does not (yet) support passing in a file containing the list of files, I fear? >> Can you maybe add support for that, please? > >At supporting such ar, or at adding support for @file notation to busybox ar? > The latter, adding @file support to busybox ar.
On Mon, Jun 3, 2024 at 11:43 PM <rep.dot.nop@gmail.com> wrote: > On 3 June 2024 18:23:33 CEST, Max Filippov <jcmvbkbc@gmail.com> wrote: > >On Mon, Jun 3, 2024 at 6:03 AM <rep.dot.nop@gmail.com> wrote: > >> On 24 April 2024 13:36:55 CEST, Max Filippov <jcmvbkbc@gmail.com> wrote: > >> >Make rule that announces and makes static libc archive can generate > >> >command line that is too long when a full path O= option is used. That > >> >breaks the build with the following message: > >> > > >> > make: /bin/sh: Argument list too long > >> > > >> >Use make $(file) construct to generate file list file and use that file > >> >as $(AR) argument instead. > >> > >> Busybox ar does not (yet) support passing in a file containing the list of files, I fear? > >> Can you maybe add support for that, please? > > > >At supporting such ar, or at adding support for @file notation to busybox ar? > > The latter, adding @file support to busybox ar. Sure, I'll take a look.
diff --git a/Makerules b/Makerules index fe8a7916e657..96f2a71ec49a 100644 --- a/Makerules +++ b/Makerules @@ -276,7 +276,7 @@ cmd_compile.mi= $(cmd_compile.m:-c=-E -dD) $(UCLIBC_EXTRA_CPPFLAGS) cmd_compile-m = $(CC) $^ -c -o $@ $(CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $(@D))) $(CFLAGS-$(notdir $@)) $(sort $(foreach d,$(^:$(top_srcdir)=),$(collect_multi_flags))) cmd_strip = $(STRIPTOOL) $(STRIP_FLAGS) $^ cmd_t_strip = $(STRIPTOOL) $(STRIP_FLAGS) $@ -cmd_ar = $(AR) $(ARFLAGS) $@ $(call objects_with_syms,,$^) +cmd_ar = $(AR) $(ARFLAGS) $@ @$@.list define do_ln @$(disp_ln) @@ -317,6 +317,7 @@ hcompile.u= @$(disp_hcompile.u); $(cmd_hcompile.u) hcompile.o= @$(disp_hcompile.o); $(cmd_hcompile.o) define do_ar + @$(file >$@.list,$(call objects_with_syms,,$^)) @$(disp_ar) ; $(cmd_ar) @$(do_t_strip) endef
Make rule that announces and makes static libc archive can generate command line that is too long when a full path O= option is used. That breaks the build with the following message: make: /bin/sh: Argument list too long Use make $(file) construct to generate file list file and use that file as $(AR) argument instead. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> --- Makerules | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)