Message ID | 20220512071819.199873-2-liuhangbin@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | selftests/bpf: fix ima_setup.sh missing issue | expand |
On Thu, May 12, 2022 at 12:18 AM Hangbin Liu <liuhangbin@gmail.com> wrote: > > KP fixed ima_setup.sh missing issue when build test_progs separately with > commit 854055c0cf30 ("selftests/bpf: Fix flavored variants of > test_ima"). But the fix is incorrect because the build will failed with > error: > > $ OUTPUT="/tmp/bpf" make test_progs > [...] > make: *** No rule to make target '/tmp/bpf/ima_setup.sh', needed by 'ima_setup.sh'. Stop. > > Fix it by adding a new variable TRUNNER_EXTRA_BUILD to build extra binaries. > Left TRUNNER_EXTRA_FILES only for copying files > > Fixes: 854055c0cf30 ("selftests/bpf: Fix flavored variants of test_ima") > Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> > --- > tools/testing/selftests/bpf/Makefile | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile > index 3820608faf57..5944d3a8fff6 100644 > --- a/tools/testing/selftests/bpf/Makefile > +++ b/tools/testing/selftests/bpf/Makefile > @@ -466,10 +466,10 @@ $(TRUNNER_EXTRA_OBJS): $(TRUNNER_OUTPUT)/%.o: \ > > # non-flavored in-srctree builds receive special treatment, in particular, we > # do not need to copy extra resources (see e.g. test_btf_dump_case()) > -$(TRUNNER_BINARY)-extras: $(TRUNNER_EXTRA_FILES) | $(TRUNNER_OUTPUT) > +$(TRUNNER_BINARY)-extras: $(TRUNNER_EXTRA_BUILD) | $(TRUNNER_OUTPUT) > ifneq ($2:$(OUTPUT),:$(shell pwd)) > $$(call msg,EXT-COPY,$(TRUNNER_BINARY),$(TRUNNER_EXTRA_FILES)) > - $(Q)rsync -aq $$^ $(TRUNNER_OUTPUT)/ > + $(Q)rsync -aq $(TRUNNER_EXTRA_FILES) $(TRUNNER_OUTPUT)/ > endif > > $(OUTPUT)/$(TRUNNER_BINARY): $(TRUNNER_TEST_OBJS) \ > @@ -490,9 +490,9 @@ TRUNNER_EXTRA_SOURCES := test_progs.c cgroup_helpers.c trace_helpers.c \ > network_helpers.c testing_helpers.c \ > btf_helpers.c flow_dissector_load.h \ > cap_helpers.c > -TRUNNER_EXTRA_FILES := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ > - ima_setup.sh \ > +TRUNNER_EXTRA_BUILD := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ > $(wildcard progs/btf_dump_test_case_*.c) note that progs/btf_dump_test_case_*.c are not built, they are just copied over (C source files), so I don't think this fix is necessary. btw, I tried running `OUTPUT="/tmp/bpf" make test_progs` and it didn't error out. But tbh, I'd recommend building everything instead of building individual targets. > +TRUNNER_EXTRA_FILES := $(TRUNNER_EXTRA_BUILD) ima_setup.sh > TRUNNER_BPF_BUILD_RULE := CLANG_BPF_BUILD_RULE > TRUNNER_BPF_CFLAGS := $(BPF_CFLAGS) $(CLANG_CFLAGS) -DENABLE_ATOMICS_TESTS > $(eval $(call DEFINE_TEST_RUNNER,test_progs)) > @@ -513,6 +513,7 @@ endif > TRUNNER_TESTS_DIR := map_tests > TRUNNER_BPF_PROGS_DIR := progs > TRUNNER_EXTRA_SOURCES := test_maps.c > +TRUNNER_EXTRA_BUILD := > TRUNNER_EXTRA_FILES := > TRUNNER_BPF_BUILD_RULE := $$(error no BPF objects should be built) > TRUNNER_BPF_CFLAGS := > -- > 2.35.1 >
On Fri, May 13, 2022 at 02:58:05PM -0700, Andrii Nakryiko wrote: > > -TRUNNER_EXTRA_FILES := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ > > - ima_setup.sh \ > > +TRUNNER_EXTRA_BUILD := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ > > $(wildcard progs/btf_dump_test_case_*.c) > > > note that progs/btf_dump_test_case_*.c are not built, they are just > copied over (C source files), so I don't think this fix is necessary. > > btw, I tried running `OUTPUT="/tmp/bpf" make test_progs` and it didn't > error out. But tbh, I'd recommend building everything instead of > building individual targets. After update the code to latest bpf-next. It works this time, the ima_setup.sh was copied to target folder correctly. EXT-COPY [test_progs] urandom_read bpf_testmod.ko liburandom_read.so ima_setup.sh btf_dump_test_case_bitfields.c btf_dump_test_case_multidim.c btf_dump_test_case_namespacing.c btf_dump_test_case_ordering.c btf_dump_test_case_packing.c btf_dump_test_case_padding.c btf_dump_test_case_syntax.c BINARY test_progs Not sure why the previous kernel doesn't work. But anyway I will drop this patch. On the other hand, when I build with latest bpf-next. I got error like: """ # OUTPUT="/tmp/bpf" make test_progs BINARY urandom_read gcc -g -O0 -rdynamic -Wall -Werror -DHAVE_GENHDR -I/home/net/tools/testing/selftests/bpf -I/tmp/bpf/tools/include -I/home/net/include/generated -I/home/net/tools/lib -I/home/net/tools/include -I/home/net/tools/include/uapi -I/tmp/bpf urandom_read.c urandom_read_aux.c \ liburandom_read.so -lelf -lz -lrt -lpthread \ -Wl,-rpath=. -Wl,--build-id=sha1 -o /tmp/bpf/urandom_read /usr/bin/ld: cannot find liburandom_read.so: No such file or directory collect2: error: ld returned 1 exit status make: *** [Makefile:177: /tmp/bpf/urandom_read] Error 1 # ls /tmp/bpf/liburandom_read.so /tmp/bpf/liburandom_read.so """ after I copy to liburandom_read.so back to tools/testing/selftests/bpf the build success. """ # cp /tmp/bpf/liburandom_read.so /home/net/tools/testing/selftests/bpf/ # gcc -g -O0 -rdynamic -Wall -Werror -DHAVE_GENHDR -I/home/net/tools/testing/selftests/bpf -I/tmp/bpf/tools/include -I/home/net/include/generated -I/home/net/tools/lib -I/home/net/tools/include -I/home/net/tools/include/uapi -I/tmp/bpf urandom_read.c urandom_read_aux.c liburandom_read.so -lelf -lz -lrt -lpthread -Wl,-rpath=. -Wl,--build-id=sha1 -o /tmp/bpf/urandom_read # echo $? 0 """ Do you know why this happens? Thanks Hangbin
On Sun, May 15, 2022 at 8:53 PM Hangbin Liu <liuhangbin@gmail.com> wrote: > > On Fri, May 13, 2022 at 02:58:05PM -0700, Andrii Nakryiko wrote: > > > -TRUNNER_EXTRA_FILES := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ > > > - ima_setup.sh \ > > > +TRUNNER_EXTRA_BUILD := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ > > > $(wildcard progs/btf_dump_test_case_*.c) > > > > > > note that progs/btf_dump_test_case_*.c are not built, they are just > > copied over (C source files), so I don't think this fix is necessary. > > > > btw, I tried running `OUTPUT="/tmp/bpf" make test_progs` and it didn't > > error out. But tbh, I'd recommend building everything instead of > > building individual targets. > > After update the code to latest bpf-next. It works this time, the ima_setup.sh > was copied to target folder correctly. > > EXT-COPY [test_progs] urandom_read bpf_testmod.ko liburandom_read.so ima_setup.sh btf_dump_test_case_bitfields.c btf_dump_test_case_multidim.c btf_dump_test_case_namespacing.c btf_dump_test_case_ordering.c btf_dump_test_case_packing.c btf_dump_test_case_padding.c btf_dump_test_case_syntax.c > BINARY test_progs > > Not sure why the previous kernel doesn't work. But anyway I will drop this patch. > > On the other hand, when I build with latest bpf-next. I got error like: > > """ > # OUTPUT="/tmp/bpf" make test_progs > BINARY urandom_read gcc -g -O0 -rdynamic -Wall -Werror -DHAVE_GENHDR -I/home/net/tools/testing/selftests/bpf -I/tmp/bpf/tools/include -I/home/net/include/generated -I/home/net/tools/lib -I/home/net/tools/include -I/home/net/tools/include/uapi -I/tmp/bpf urandom_read.c urandom_read_aux.c \ > liburandom_read.so -lelf -lz -lrt -lpthread \ > -Wl,-rpath=. -Wl,--build-id=sha1 -o /tmp/bpf/urandom_read we assume liburandom_read.so is going to be under selftests/bpf here, but it's actually under $(OUTPUT)/ Can you try $(OUTPUT)/liburandom_read.so? I suspect this might break -rpath=., though, but let's try this first? > /usr/bin/ld: cannot find liburandom_read.so: No such file or directory collect2: error: ld returned 1 exit status > make: *** [Makefile:177: /tmp/bpf/urandom_read] Error 1 > > # ls /tmp/bpf/liburandom_read.so > /tmp/bpf/liburandom_read.so > """ > > after I copy to liburandom_read.so back to tools/testing/selftests/bpf the build > success. > > """ > # cp /tmp/bpf/liburandom_read.so /home/net/tools/testing/selftests/bpf/ > # gcc -g -O0 -rdynamic -Wall -Werror -DHAVE_GENHDR -I/home/net/tools/testing/selftests/bpf -I/tmp/bpf/tools/include -I/home/net/include/generated -I/home/net/tools/lib -I/home/net/tools/include -I/home/net/tools/include/uapi -I/tmp/bpf urandom_read.c urandom_read_aux.c liburandom_read.so -lelf -lz -lrt -lpthread -Wl,-rpath=. -Wl,--build-id=sha1 -o /tmp/bpf/urandom_read > # echo $? > 0 > """ > > Do you know why this happens? > > Thanks > Hangbin
On Wed, May 18, 2022 at 03:36:53PM -0700, Andrii Nakryiko wrote: > > On Fri, May 13, 2022 at 02:58:05PM -0700, Andrii Nakryiko wrote: > > > > -TRUNNER_EXTRA_FILES := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ > > > > - ima_setup.sh \ > > > > +TRUNNER_EXTRA_BUILD := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ > > > > $(wildcard progs/btf_dump_test_case_*.c) > > > > > > > > > note that progs/btf_dump_test_case_*.c are not built, they are just > > > copied over (C source files), so I don't think this fix is necessary. > > > > > > btw, I tried running `OUTPUT="/tmp/bpf" make test_progs` and it didn't > > > error out. But tbh, I'd recommend building everything instead of > > > building individual targets. > > > > After update the code to latest bpf-next. It works this time, the ima_setup.sh > > was copied to target folder correctly. > > > > EXT-COPY [test_progs] urandom_read bpf_testmod.ko liburandom_read.so ima_setup.sh btf_dump_test_case_bitfields.c btf_dump_test_case_multidim.c btf_dump_test_case_namespacing.c btf_dump_test_case_ordering.c btf_dump_test_case_packing.c btf_dump_test_case_padding.c btf_dump_test_case_syntax.c > > BINARY test_progs > > > > Not sure why the previous kernel doesn't work. But anyway I will drop this patch. > > > > On the other hand, when I build with latest bpf-next. I got error like: > > > > """ > > # OUTPUT="/tmp/bpf" make test_progs > > BINARY urandom_read gcc -g -O0 -rdynamic -Wall -Werror -DHAVE_GENHDR -I/home/net/tools/testing/selftests/bpf -I/tmp/bpf/tools/include -I/home/net/include/generated -I/home/net/tools/lib -I/home/net/tools/include -I/home/net/tools/include/uapi -I/tmp/bpf urandom_read.c urandom_read_aux.c \ > > liburandom_read.so -lelf -lz -lrt -lpthread \ > > -Wl,-rpath=. -Wl,--build-id=sha1 -o /tmp/bpf/urandom_read > > we assume liburandom_read.so is going to be under selftests/bpf here, > but it's actually under $(OUTPUT)/ > > Can you try $(OUTPUT)/liburandom_read.so? I suspect this might break > -rpath=., though, but let's try this first? Sigh.. After rebase to latest bpf-next, to make clean and re-do `OUTPUT="/tmp/bpf" make test_progs`, There is no liburandom_read.so build issue but the ima_setup.sh error come up again... LINK resolve_btfids LIB liburandom_read.so BINARY urandom_read MOD bpf_testmod.ko CC [M] /home/net/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.o MODPOST /home/net/tools/testing/selftests/bpf/bpf_testmod/Module.symvers CC [M] /home/net/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.mod.o LD [M] /home/net/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.ko BTF [M] /home/net/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.ko make: *** No rule to make target '/tmp/bpf/ima_setup.sh', needed by 'ima_setup.sh'. Stop. Not sure if it's a build environment setup issue or others. Hangbin
On Wed, May 18, 2022 at 7:44 PM Hangbin Liu <liuhangbin@gmail.com> wrote: > > On Wed, May 18, 2022 at 03:36:53PM -0700, Andrii Nakryiko wrote: > > > On Fri, May 13, 2022 at 02:58:05PM -0700, Andrii Nakryiko wrote: > > > > > -TRUNNER_EXTRA_FILES := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ > > > > > - ima_setup.sh \ > > > > > +TRUNNER_EXTRA_BUILD := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ > > > > > $(wildcard progs/btf_dump_test_case_*.c) > > > > > > > > > > > > note that progs/btf_dump_test_case_*.c are not built, they are just > > > > copied over (C source files), so I don't think this fix is necessary. > > > > > > > > btw, I tried running `OUTPUT="/tmp/bpf" make test_progs` and it didn't > > > > error out. But tbh, I'd recommend building everything instead of > > > > building individual targets. > > > > > > After update the code to latest bpf-next. It works this time, the ima_setup.sh > > > was copied to target folder correctly. > > > > > > EXT-COPY [test_progs] urandom_read bpf_testmod.ko liburandom_read.so ima_setup.sh btf_dump_test_case_bitfields.c btf_dump_test_case_multidim.c btf_dump_test_case_namespacing.c btf_dump_test_case_ordering.c btf_dump_test_case_packing.c btf_dump_test_case_padding.c btf_dump_test_case_syntax.c > > > BINARY test_progs > > > > > > Not sure why the previous kernel doesn't work. But anyway I will drop this patch. > > > > > > On the other hand, when I build with latest bpf-next. I got error like: > > > > > > """ > > > # OUTPUT="/tmp/bpf" make test_progs > > > BINARY urandom_read gcc -g -O0 -rdynamic -Wall -Werror -DHAVE_GENHDR -I/home/net/tools/testing/selftests/bpf -I/tmp/bpf/tools/include -I/home/net/include/generated -I/home/net/tools/lib -I/home/net/tools/include -I/home/net/tools/include/uapi -I/tmp/bpf urandom_read.c urandom_read_aux.c \ > > > liburandom_read.so -lelf -lz -lrt -lpthread \ > > > -Wl,-rpath=. -Wl,--build-id=sha1 -o /tmp/bpf/urandom_read > > > > we assume liburandom_read.so is going to be under selftests/bpf here, > > but it's actually under $(OUTPUT)/ > > > > Can you try $(OUTPUT)/liburandom_read.so? I suspect this might break > > -rpath=., though, but let's try this first? > > Sigh.. After rebase to latest bpf-next, to make clean and re-do > `OUTPUT="/tmp/bpf" make test_progs`, There is no liburandom_read.so build > issue but the ima_setup.sh error come up again... > > LINK resolve_btfids > LIB liburandom_read.so > BINARY urandom_read > MOD bpf_testmod.ko > CC [M] /home/net/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.o > MODPOST /home/net/tools/testing/selftests/bpf/bpf_testmod/Module.symvers > CC [M] /home/net/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.mod.o > LD [M] /home/net/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.ko > BTF [M] /home/net/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.ko > make: *** No rule to make target '/tmp/bpf/ima_setup.sh', needed by 'ima_setup.sh'. Stop. > > Not sure if it's a build environment setup issue or others. I don't use OUTPUT when building selftests and see no issues, so this must be related. If you care about OUTPUT working please try to debug and figure this out. > > Hangbin
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile index 3820608faf57..5944d3a8fff6 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -466,10 +466,10 @@ $(TRUNNER_EXTRA_OBJS): $(TRUNNER_OUTPUT)/%.o: \ # non-flavored in-srctree builds receive special treatment, in particular, we # do not need to copy extra resources (see e.g. test_btf_dump_case()) -$(TRUNNER_BINARY)-extras: $(TRUNNER_EXTRA_FILES) | $(TRUNNER_OUTPUT) +$(TRUNNER_BINARY)-extras: $(TRUNNER_EXTRA_BUILD) | $(TRUNNER_OUTPUT) ifneq ($2:$(OUTPUT),:$(shell pwd)) $$(call msg,EXT-COPY,$(TRUNNER_BINARY),$(TRUNNER_EXTRA_FILES)) - $(Q)rsync -aq $$^ $(TRUNNER_OUTPUT)/ + $(Q)rsync -aq $(TRUNNER_EXTRA_FILES) $(TRUNNER_OUTPUT)/ endif $(OUTPUT)/$(TRUNNER_BINARY): $(TRUNNER_TEST_OBJS) \ @@ -490,9 +490,9 @@ TRUNNER_EXTRA_SOURCES := test_progs.c cgroup_helpers.c trace_helpers.c \ network_helpers.c testing_helpers.c \ btf_helpers.c flow_dissector_load.h \ cap_helpers.c -TRUNNER_EXTRA_FILES := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ - ima_setup.sh \ +TRUNNER_EXTRA_BUILD := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ $(wildcard progs/btf_dump_test_case_*.c) +TRUNNER_EXTRA_FILES := $(TRUNNER_EXTRA_BUILD) ima_setup.sh TRUNNER_BPF_BUILD_RULE := CLANG_BPF_BUILD_RULE TRUNNER_BPF_CFLAGS := $(BPF_CFLAGS) $(CLANG_CFLAGS) -DENABLE_ATOMICS_TESTS $(eval $(call DEFINE_TEST_RUNNER,test_progs)) @@ -513,6 +513,7 @@ endif TRUNNER_TESTS_DIR := map_tests TRUNNER_BPF_PROGS_DIR := progs TRUNNER_EXTRA_SOURCES := test_maps.c +TRUNNER_EXTRA_BUILD := TRUNNER_EXTRA_FILES := TRUNNER_BPF_BUILD_RULE := $$(error no BPF objects should be built) TRUNNER_BPF_CFLAGS :=
KP fixed ima_setup.sh missing issue when build test_progs separately with commit 854055c0cf30 ("selftests/bpf: Fix flavored variants of test_ima"). But the fix is incorrect because the build will failed with error: $ OUTPUT="/tmp/bpf" make test_progs [...] make: *** No rule to make target '/tmp/bpf/ima_setup.sh', needed by 'ima_setup.sh'. Stop. Fix it by adding a new variable TRUNNER_EXTRA_BUILD to build extra binaries. Left TRUNNER_EXTRA_FILES only for copying files Fixes: 854055c0cf30 ("selftests/bpf: Fix flavored variants of test_ima") Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> --- tools/testing/selftests/bpf/Makefile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)