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’?