Jakub Kicinski wrote: > On Fri, 30 Aug 2024 11:20:05 -0400 Willem de Bruijn wrote: > > Kselftest install does not preserve directories. > > > > So all .pkt files are copied into net/packetdrill root. This is messy. > > More fundamentally it breaks the includes in the files (e..g, `source > > ../common/defaults.sh`). > > Can you show an example of exact commands and what happens?
Running directly works fine: $ KSELFTEST_PKT_INTERP=packetdrill_ksft.sh $ make -C tools/testing/selftests \ TARGETS=net/packetdrill O=/tmp run_tests TAP version 13 1..3 # timeout set to 45 # selftests: net/packetdrill: client.pkt # TAP version 13 # 1..2 # ok 1 ipv4 # ok 2 ipv6 # # Totals: pass:2 fail:0 xfail:0 xpass:0 skip:0 error:0 ok 1 selftests: net/packetdrill: client.pkt [..etc..] Installing does not: $ make -C tools/testing/selftests/ \ TARGETS=net/packetdrill \ install INSTALL_PATH=$INSTALL_DIR $ cd $INSTALL_DIR $ export KSELFTEST_PKT_INTERP=packetdrill_ksft.sh $ ./run_kselftest.sh -c net/packetdrill TAP version 13 1..3 # timeout set to 45 # selftests: net/packetdrill: client.pkt # TAP version 13 # 1..2 # sh: line 1: ../common/defaults.sh: No such file or directory # ./client.pkt: error executing init command: non-zero status 127 # not ok 1 ipv4 # sh: line 1: ../common/defaults.sh: No such file or directory # ./client.pkt: error executing init command: non-zero status 127 # not ok 2 ipv6 # # Totals: pass:0 fail:2 xfail:0 xpass:0 skip:0 error:0 not ok 1 selftests: net/packetdrill: client.pkt # exit=1 Due to that relative path to defaults.sh inside the scripts. It is arguably a bit weird that the relative path of the TEST_PROGS differs before and after install. > We have directories in net/lib, and it's a target, and it works, no? net/lib is not a TARGET in tools/testing/selftests/Makefile. Its Makefile only generates dependencies for other targets: TEST_FILES, TEST_GEN_FILES and TEST_INCLUDES. This issue with preserving paths until recently also existed for helper files (TEST_FILES). TEST_INCLUDES was added expressly to preserve those paths (commit 2a0683be5b4c).