On Wed, Jun 12, 2019 at 11:09 AM Dmitry Vyukov <dvyukov@xxxxxxxxxx> wrote: > > On Tue, Jun 11, 2019 at 9:20 PM shuah <shuah@xxxxxxxxxx> wrote: > > > > > > On 6/11/19 10:03 AM, Dmitry Vyukov wrote: > > > > On Tue, Jun 11, 2019 at 5:16 PM shuah <shuah@xxxxxxxxxx> wrote: > > > >> > > > >> Hi Dmitry, > > > >> > > > >> On 6/11/19 4:30 AM, Dmitry Vyukov wrote: > > > >>> Hi, > > > >>> > > > >>> I've tried to build kselftests for several years now, but I always > > > >>> find the build broken. Which makes me wonder if the instructions are > > > >>> broken or something. I follow the instructions in > > > >>> Documentation/dev-tools/kselftest.rst and start with "make -C > > > >>> tools/testing/selftests". Here is the errors I get on the upstream > > > >>> commit 16d72dd4891fecc1e1bf7ca193bb7d5b9804c038: > > > >>>> error: unable to create target: 'No available targets are compatible > > > >>> with triple "bpf"' > > > >>> 1 error generated. > > > >>> Makefile:259: recipe for target 'elfdep' failed > > > >>> Makefile:156: recipe for target 'all' failed > > > >>> Makefile:106: recipe for target > > > >>> '/linux/tools/testing/selftests/bpf/libbpf.a' failed > > > >>> test_execve.c:4:10: fatal error: cap-ng.h: No such file or directory > > > >> > > > >> These errors are due to missing dependencies. You will need > > > >> > > > >> libmount-dev > > > >> libcap-ng-dev > > > >> libelf-dev > > > >> > > > >> for bpf to build and also clang > > > >> > > > >>> ../lib.mk:138: recipe for target > > > >>> '/linux/tools/testing/selftests/capabilities/test_execve' failed > > > >>> gpio-mockup-chardev.c:20:10: fatal error: libmount.h: No such file or directory > <builtin>: recipe for target 'gpio-mockup-chardev' failed > > > >>> fuse_mnt.c:17:10: fatal error: fuse.h: No such file or directory > > > >> > > > >> libfuse-dev is missing. > > > >> > > > >>> ../lib.mk:138: recipe for target > > > >>> '/linux/tools/testing/selftests/memfd/fuse_mnt' failed > > > >>> collect2: error: ld returned 1 exit status > > > >>> ../lib.mk:138: recipe for target > > > >>> '/linux/tools/testing/selftests/mqueue/mq_open_tests' failed > > > >> > > > >> Needs libpopt-dev > > > >> > > > >>> reuseport_bpf_numa.c:24:10: fatal error: numa.h: No such file or directory > > > >> > > > >> Needs libnuma-dev > > > >> > > > >>> ../lib.mk:138: recipe for target > > > >>> '/linux/tools/testing/selftests/net/reuseport_bpf_numa' failed > > > >>> mlock-random-test.c:8:10: fatal error: sys/capability.h: No such file > > > >>> or directory > ../lib.mk:138: recipe for target > > > >>> '/linux/tools/testing/selftests/vm/mlock-random-test' failed > > > >>> > > > >>> Here is full log: > > > >>> > > > >>> https://gist.githubusercontent.com/dvyukov/47430636e160f297b657df5ba2efa82b/raw/7babc4db228b88f341a376c15e8bc9c4c3b02160/gistfile1.txt > > > >>> > > > >>> I have libelf-dev installed. Do I need to install something else? Or > > > >>> run some other command? > > > >> > > > >> ii libelf-dev:amd 0.170-0.4ubu amd64 libelf1 development > > > >> libraries and > > > >> ii libelf1:amd64 0.170-0.4ubu amd64 library to read and write > > > >> ELF fil > > > >> > > > >> > > > >> All of the above built for me on Linux 5.2-rc4. Try installing all of > > > >> these and let me know if you still see problems. > > > > > > > > > > > > Hi Shuah, > > > > > > > > Thanks for quick reply! > > > > > > > > I've installed these: libmount-dev libcap-ng-dev libfuse-dev > > > > libpopt-dev libnuma-dev. > > > > libelf-dev I already had. And for clang I switched to distro-provided one. > > > > > > > > This reduced number of errors, but I still see some: > > > > > > > > clang: error: unable to execute command: Broken pipe > > > > clang: error: clang frontend command failed due to signal (use -v to > > > > see invocation) > > > > Makefile:259: recipe for target 'elfdep' failed > > > > Makefile:156: recipe for target 'all' failed > > > > Makefile:106: recipe for target > > > > '/linux/tools/testing/selftests/bpf/libbpf.a' failed > > > > > > Getting bpf compile to work take a few steps. If I remember correctly, > > > You will need llvm as well. Here is what I have on my system: > > > > > > ii libllvm6.0:amd 1:6.0-1ubunt amd64 Modular compiler and > > > toolchain te > > > ii llvm 1:6.0-41~exp amd64 Low-Level Virtual Machine > > > (LLVM) > > > ii llvm-6.0 1:6.0-1ubunt amd64 Modular compiler and > > > toolchain te > > > ii llvm-6.0-dev 1:6.0-1ubunt amd64 Modular compiler and > > > toolchain te > > > un llvm-6.0-doc <none> <none> (no description available) > > > ii llvm-6.0-runti 1:6.0-1ubunt amd64 Modular compiler and > > > toolchain te > > > ii llvm-runtime 1:6.0-41~exp amd64 Low-Level Virtual Machine > > > (LLVM), > > > > > > > timestamping.c:249:19: error: ‘SIOCGSTAMP’ undeclared (first use in > > > > this function); did you mean ‘SIOCGSTAMPNS’? > > > > ../../lib.mk:138: recipe for target > > > > '/linux/tools/testing/selftests/networking/timestamping/timestamping' > > > > failed > > > > mlock-random-test.c:8:10: fatal error: sys/capability.h: No such file > > > > or directory > > > > > > Do you have libcap-dev installed? > > > > > > ii libcap-dev:amd 1:2.25-1.2 amd64 POSIX 1003.1e capabilities > > > (devel > > > ii libcap-ng-dev 0.7.7-3.1 amd64 Development and header > > > files for > > > ii libcap-ng0:amd 0.7.7-3.1 amd64 An alternate POSIX > > > capabilities l > > > ii libcap2:amd64 1:2.25-1.2 amd64 POSIX 1003.1e capabilities > > > (libra > > > ii libcap2-bin 1:2.25-1.2 amd64 POSIX 1003.1e capabilities > > > (utili > > > un libcap2-dev <none> <none> (no description available) > > > > I've installed libcap-dev and resolved the missing header. > > > > I've also installed llvm llvm-6.0 llvm-6.0-dev llvm-6.0-doc > > libllvm6.0 llvm-6.0-runtime llvm-runtime and it fixed crashing > > compiler. > > But bpf tests build was still failing due to missing libelf. But I had > > the library, so I went and removed some random files: > > tools/testing/selftests/bpf/{feature,FEATURE-DUMP.libbpf}. Don't ask > > me why these. > > > > I am now down to just 1 build error: > > > > CC /usr/local/google/home/dvyukov/src/linux/tools/testing/selftests/bpf/str_error.o > > timestamping.c:249:19: error: ‘SIOCGSTAMP’ undeclared (first use in > > this function); did you mean ‘SIOCGSTAMPNS’? > > > Is this a non-fatal error? Usually when make produces errors, one > expects that nothing is done and it was aborted mid-way. But make > seems to produce some test binaries by now. > > > Reading the doc further, these command seem to implicitly assume that > the tests will run right on my host machine: > > $ make -C tools/testing/selftests run_tests > $ make kselftest > > Is it right? At least I don't see how it's configured to run them > somewhere else? Or it uses something like qemu by default to run the > kernel under test? > If it runs the tests on the host, it can't work for me. I don't have > the test kernel installed and there is no way I can do this. Policy > rules aside, this is yet untested kernel, so by installing it I am > risking losing my whole machine and all data... > > What am I missing? Reading further. "Install selftests" and "Running installed selftests" sections. Is it something I can use to copy the pre-built tests to the test machine? The sections don't spell it, so I am just trying to second guess. Or what's the purpose of installing? The "Running installed selftests" section says: "Kselftest install as well as the Kselftest tarball provide a script named "run_kselftest.sh" to run the tests". What is the "Kselftest tarball"? Where does one get one? I don't see any mentions of "tarball" anywhere else in the doc.