• Ilya Leoshkevich's avatar
    selftests: fix prepending $(OUTPUT) to $(TEST_PROGS) · cb4969e6
    Ilya Leoshkevich authored
    Currently the following command produces an error message:
    
        linux# make kselftest TARGETS=bpf O=/mnt/linux-build
        # selftests: bpf: test_libbpf.sh
        # ./test_libbpf.sh: line 23: ./test_libbpf_open: No such file or directory
        # test_libbpf: failed at file test_l4lb.o
        # selftests: test_libbpf [FAILED]
    
    The error message might not affect the return code of make, therefore
    one needs to grep make output in order to detect it.
    
    This is not the only instance of the same underlying problem; any test
    with more than one element in $(TEST_PROGS) fails the same way. Another
    example:
    
        linux# make O=/mnt/linux-build TARGETS=splice kselftest
        [...]
        # ./short_splice_read.sh: 15: ./splice_read: not found
        # FAIL: /sys/module/test_module/sections/.init.text 2
        not ok 2 selftests: splice: short_splice_read.sh # exit=1
    
    The current logic prepends $(OUTPUT) only to the first member of
    $(TEST_PROGS). After that, run_one() does
    
       cd `dirname $TEST`
    
    For all tests except the first one, `dirname $TEST` is ., which means
    they cannot access the files generated in $(OUTPUT).
    
    Fix by using $(addprefix) to prepend $(OUTPUT)/ to each member of
    $(TEST_PROGS).
    
    Fixes: 1a940687 ("selftests: lib.mk: copy test scripts and test files for make O=dir run")
    Signed-off-by: default avatarIlya Leoshkevich <iii@linux.ibm.com>
    Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
    cb4969e6
lib.mk 4.83 KB