* [PATCH bpf-next v2 0/5] selftests/bpf: Some build fixes
@ 2021-01-13 16:33 Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 1/5] selftests/bpf: Enable cross-building Jean-Philippe Brucker
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Jean-Philippe Brucker @ 2021-01-13 16:33 UTC (permalink / raw)
To: bpf
Cc: shuah, ast, daniel, andrii, kafai, songliubraving, yhs,
john.fastabend, kpsingh, linux-kselftest, Jean-Philippe Brucker
A few fixes for cross-building the sefltests out of tree. This will
enable wider automated testing on various Arm hardware.
Changes since v1 [1]:
* Use wildcard in patch 5
* Move the MAKE_DIRS declaration in patch 1
[1] https://lore.kernel.org/bpf/20210112135959.649075-1-jean-philippe@linaro.org/
Jean-Philippe Brucker (5):
selftests/bpf: Enable cross-building
selftests/bpf: Fix out-of-tree build
selftests/bpf: Move generated test files to $(TEST_GEN_FILES)
selftests/bpf: Fix installation of urandom_read
selftests/bpf: Install btf_dump test cases
tools/testing/selftests/bpf/Makefile | 58 ++++++++++++++++++++--------
1 file changed, 41 insertions(+), 17 deletions(-)
--
2.30.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH bpf-next v2 1/5] selftests/bpf: Enable cross-building
2021-01-13 16:33 [PATCH bpf-next v2 0/5] selftests/bpf: Some build fixes Jean-Philippe Brucker
@ 2021-01-13 16:33 ` Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 2/5] selftests/bpf: Fix out-of-tree build Jean-Philippe Brucker
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Jean-Philippe Brucker @ 2021-01-13 16:33 UTC (permalink / raw)
To: bpf
Cc: shuah, ast, daniel, andrii, kafai, songliubraving, yhs,
john.fastabend, kpsingh, linux-kselftest, Jean-Philippe Brucker
Build bpftool and resolve_btfids using the host toolchain when
cross-compiling, since they are executed during build to generate the
selftests. Add a host build directory in order to build both host and
target version of libbpf. Build host tools using $(HOSTCC) defined in
Makefile.include.
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
---
tools/testing/selftests/bpf/Makefile | 46 +++++++++++++++++++++-------
1 file changed, 35 insertions(+), 11 deletions(-)
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
index c51df6b91bef..95ce81513648 100644
--- a/tools/testing/selftests/bpf/Makefile
+++ b/tools/testing/selftests/bpf/Makefile
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
include ../../../../scripts/Kbuild.include
include ../../../scripts/Makefile.arch
+include ../../../scripts/Makefile.include
CXX ?= $(CROSS_COMPILE)g++
@@ -113,7 +114,15 @@ SCRATCH_DIR := $(OUTPUT)/tools
BUILD_DIR := $(SCRATCH_DIR)/build
INCLUDE_DIR := $(SCRATCH_DIR)/include
BPFOBJ := $(BUILD_DIR)/libbpf/libbpf.a
-RESOLVE_BTFIDS := $(BUILD_DIR)/resolve_btfids/resolve_btfids
+ifneq ($(CROSS_COMPILE),)
+HOST_BUILD_DIR := $(BUILD_DIR)/host
+HOST_SCRATCH_DIR := $(OUTPUT)/host-tools
+else
+HOST_BUILD_DIR := $(BUILD_DIR)
+HOST_SCRATCH_DIR := $(SCRATCH_DIR)
+endif
+HOST_BPFOBJ := $(HOST_BUILD_DIR)/libbpf/libbpf.a
+RESOLVE_BTFIDS := $(HOST_BUILD_DIR)/resolve_btfids/resolve_btfids
VMLINUX_BTF_PATHS ?= $(if $(O),$(O)/vmlinux) \
$(if $(KBUILD_OUTPUT),$(KBUILD_OUTPUT)/vmlinux) \
@@ -135,6 +144,14 @@ $(notdir $(TEST_GEN_PROGS) \
$(TEST_GEN_PROGS_EXTENDED) \
$(TEST_CUSTOM_PROGS)): %: $(OUTPUT)/% ;
+# sort removes libbpf duplicates when not cross-building
+MAKE_DIRS := $(sort $(BUILD_DIR)/libbpf $(HOST_BUILD_DIR)/libbpf \
+ $(HOST_BUILD_DIR)/bpftool $(HOST_BUILD_DIR)/resolve_btfids \
+ $(INCLUDE_DIR))
+$(MAKE_DIRS):
+ $(call msg,MKDIR,,$@)
+ $(Q)mkdir -p $@
+
$(OUTPUT)/%.o: %.c
$(call msg,CC,,$@)
$(Q)$(CC) $(CFLAGS) -c $(filter %.c,$^) $(LDLIBS) -o $@
@@ -157,7 +174,7 @@ $(OUTPUT)/test_stub.o: test_stub.c $(BPFOBJ)
$(call msg,CC,,$@)
$(Q)$(CC) -c $(CFLAGS) -o $@ $<
-DEFAULT_BPFTOOL := $(SCRATCH_DIR)/sbin/bpftool
+DEFAULT_BPFTOOL := $(HOST_SCRATCH_DIR)/sbin/bpftool
$(OUTPUT)/runqslower: $(BPFOBJ) | $(DEFAULT_BPFTOOL)
$(Q)$(MAKE) $(submake_extras) -C $(TOOLSDIR)/bpf/runqslower \
@@ -182,10 +199,11 @@ $(OUTPUT)/test_sysctl: cgroup_helpers.c
BPFTOOL ?= $(DEFAULT_BPFTOOL)
$(DEFAULT_BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) \
- $(BPFOBJ) | $(BUILD_DIR)/bpftool
+ $(HOST_BPFOBJ) | $(HOST_BUILD_DIR)/bpftool
$(Q)$(MAKE) $(submake_extras) -C $(BPFTOOLDIR) \
- OUTPUT=$(BUILD_DIR)/bpftool/ \
- prefix= DESTDIR=$(SCRATCH_DIR)/ install
+ CC=$(HOSTCC) LD=$(HOSTLD) \
+ OUTPUT=$(HOST_BUILD_DIR)/bpftool/ \
+ prefix= DESTDIR=$(HOST_SCRATCH_DIR)/ install
$(Q)mkdir -p $(BUILD_DIR)/bpftool/Documentation
$(Q)RST2MAN_OPTS="--exit-status=1" $(MAKE) $(submake_extras) \
-C $(BPFTOOLDIR)/Documentation \
@@ -198,9 +216,14 @@ $(BPFOBJ): $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile) \
$(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) OUTPUT=$(BUILD_DIR)/libbpf/ \
DESTDIR=$(SCRATCH_DIR) prefix= all install_headers
-$(BUILD_DIR)/libbpf $(BUILD_DIR)/bpftool $(BUILD_DIR)/resolve_btfids $(INCLUDE_DIR):
- $(call msg,MKDIR,,$@)
- $(Q)mkdir -p $@
+ifneq ($(BPFOBJ),$(HOST_BPFOBJ))
+$(HOST_BPFOBJ): $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile) \
+ ../../../include/uapi/linux/bpf.h \
+ | $(INCLUDE_DIR) $(HOST_BUILD_DIR)/libbpf
+ $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) \
+ OUTPUT=$(HOST_BUILD_DIR)/libbpf/ CC=$(HOSTCC) LD=$(HOSTLD) \
+ DESTDIR=$(HOST_SCRATCH_DIR)/ prefix= all install_headers
+endif
$(INCLUDE_DIR)/vmlinux.h: $(VMLINUX_BTF) | $(BPFTOOL) $(INCLUDE_DIR)
ifeq ($(VMLINUX_H),)
@@ -211,7 +234,7 @@ else
$(Q)cp "$(VMLINUX_H)" $@
endif
-$(RESOLVE_BTFIDS): $(BPFOBJ) | $(BUILD_DIR)/resolve_btfids \
+$(RESOLVE_BTFIDS): $(HOST_BPFOBJ) | $(HOST_BUILD_DIR)/resolve_btfids \
$(TOOLSDIR)/bpf/resolve_btfids/main.c \
$(TOOLSDIR)/lib/rbtree.c \
$(TOOLSDIR)/lib/zalloc.c \
@@ -219,7 +242,8 @@ $(RESOLVE_BTFIDS): $(BPFOBJ) | $(BUILD_DIR)/resolve_btfids \
$(TOOLSDIR)/lib/ctype.c \
$(TOOLSDIR)/lib/str_error_r.c
$(Q)$(MAKE) $(submake_extras) -C $(TOOLSDIR)/bpf/resolve_btfids \
- OUTPUT=$(BUILD_DIR)/resolve_btfids/ BPFOBJ=$(BPFOBJ)
+ CC=$(HOSTCC) LD=$(HOSTLD) AR=$(HOSTAR) \
+ OUTPUT=$(HOST_BUILD_DIR)/resolve_btfids/ BPFOBJ=$(HOST_BPFOBJ)
# Get Clang's default includes on this system, as opposed to those seen by
# '-target bpf'. This fixes "missing" files on some architectures/distros,
@@ -450,7 +474,7 @@ $(OUTPUT)/bench: $(OUTPUT)/bench.o $(OUTPUT)/testing_helpers.o \
$(call msg,BINARY,,$@)
$(Q)$(CC) $(LDFLAGS) -o $@ $(filter %.a %.o,$^) $(LDLIBS)
-EXTRA_CLEAN := $(TEST_CUSTOM_PROGS) $(SCRATCH_DIR) \
+EXTRA_CLEAN := $(TEST_CUSTOM_PROGS) $(SCRATCH_DIR) $(HOST_SCRATCH_DIR) \
prog_tests/tests.h map_tests/tests.h verifier/tests.h \
feature \
$(addprefix $(OUTPUT)/,*.o *.skel.h no_alu32 bpf_gcc bpf_testmod.ko)
--
2.30.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH bpf-next v2 2/5] selftests/bpf: Fix out-of-tree build
2021-01-13 16:33 [PATCH bpf-next v2 0/5] selftests/bpf: Some build fixes Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 1/5] selftests/bpf: Enable cross-building Jean-Philippe Brucker
@ 2021-01-13 16:33 ` Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 3/5] selftests/bpf: Move generated test files to $(TEST_GEN_FILES) Jean-Philippe Brucker
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Jean-Philippe Brucker @ 2021-01-13 16:33 UTC (permalink / raw)
To: bpf
Cc: shuah, ast, daniel, andrii, kafai, songliubraving, yhs,
john.fastabend, kpsingh, linux-kselftest, Jean-Philippe Brucker
When building out-of-tree, the .skel.h files are generated into the
$(OUTPUT) directory, rather than $(CURDIR). Add $(OUTPUT) to the include
paths.
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
---
tools/testing/selftests/bpf/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
index 95ce81513648..92888eed89f3 100644
--- a/tools/testing/selftests/bpf/Makefile
+++ b/tools/testing/selftests/bpf/Makefile
@@ -25,7 +25,7 @@ BPF_GCC ?= $(shell command -v bpf-gcc;)
SAN_CFLAGS ?=
CFLAGS += -g -rdynamic -Wall -O2 $(GENFLAGS) $(SAN_CFLAGS) \
-I$(CURDIR) -I$(INCLUDE_DIR) -I$(GENDIR) -I$(LIBDIR) \
- -I$(TOOLSINCDIR) -I$(APIDIR) \
+ -I$(TOOLSINCDIR) -I$(APIDIR) -I$(OUTPUT) \
-Dbpf_prog_load=bpf_prog_test_load \
-Dbpf_load_program=bpf_test_load_program
LDLIBS += -lcap -lelf -lz -lrt -lpthread
--
2.30.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH bpf-next v2 3/5] selftests/bpf: Move generated test files to $(TEST_GEN_FILES)
2021-01-13 16:33 [PATCH bpf-next v2 0/5] selftests/bpf: Some build fixes Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 1/5] selftests/bpf: Enable cross-building Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 2/5] selftests/bpf: Fix out-of-tree build Jean-Philippe Brucker
@ 2021-01-13 16:33 ` Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 4/5] selftests/bpf: Fix installation of urandom_read Jean-Philippe Brucker
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Jean-Philippe Brucker @ 2021-01-13 16:33 UTC (permalink / raw)
To: bpf
Cc: shuah, ast, daniel, andrii, kafai, songliubraving, yhs,
john.fastabend, kpsingh, linux-kselftest, Jean-Philippe Brucker
During an out-of-tree build, attempting to install the $(TEST_FILES)
into the $(OUTPUT) directory fails, because the objects were already
generated into $(OUTPUT):
rsync: [sender] link_stat "tools/testing/selftests/bpf/test_lwt_ip_encap.o" failed: No such file or directory (2)
rsync: [sender] link_stat "tools/testing/selftests/bpf/test_tc_edt.o" failed: No such file or directory (2)
Use $(TEST_GEN_FILES) instead.
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
---
tools/testing/selftests/bpf/Makefile | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
index 92888eed89f3..67cdf858f01f 100644
--- a/tools/testing/selftests/bpf/Makefile
+++ b/tools/testing/selftests/bpf/Makefile
@@ -44,10 +44,9 @@ ifneq ($(BPF_GCC),)
TEST_GEN_PROGS += test_progs-bpf_gcc
endif
-TEST_GEN_FILES =
-TEST_FILES = test_lwt_ip_encap.o \
- test_tc_edt.o \
- xsk_prereqs.sh
+TEST_GEN_FILES = test_lwt_ip_encap.o \
+ test_tc_edt.o
+TEST_FILES = xsk_prereqs.sh
# Order correspond to 'make run_tests' order
TEST_PROGS := test_kmod.sh \
--
2.30.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH bpf-next v2 4/5] selftests/bpf: Fix installation of urandom_read
2021-01-13 16:33 [PATCH bpf-next v2 0/5] selftests/bpf: Some build fixes Jean-Philippe Brucker
` (2 preceding siblings ...)
2021-01-13 16:33 ` [PATCH bpf-next v2 3/5] selftests/bpf: Move generated test files to $(TEST_GEN_FILES) Jean-Philippe Brucker
@ 2021-01-13 16:33 ` Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 5/5] selftests/bpf: Install btf_dump test cases Jean-Philippe Brucker
2021-01-14 3:10 ` [PATCH bpf-next v2 0/5] selftests/bpf: Some build fixes patchwork-bot+netdevbpf
5 siblings, 0 replies; 7+ messages in thread
From: Jean-Philippe Brucker @ 2021-01-13 16:33 UTC (permalink / raw)
To: bpf
Cc: shuah, ast, daniel, andrii, kafai, songliubraving, yhs,
john.fastabend, kpsingh, linux-kselftest, Jean-Philippe Brucker
For out-of-tree builds, $(TEST_CUSTOM_PROGS) require the $(OUTPUT)
prefix, otherwise the kselftest lib doesn't know how to install them:
rsync: [sender] link_stat "tools/testing/selftests/bpf/urandom_read" failed: No such file or directory (2)
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
---
tools/testing/selftests/bpf/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
index 67cdf858f01f..0fafdc022ac3 100644
--- a/tools/testing/selftests/bpf/Makefile
+++ b/tools/testing/selftests/bpf/Makefile
@@ -82,7 +82,7 @@ TEST_GEN_PROGS_EXTENDED = test_sock_addr test_skb_cgroup_id_user \
test_lirc_mode2_user xdping test_cpp runqslower bench bpf_testmod.ko \
xdpxceiver
-TEST_CUSTOM_PROGS = urandom_read
+TEST_CUSTOM_PROGS = $(OUTPUT)/urandom_read
# Emit succinct information message describing current building step
# $1 - generic step name (e.g., CC, LINK, etc);
--
2.30.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH bpf-next v2 5/5] selftests/bpf: Install btf_dump test cases
2021-01-13 16:33 [PATCH bpf-next v2 0/5] selftests/bpf: Some build fixes Jean-Philippe Brucker
` (3 preceding siblings ...)
2021-01-13 16:33 ` [PATCH bpf-next v2 4/5] selftests/bpf: Fix installation of urandom_read Jean-Philippe Brucker
@ 2021-01-13 16:33 ` Jean-Philippe Brucker
2021-01-14 3:10 ` [PATCH bpf-next v2 0/5] selftests/bpf: Some build fixes patchwork-bot+netdevbpf
5 siblings, 0 replies; 7+ messages in thread
From: Jean-Philippe Brucker @ 2021-01-13 16:33 UTC (permalink / raw)
To: bpf
Cc: shuah, ast, daniel, andrii, kafai, songliubraving, yhs,
john.fastabend, kpsingh, linux-kselftest, Jean-Philippe Brucker
The btf_dump test cannot access the original source files for comparison
when running the selftests out of tree, causing several failures:
awk: btf_dump_test_case_syntax.c: No such file or directory
...
Add those files to $(TEST_FILES) to have "make install" pick them up.
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
---
tools/testing/selftests/bpf/Makefile | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
index 0fafdc022ac3..7f8667ad113e 100644
--- a/tools/testing/selftests/bpf/Makefile
+++ b/tools/testing/selftests/bpf/Makefile
@@ -46,7 +46,8 @@ endif
TEST_GEN_FILES = test_lwt_ip_encap.o \
test_tc_edt.o
-TEST_FILES = xsk_prereqs.sh
+TEST_FILES = xsk_prereqs.sh \
+ $(wildcard progs/btf_dump_test_case_*.c)
# Order correspond to 'make run_tests' order
TEST_PROGS := test_kmod.sh \
--
2.30.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v2 0/5] selftests/bpf: Some build fixes
2021-01-13 16:33 [PATCH bpf-next v2 0/5] selftests/bpf: Some build fixes Jean-Philippe Brucker
` (4 preceding siblings ...)
2021-01-13 16:33 ` [PATCH bpf-next v2 5/5] selftests/bpf: Install btf_dump test cases Jean-Philippe Brucker
@ 2021-01-14 3:10 ` patchwork-bot+netdevbpf
5 siblings, 0 replies; 7+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-01-14 3:10 UTC (permalink / raw)
To: Jean-Philippe Brucker
Cc: bpf, shuah, ast, daniel, andrii, kafai, songliubraving, yhs,
john.fastabend, kpsingh, linux-kselftest
Hello:
This series was applied to bpf/bpf-next.git (refs/heads/master):
On Wed, 13 Jan 2021 17:33:15 +0100 you wrote:
> A few fixes for cross-building the sefltests out of tree. This will
> enable wider automated testing on various Arm hardware.
>
> Changes since v1 [1]:
> * Use wildcard in patch 5
> * Move the MAKE_DIRS declaration in patch 1
>
> [...]
Here is the summary with links:
- [bpf-next,v2,1/5] selftests/bpf: Enable cross-building
https://git.kernel.org/bpf/bpf-next/c/de11ae4f56fd
- [bpf-next,v2,2/5] selftests/bpf: Fix out-of-tree build
https://git.kernel.org/bpf/bpf-next/c/5837cedef6f3
- [bpf-next,v2,3/5] selftests/bpf: Move generated test files to $(TEST_GEN_FILES)
https://git.kernel.org/bpf/bpf-next/c/d6ac8cad50f0
- [bpf-next,v2,4/5] selftests/bpf: Fix installation of urandom_read
https://git.kernel.org/bpf/bpf-next/c/ca1e846711a8
- [bpf-next,v2,5/5] selftests/bpf: Install btf_dump test cases
https://git.kernel.org/bpf/bpf-next/c/b8d1cbef2ea4
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-01-14 3:11 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-13 16:33 [PATCH bpf-next v2 0/5] selftests/bpf: Some build fixes Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 1/5] selftests/bpf: Enable cross-building Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 2/5] selftests/bpf: Fix out-of-tree build Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 3/5] selftests/bpf: Move generated test files to $(TEST_GEN_FILES) Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 4/5] selftests/bpf: Fix installation of urandom_read Jean-Philippe Brucker
2021-01-13 16:33 ` [PATCH bpf-next v2 5/5] selftests/bpf: Install btf_dump test cases Jean-Philippe Brucker
2021-01-14 3:10 ` [PATCH bpf-next v2 0/5] selftests/bpf: Some build fixes patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).