lkml.org 
[lkml]   [2020]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.5 015/189] selftests: fix too long argument
    Date
    From: Jiri Benc <jbenc@redhat.com>

    [ Upstream commit c363eb48ada5cf732b3f489fab799fc881097842 ]

    With some shells, the command construed for install of bpf selftests becomes
    too large due to long list of files:

    make[1]: execvp: /bin/sh: Argument list too long
    make[1]: *** [../lib.mk:73: install] Error 127

    Currently, each of the file lists is replicated three times in the command:
    in the shell 'if' condition, in the 'echo' and in the 'rsync'. Reduce that
    by one instance by using make conditionals and separate the echo and rsync
    into two shell commands. (One would be inclined to just remove the '@' at
    the beginning of the rsync command and let 'make' echo it by itself;
    unfortunately, it appears that the '@' in the front of mkdir silences output
    also for the following commands.)

    Also, separate handling of each of the lists to its own shell command.

    The semantics of the makefile is unchanged before and after the patch. The
    ability of individual test directories to override INSTALL_RULE is retained.

    Reported-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
    Tested-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
    Signed-off-by: Jiri Benc <jbenc@redhat.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/selftests/lib.mk | 23 +++++++++++++----------
    1 file changed, 13 insertions(+), 10 deletions(-)

    diff --git a/tools/testing/selftests/lib.mk b/tools/testing/selftests/lib.mk
    index 1c8a1963d03f8..3ed0134a764d4 100644
    --- a/tools/testing/selftests/lib.mk
    +++ b/tools/testing/selftests/lib.mk
    @@ -83,17 +83,20 @@ else
    $(call RUN_TESTS, $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) $(TEST_PROGS))
    endif

    +define INSTALL_SINGLE_RULE
    + $(if $(INSTALL_LIST),@mkdir -p $(INSTALL_PATH))
    + $(if $(INSTALL_LIST),@echo rsync -a $(INSTALL_LIST) $(INSTALL_PATH)/)
    + $(if $(INSTALL_LIST),@rsync -a $(INSTALL_LIST) $(INSTALL_PATH)/)
    +endef
    +
    define INSTALL_RULE
    - @if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then \
    - mkdir -p ${INSTALL_PATH}; \
    - echo "rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/"; \
    - rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/; \
    - fi
    - @if [ "X$(TEST_GEN_PROGS)$(TEST_CUSTOM_PROGS)$(TEST_GEN_PROGS_EXTENDED)$(TEST_GEN_FILES)" != "X" ]; then \
    - mkdir -p ${INSTALL_PATH}; \
    - echo "rsync -a $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/"; \
    - rsync -a $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/; \
    - fi
    + $(eval INSTALL_LIST = $(TEST_PROGS)) $(INSTALL_SINGLE_RULE)
    + $(eval INSTALL_LIST = $(TEST_PROGS_EXTENDED)) $(INSTALL_SINGLE_RULE)
    + $(eval INSTALL_LIST = $(TEST_FILES)) $(INSTALL_SINGLE_RULE)
    + $(eval INSTALL_LIST = $(TEST_GEN_PROGS)) $(INSTALL_SINGLE_RULE)
    + $(eval INSTALL_LIST = $(TEST_CUSTOM_PROGS)) $(INSTALL_SINGLE_RULE)
    + $(eval INSTALL_LIST = $(TEST_GEN_PROGS_EXTENDED)) $(INSTALL_SINGLE_RULE)
    + $(eval INSTALL_LIST = $(TEST_GEN_FILES)) $(INSTALL_SINGLE_RULE)
    endef

    install: all
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-03-10 13:57    [W:2.599 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site