[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAEf4BzZ2jAQPKzzp+NhWXbUFcfdcXs+akFSY4O0JhabJy=9vag@mail.gmail.com>
Date: Wed, 15 Jan 2020 09:22:01 -0800
From: Andrii Nakryiko <andrii.nakryiko@...il.com>
To: Toke Høiland-Jørgensen <toke@...hat.com>
Cc: Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Martin KaFai Lau <kafai@...com>,
Song Liu <songliubraving@...com>, Yonghong Song <yhs@...com>,
Andrii Nakryiko <andriin@...com>,
Doug Ledford <dledford@...hat.com>,
Jason Gunthorpe <jgg@...pe.ca>,
"David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <jakub.kicinski@...ronome.com>,
Jesper Dangaard Brouer <brouer@...hat.com>,
John Fastabend <john.fastabend@...il.com>,
Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...hat.com>,
Arnaldo Carvalho de Melo <acme@...nel.org>,
Mark Rutland <mark.rutland@....com>,
Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
Jiri Olsa <jolsa@...hat.com>,
Namhyung Kim <namhyung@...nel.org>,
Shuah Khan <shuah@...nel.org>,
Networking <netdev@...r.kernel.org>, bpf <bpf@...r.kernel.org>,
open list <linux-kernel@...r.kernel.org>,
linux-rdma@...r.kernel.org,
"open list:KERNEL SELFTEST FRAMEWORK"
<linux-kselftest@...r.kernel.org>,
clang-built-linux@...glegroups.com
Subject: Re: [PATCH bpf-next v2 09/10] selftests: Remove tools/lib/bpf from
include path
On Wed, Jan 15, 2020 at 6:16 AM Toke Høiland-Jørgensen <toke@...hat.com> wrote:
>
> From: Toke Høiland-Jørgensen <toke@...hat.com>
>
> To make sure no new files are introduced that doesn't include the bpf/
> prefix in its #include, remove tools/lib/bpf from the include path
> entirely, and use tools/lib instead. To fix the original issue with
> bpf_helper_defs.h being stale, change the Makefile rule to regenerate the
> file in the lib/bpf dir instead of having a local copy in selftests.
>
> Signed-off-by: Toke Høiland-Jørgensen <toke@...hat.com>
> ---
> tools/testing/selftests/bpf/.gitignore | 3 ++-
> tools/testing/selftests/bpf/Makefile | 16 ++++++++--------
> 2 files changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/.gitignore b/tools/testing/selftests/bpf/.gitignore
> index 1d14e3ab70be..17dd02651dee 100644
> --- a/tools/testing/selftests/bpf/.gitignore
> +++ b/tools/testing/selftests/bpf/.gitignore
> @@ -33,10 +33,11 @@ libbpf.pc
> libbpf.so.*
> test_hashmap
> test_btf_dump
> +test_cgroup_attach
> +test_select_reuseport
These were moved into test_progs, they are not independent binaries
anymore, you probably just had old leftovers lying in your
selftests/bpf directory. Let's not re-add them.
> xdping
> test_cpp
> *.skel.h
> /no_alu32
> /bpf_gcc
> /tools
> -bpf_helper_defs.h
> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
> index cd98ae875e30..4889cc3ead4b 100644
> --- a/tools/testing/selftests/bpf/Makefile
> +++ b/tools/testing/selftests/bpf/Makefile
> @@ -21,7 +21,7 @@ LLC ?= llc
> LLVM_OBJCOPY ?= llvm-objcopy
> BPF_GCC ?= $(shell command -v bpf-gcc;)
> CFLAGS += -g -Wall -O2 $(GENFLAGS) -I$(CURDIR) -I$(APIDIR) -I$(LIBDIR) \
> - -I$(BPFDIR) -I$(GENDIR) -I$(TOOLSINCDIR) \
> + -I$(GENDIR) -I$(TOOLSINCDIR) \
> -Dbpf_prog_load=bpf_prog_test_load \
> -Dbpf_load_program=bpf_test_load_program
> LDLIBS += -lcap -lelf -lz -lrt -lpthread
> @@ -129,7 +129,7 @@ $(OUTPUT)/runqslower: force
> $(Q)$(MAKE) $(submake_extras) -C $(TOOLSDIR)/bpf/runqslower \
> OUTPUT=$(CURDIR)/tools/
>
> -BPFOBJ := $(OUTPUT)/libbpf.a
> +BPFOBJ := $(BPFDIR)/libbpf.a
We can't do that. See fa633a0f8919 ("libbpf: Fix build on read-only
filesystems") for why and why we have this problem with
bpf_helper_defs.h in the first place.
>
> $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED): $(OUTPUT)/test_stub.o $(BPFOBJ)
>
> @@ -155,17 +155,17 @@ force:
> DEFAULT_BPFTOOL := $(OUTPUT)/tools/sbin/bpftool
> BPFTOOL ?= $(DEFAULT_BPFTOOL)
>
> -$(DEFAULT_BPFTOOL): force
> +$(DEFAULT_BPFTOOL): force $(BPFOBJ)
do we need this? bpftool's makefile will build its own libbpf.a
independently. We can probably optimize that, but see above, we need
to ensure that we build only within selftest/bpf dirs.
This "read-only outside of selftests/bpf" requirement actually made me
realize that we probably need to specify OUTPUT pointing somewhere
inside selftests/bpf/tools subdir to build entire bpftool within
selftests/bpf directory and not touch anything outside. Do you mind
fixing that while you are at it?
> $(Q)$(MAKE) $(submake_extras) -C $(BPFTOOLDIR) \
> prefix= DESTDIR=$(OUTPUT)/tools/ install
>
> $(BPFOBJ): force
> - $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) OUTPUT=$(OUTPUT)/
> + $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) OUTPUT=$(BPFDIR)/ $(BPFOBJ)
>
> -BPF_HELPERS := $(OUTPUT)/bpf_helper_defs.h $(wildcard $(BPFDIR)/bpf_*.h)
> -$(OUTPUT)/bpf_helper_defs.h: $(BPFOBJ)
> +BPF_HELPERS := $(BPFDIR)/bpf_helper_defs.h $(wildcard $(BPFDIR)/bpf_*.h)
> +$(BPFDIR)/bpf_helper_defs.h: $(BPFOBJ)
> $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) \
> - OUTPUT=$(OUTPUT)/ $(OUTPUT)/bpf_helper_defs.h
> + OUTPUT=$(BPFDIR)/ $(BPFDIR)/bpf_helper_defs.h
>
> # Get Clang's default includes on this system, as opposed to those seen by
> # '-target bpf'. This fixes "missing" files on some architectures/distros,
> @@ -186,7 +186,7 @@ MENDIAN=$(if $(IS_LITTLE_ENDIAN),-mlittle-endian,-mbig-endian)
> CLANG_SYS_INCLUDES = $(call get_sys_includes,$(CLANG))
> BPF_CFLAGS = -g -D__TARGET_ARCH_$(SRCARCH) $(MENDIAN) \
> -I$(OUTPUT) -I$(CURDIR) -I$(CURDIR)/include/uapi \
> - -I$(APIDIR) -I$(LIBDIR) -I$(BPFDIR) -I$(abspath $(OUTPUT)/../usr/include)
> + -I$(APIDIR) -I$(LIBDIR) -I$(abspath $(OUTPUT)/../usr/include)
>
> CLANG_CFLAGS = $(CLANG_SYS_INCLUDES) \
> -Wno-compare-distinct-pointer-types
>
Powered by blists - more mailing lists