Message ID | 20200805004757.2960750-1-andriin@fb.com |
---|---|
State | Accepted |
Delegated to: | BPF Maintainers |
Headers | show |
Series | [bpf] selftests/bpf: prevent runqslower from racing on building bpftool | expand |
Andrii Nakryiko wrote: > runqslower's Makefile is building/installing bpftool into > $(OUTPUT)/sbin/bpftool, which coincides with $(DEFAULT_BPFTOOL). In practice > this means that often when building selftests from scratch (after `make > clean`), selftests are racing with runqslower to simultaneously build bpftool > and one of the two processes fail due to file being busy. Prevent this race by > explicitly order-depending on $(BPFTOOL_DEFAULT). > > Fixes: a2c9652f751e ("selftests: Refactor build to remove tools/lib/bpf from include path") > Signed-off-by: Andrii Nakryiko <andriin@fb.com> > --- Acked-by: John Fastabend <john.fastabend@gmail.com>
On Wed, Aug 5, 2020 at 11:27 PM John Fastabend <john.fastabend@gmail.com> wrote: > > Andrii Nakryiko wrote: > > runqslower's Makefile is building/installing bpftool into > > $(OUTPUT)/sbin/bpftool, which coincides with $(DEFAULT_BPFTOOL). In practice > > this means that often when building selftests from scratch (after `make > > clean`), selftests are racing with runqslower to simultaneously build bpftool > > and one of the two processes fail due to file being busy. Prevent this race by > > explicitly order-depending on $(BPFTOOL_DEFAULT). > > > > Fixes: a2c9652f751e ("selftests: Refactor build to remove tools/lib/bpf from include path") > > Signed-off-by: Andrii Nakryiko <andriin@fb.com> > > --- > > Acked-by: John Fastabend <john.fastabend@gmail.com> Applied. Thanks
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile index e7a8cf83ba48..48425f9251b5 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -142,7 +142,9 @@ VMLINUX_BTF_PATHS ?= $(if $(O),$(O)/vmlinux) \ /boot/vmlinux-$(shell uname -r) VMLINUX_BTF ?= $(abspath $(firstword $(wildcard $(VMLINUX_BTF_PATHS)))) -$(OUTPUT)/runqslower: $(BPFOBJ) +DEFAULT_BPFTOOL := $(SCRATCH_DIR)/sbin/bpftool + +$(OUTPUT)/runqslower: $(BPFOBJ) | $(DEFAULT_BPFTOOL) $(Q)$(MAKE) $(submake_extras) -C $(TOOLSDIR)/bpf/runqslower \ OUTPUT=$(SCRATCH_DIR)/ VMLINUX_BTF=$(VMLINUX_BTF) \ BPFOBJ=$(BPFOBJ) BPF_INCLUDE=$(INCLUDE_DIR) && \ @@ -164,7 +166,6 @@ $(OUTPUT)/test_netcnt: cgroup_helpers.c $(OUTPUT)/test_sock_fields: cgroup_helpers.c $(OUTPUT)/test_sysctl: cgroup_helpers.c -DEFAULT_BPFTOOL := $(SCRATCH_DIR)/sbin/bpftool BPFTOOL ?= $(DEFAULT_BPFTOOL) $(DEFAULT_BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) \ $(BPFOBJ) | $(BUILD_DIR)/bpftool
runqslower's Makefile is building/installing bpftool into $(OUTPUT)/sbin/bpftool, which coincides with $(DEFAULT_BPFTOOL). In practice this means that often when building selftests from scratch (after `make clean`), selftests are racing with runqslower to simultaneously build bpftool and one of the two processes fail due to file being busy. Prevent this race by explicitly order-depending on $(BPFTOOL_DEFAULT). Fixes: a2c9652f751e ("selftests: Refactor build to remove tools/lib/bpf from include path") Signed-off-by: Andrii Nakryiko <andriin@fb.com> --- tools/testing/selftests/bpf/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)