Message ID | 20191220032558.3259098-1-namhyung@kernel.org |
---|---|
State | Changes Requested |
Delegated to: | BPF Maintainers |
Headers | show |
Series | libbpf: Fix build on read-only filesystems | expand |
On Thu, Dec 19, 2019 at 7:26 PM Namhyung Kim <namhyung@kernel.org> wrote: > > I got the following error when I tried to build perf on a read-only > filesystem with O=dir option. > > $ cd /some/where/ro/linux/tools/perf > $ make O=$HOME/build/perf > ... > CC /home/namhyung/build/perf/lib.o > /bin/sh: bpf_helper_defs.h: Read-only file system > make[3]: *** [Makefile:184: bpf_helper_defs.h] Error 1 > make[2]: *** [Makefile.perf:778: /home/namhyung/build/perf/libbpf.a] Error 2 > make[2]: *** Waiting for unfinished jobs.... > LD /home/namhyung/build/perf/libperf-in.o > AR /home/namhyung/build/perf/libperf.a > PERF_VERSION = 5.4.0 > make[1]: *** [Makefile.perf:225: sub-make] Error 2 > make: *** [Makefile:70: all] Error 2 > > It was becaused bpf_helper_defs.h was generated in current directory. > Move it to OUTPUT directory. > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > --- Overall nothing is obviously broken, except you need to fix up selftests/bpf's Makefile as well. BTW, this patch doesn't apply cleanly to latest bpf-next, so please rebase. Also subject prefix should look like [PATCH bpf-next] if it's meant to be applied against bpf-next. > tools/lib/bpf/Makefile | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > [...]
Em Fri, Dec 20, 2019 at 12:29:36PM -0800, Andrii Nakryiko escreveu: > On Thu, Dec 19, 2019 at 7:26 PM Namhyung Kim <namhyung@kernel.org> wrote: > > I got the following error when I tried to build perf on a read-only > > filesystem with O=dir option. > > > > $ cd /some/where/ro/linux/tools/perf > > $ make O=$HOME/build/perf > > ... > > CC /home/namhyung/build/perf/lib.o > > /bin/sh: bpf_helper_defs.h: Read-only file system > > make[3]: *** [Makefile:184: bpf_helper_defs.h] Error 1 > > make[2]: *** [Makefile.perf:778: /home/namhyung/build/perf/libbpf.a] Error 2 > > make[2]: *** Waiting for unfinished jobs.... > > LD /home/namhyung/build/perf/libperf-in.o > > AR /home/namhyung/build/perf/libperf.a > > PERF_VERSION = 5.4.0 > > make[1]: *** [Makefile.perf:225: sub-make] Error 2 > > make: *** [Makefile:70: all] Error 2 > > > > It was becaused bpf_helper_defs.h was generated in current directory. > > Move it to OUTPUT directory. > > > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > > --- > > Overall nothing is obviously broken, except you need to fix up > selftests/bpf's Makefile as well. > > BTW, this patch doesn't apply cleanly to latest bpf-next, so please rebase. > > Also subject prefix should look like [PATCH bpf-next] if it's meant to > be applied against bpf-next. Shouldn't this be applied to the current merge window since a behaviour that people relied, i.e. using O= to generate the build in a separate directory, since its not possible to use the source dir tree as it is read-only is now broken, i.e. isn't this a regression? - Arnaldo > > tools/lib/bpf/Makefile | 14 +++++++------- > > 1 file changed, 7 insertions(+), 7 deletions(-) > > > > [...]
On Fri, Dec 20, 2019 at 12:47 PM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote: > > Em Fri, Dec 20, 2019 at 12:29:36PM -0800, Andrii Nakryiko escreveu: > > On Thu, Dec 19, 2019 at 7:26 PM Namhyung Kim <namhyung@kernel.org> wrote: > > > I got the following error when I tried to build perf on a read-only > > > filesystem with O=dir option. > > > > > > $ cd /some/where/ro/linux/tools/perf > > > $ make O=$HOME/build/perf > > > ... > > > CC /home/namhyung/build/perf/lib.o > > > /bin/sh: bpf_helper_defs.h: Read-only file system > > > make[3]: *** [Makefile:184: bpf_helper_defs.h] Error 1 > > > make[2]: *** [Makefile.perf:778: /home/namhyung/build/perf/libbpf.a] Error 2 > > > make[2]: *** Waiting for unfinished jobs.... > > > LD /home/namhyung/build/perf/libperf-in.o > > > AR /home/namhyung/build/perf/libperf.a > > > PERF_VERSION = 5.4.0 > > > make[1]: *** [Makefile.perf:225: sub-make] Error 2 > > > make: *** [Makefile:70: all] Error 2 > > > > > > It was becaused bpf_helper_defs.h was generated in current directory. > > > Move it to OUTPUT directory. > > > > > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > > > --- > > > > Overall nothing is obviously broken, except you need to fix up > > selftests/bpf's Makefile as well. > > > > BTW, this patch doesn't apply cleanly to latest bpf-next, so please rebase. > > > > Also subject prefix should look like [PATCH bpf-next] if it's meant to > > be applied against bpf-next. > > Shouldn't this be applied to the current merge window since a behaviour > that people relied, i.e. using O= to generate the build in a separate > directory, since its not possible to use the source dir tree as it is > read-only is now broken, i.e. isn't this a regression? Sure, it can be applied against bpf as well, but selftests still need to be fixed first. > > - Arnaldo > > > > tools/lib/bpf/Makefile | 14 +++++++------- > > > 1 file changed, 7 insertions(+), 7 deletions(-) > > > > > > > [...] > > -- > > - Arnaldo
Em Fri, Dec 20, 2019 at 01:45:52PM -0800, Andrii Nakryiko escreveu: > On Fri, Dec 20, 2019 at 12:47 PM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote: > > Em Fri, Dec 20, 2019 at 12:29:36PM -0800, Andrii Nakryiko escreveu: > > > On Thu, Dec 19, 2019 at 7:26 PM Namhyung Kim <namhyung@kernel.org> wrote: > > > > I got the following error when I tried to build perf on a read-only > > > > filesystem with O=dir option. > > > > $ cd /some/where/ro/linux/tools/perf > > > > $ make O=$HOME/build/perf > > > > ... > > > > CC /home/namhyung/build/perf/lib.o > > > > /bin/sh: bpf_helper_defs.h: Read-only file system > > > > make[3]: *** [Makefile:184: bpf_helper_defs.h] Error 1 > > > > make[2]: *** [Makefile.perf:778: /home/namhyung/build/perf/libbpf.a] Error 2 > > > > make[2]: *** Waiting for unfinished jobs.... > > > > LD /home/namhyung/build/perf/libperf-in.o > > > > AR /home/namhyung/build/perf/libperf.a > > > > PERF_VERSION = 5.4.0 > > > > make[1]: *** [Makefile.perf:225: sub-make] Error 2 > > > > make: *** [Makefile:70: all] Error 2 > > > > It was becaused bpf_helper_defs.h was generated in current directory. > > > > Move it to OUTPUT directory. > > > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > > > > --- > > > Overall nothing is obviously broken, except you need to fix up > > > selftests/bpf's Makefile as well. > > > BTW, this patch doesn't apply cleanly to latest bpf-next, so please rebase. > > > Also subject prefix should look like [PATCH bpf-next] if it's meant to > > > be applied against bpf-next. > > Shouldn't this be applied to the current merge window since a behaviour > > that people relied, i.e. using O= to generate the build in a separate > > directory, since its not possible to use the source dir tree as it is > > read-only is now broken, i.e. isn't this a regression? > Sure, it can be applied against bpf as well, but selftests still need > to be fixed first. I guess this can be done on a separate patch? I.e. if the user doesn't use selftests the only regression it will see is when trying to build tools/perf using O=. I think two patches is best, better granularity, do you see a strict need for both to be in the same patch? - Arnaldo
On Fri, Dec 20, 2019 at 1:53 PM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote: > > Em Fri, Dec 20, 2019 at 01:45:52PM -0800, Andrii Nakryiko escreveu: > > On Fri, Dec 20, 2019 at 12:47 PM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote: > > > Em Fri, Dec 20, 2019 at 12:29:36PM -0800, Andrii Nakryiko escreveu: > > > > On Thu, Dec 19, 2019 at 7:26 PM Namhyung Kim <namhyung@kernel.org> wrote: > > > > > I got the following error when I tried to build perf on a read-only > > > > > filesystem with O=dir option. > > > > > > $ cd /some/where/ro/linux/tools/perf > > > > > $ make O=$HOME/build/perf > > > > > ... > > > > > CC /home/namhyung/build/perf/lib.o > > > > > /bin/sh: bpf_helper_defs.h: Read-only file system > > > > > make[3]: *** [Makefile:184: bpf_helper_defs.h] Error 1 > > > > > make[2]: *** [Makefile.perf:778: /home/namhyung/build/perf/libbpf.a] Error 2 > > > > > make[2]: *** Waiting for unfinished jobs.... > > > > > LD /home/namhyung/build/perf/libperf-in.o > > > > > AR /home/namhyung/build/perf/libperf.a > > > > > PERF_VERSION = 5.4.0 > > > > > make[1]: *** [Makefile.perf:225: sub-make] Error 2 > > > > > make: *** [Makefile:70: all] Error 2 > > > > > > It was becaused bpf_helper_defs.h was generated in current directory. > > > > > Move it to OUTPUT directory. > > > > > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > > > > > --- > > > > > Overall nothing is obviously broken, except you need to fix up > > > > selftests/bpf's Makefile as well. > > > > > BTW, this patch doesn't apply cleanly to latest bpf-next, so please rebase. > > > > > Also subject prefix should look like [PATCH bpf-next] if it's meant to > > > > be applied against bpf-next. > > > > Shouldn't this be applied to the current merge window since a behaviour > > > that people relied, i.e. using O= to generate the build in a separate > > > directory, since its not possible to use the source dir tree as it is > > > read-only is now broken, i.e. isn't this a regression? > > > Sure, it can be applied against bpf as well, but selftests still need > > to be fixed first. > > I guess this can be done on a separate patch? I.e. if the user doesn't > use selftests the only regression it will see is when trying to build > tools/perf using O=. > > I think two patches is best, better granularity, do you see a strict > need for both to be in the same patch? Sure, it can be two separate patches, but they should go in together, otherwise selftests will be broken. > > - Arnaldo
On Thu, Dec 19, 2019 at 7:26 PM Namhyung Kim <namhyung@kernel.org> wrote: > > I got the following error when I tried to build perf on a read-only > filesystem with O=dir option. > > $ cd /some/where/ro/linux/tools/perf > $ make O=$HOME/build/perf > ... > CC /home/namhyung/build/perf/lib.o > /bin/sh: bpf_helper_defs.h: Read-only file system > make[3]: *** [Makefile:184: bpf_helper_defs.h] Error 1 > make[2]: *** [Makefile.perf:778: /home/namhyung/build/perf/libbpf.a] Error 2 > make[2]: *** Waiting for unfinished jobs.... > LD /home/namhyung/build/perf/libperf-in.o > AR /home/namhyung/build/perf/libperf.a > PERF_VERSION = 5.4.0 > make[1]: *** [Makefile.perf:225: sub-make] Error 2 > make: *** [Makefile:70: all] Error 2 > > It was becaused bpf_helper_defs.h was generated in current directory. > Move it to OUTPUT directory. > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > --- > tools/lib/bpf/Makefile | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile > index 99425d0be6ff..2f42a35f4634 100644 > --- a/tools/lib/bpf/Makefile > +++ b/tools/lib/bpf/Makefile > @@ -159,7 +159,7 @@ all: fixdep > > all_cmd: $(CMD_TARGETS) check > > -$(BPF_IN_SHARED): force elfdep bpfdep bpf_helper_defs.h > +$(BPF_IN_SHARED): force elfdep bpfdep $(OUTPUT)bpf_helper_defs.h btw, there is a lot of $(OUTPUT)bpf_helper_defs.h repetition, could you please extract it into a variable, similar to BPF_IN_SHARED and others? E.g., just BPF_HELPER_DEFS would work. Thanks! > @(test -f ../../include/uapi/linux/bpf.h -a -f ../../../include/uapi/linux/bpf.h && ( \ > (diff -B ../../include/uapi/linux/bpf.h ../../../include/uapi/linux/bpf.h >/dev/null) || \ > echo "Warning: Kernel ABI header at 'tools/include/uapi/linux/bpf.h' differs from latest version at 'include/uapi/linux/bpf.h'" >&2 )) || true > @@ -177,12 +177,12 @@ $(BPF_IN_SHARED): force elfdep bpfdep bpf_helper_defs.h > echo "Warning: Kernel ABI header at 'tools/include/uapi/linux/if_xdp.h' differs from latest version at 'include/uapi/linux/if_xdp.h'" >&2 )) || true > $(Q)$(MAKE) $(build)=libbpf OUTPUT=$(SHARED_OBJDIR) CFLAGS="$(CFLAGS) $(SHLIB_FLAGS)" [...]
Em Fri, Dec 20, 2019 at 02:00:48PM -0800, Andrii Nakryiko escreveu: > On Fri, Dec 20, 2019 at 1:53 PM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote: > > Em Fri, Dec 20, 2019 at 01:45:52PM -0800, Andrii Nakryiko escreveu: > > > On Fri, Dec 20, 2019 at 12:47 PM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote: > > > > Shouldn't this be applied to the current merge window since a behaviour > > > > that people relied, i.e. using O= to generate the build in a separate > > > > directory, since its not possible to use the source dir tree as it is > > > > read-only is now broken, i.e. isn't this a regression? > > > Sure, it can be applied against bpf as well, but selftests still need > > > to be fixed first. > > I guess this can be done on a separate patch? I.e. if the user doesn't > > use selftests the only regression it will see is when trying to build > > tools/perf using O=. > > I think two patches is best, better granularity, do you see a strict > > need for both to be in the same patch? > Sure, it can be two separate patches, but they should go in together, > otherwise selftests will be broken. Sure, both have to be fixed :-) - Arnaldo
Hello, On Sat, Dec 21, 2019 at 5:29 AM Andrii Nakryiko <andrii.nakryiko@gmail.com> wrote: > > On Thu, Dec 19, 2019 at 7:26 PM Namhyung Kim <namhyung@kernel.org> wrote: > > > > I got the following error when I tried to build perf on a read-only > > filesystem with O=dir option. > > > > $ cd /some/where/ro/linux/tools/perf > > $ make O=$HOME/build/perf > > ... > > CC /home/namhyung/build/perf/lib.o > > /bin/sh: bpf_helper_defs.h: Read-only file system > > make[3]: *** [Makefile:184: bpf_helper_defs.h] Error 1 > > make[2]: *** [Makefile.perf:778: /home/namhyung/build/perf/libbpf.a] Error 2 > > make[2]: *** Waiting for unfinished jobs.... > > LD /home/namhyung/build/perf/libperf-in.o > > AR /home/namhyung/build/perf/libperf.a > > PERF_VERSION = 5.4.0 > > make[1]: *** [Makefile.perf:225: sub-make] Error 2 > > make: *** [Makefile:70: all] Error 2 > > > > It was becaused bpf_helper_defs.h was generated in current directory. > > Move it to OUTPUT directory. > > > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > > --- > > Overall nothing is obviously broken, except you need to fix up > selftests/bpf's Makefile as well. Thanks for pointing this out. It's because bpf selftest also needs the bpf_helper_defs.h right? But I'm currently having a problem with LLVM when building the selftests. Can you help me testing the patch below? (It should be applied after this patch. Are you ok with it?) > > BTW, this patch doesn't apply cleanly to latest bpf-next, so please rebase. > > Also subject prefix should look like [PATCH bpf-next] if it's meant to > be applied against bpf-next. Will do. Thanks Namhyung -----------8<------------- diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile index 866fc1cadd7c..897877f7849b 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -151,9 +151,9 @@ $(DEFAULT_BPFTOOL): force $(BPFOBJ): force $(MAKE) -C $(BPFDIR) OUTPUT=$(OUTPUT)/ -BPF_HELPERS := $(BPFDIR)/bpf_helper_defs.h $(wildcard $(BPFDIR)/bpf_*.h) -$(BPFDIR)/bpf_helper_defs.h: - $(MAKE) -C $(BPFDIR) OUTPUT=$(OUTPUT)/ bpf_helper_defs.h +BPF_HELPERS := $(OUTPUT)/bpf_helper_defs.h $(wildcard $(BPFDIR)/bpf_*.h) +$(OUTPUT)/bpf_helper_defs.h: + $(MAKE) -C $(BPFDIR) OUTPUT=$(OUTPUT)/ $(OUTPUT)/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,
On Sat, Dec 21, 2019 at 05:25:51PM +0900, Namhyung Kim wrote: > Hello, > > On Sat, Dec 21, 2019 at 5:29 AM Andrii Nakryiko > <andrii.nakryiko@gmail.com> wrote: > > > > On Thu, Dec 19, 2019 at 7:26 PM Namhyung Kim <namhyung@kernel.org> wrote: > > > > > > I got the following error when I tried to build perf on a read-only > > > filesystem with O=dir option. > > > > > > $ cd /some/where/ro/linux/tools/perf > > > $ make O=$HOME/build/perf > > > ... > > > CC /home/namhyung/build/perf/lib.o > > > /bin/sh: bpf_helper_defs.h: Read-only file system > > > make[3]: *** [Makefile:184: bpf_helper_defs.h] Error 1 > > > make[2]: *** [Makefile.perf:778: /home/namhyung/build/perf/libbpf.a] Error 2 > > > make[2]: *** Waiting for unfinished jobs.... > > > LD /home/namhyung/build/perf/libperf-in.o > > > AR /home/namhyung/build/perf/libperf.a > > > PERF_VERSION = 5.4.0 > > > make[1]: *** [Makefile.perf:225: sub-make] Error 2 > > > make: *** [Makefile:70: all] Error 2 > > > > > > It was becaused bpf_helper_defs.h was generated in current directory. > > > Move it to OUTPUT directory. > > > > > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > > > --- > > > > Overall nothing is obviously broken, except you need to fix up > > selftests/bpf's Makefile as well. > > Thanks for pointing this out. It's because bpf selftest also needs the > bpf_helper_defs.h right? But I'm currently having a problem with LLVM > when building the selftests. Can you help me testing the patch below? > (It should be applied after this patch. Are you ok with it?) > > > > > > BTW, this patch doesn't apply cleanly to latest bpf-next, so please rebase. > > > > Also subject prefix should look like [PATCH bpf-next] if it's meant to > > be applied against bpf-next. > > Will do. > > Thanks > Namhyung > > -----------8<------------- > diff --git a/tools/testing/selftests/bpf/Makefile > b/tools/testing/selftests/bpf/Makefile > index 866fc1cadd7c..897877f7849b 100644 > --- a/tools/testing/selftests/bpf/Makefile > +++ b/tools/testing/selftests/bpf/Makefile > @@ -151,9 +151,9 @@ $(DEFAULT_BPFTOOL): force > $(BPFOBJ): force > $(MAKE) -C $(BPFDIR) OUTPUT=$(OUTPUT)/ > > -BPF_HELPERS := $(BPFDIR)/bpf_helper_defs.h $(wildcard $(BPFDIR)/bpf_*.h) > -$(BPFDIR)/bpf_helper_defs.h: > - $(MAKE) -C $(BPFDIR) OUTPUT=$(OUTPUT)/ bpf_helper_defs.h > +BPF_HELPERS := $(OUTPUT)/bpf_helper_defs.h $(wildcard $(BPFDIR)/bpf_*.h) > +$(OUTPUT)/bpf_helper_defs.h: > + $(MAKE) -C $(BPFDIR) OUTPUT=$(OUTPUT)/ $(OUTPUT)/bpf_helper_defs.h The fix makes sense, but you cannot break it down into two patches. The selftests/bpf are absolutely essential for everyone working on bpf. For both developers and maintainers. You cannot break them in one patch and then try to fix in another. Please resubmit as one patch and tag the subject as [PATCH bpf].
diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile index 99425d0be6ff..2f42a35f4634 100644 --- a/tools/lib/bpf/Makefile +++ b/tools/lib/bpf/Makefile @@ -159,7 +159,7 @@ all: fixdep all_cmd: $(CMD_TARGETS) check -$(BPF_IN_SHARED): force elfdep bpfdep bpf_helper_defs.h +$(BPF_IN_SHARED): force elfdep bpfdep $(OUTPUT)bpf_helper_defs.h @(test -f ../../include/uapi/linux/bpf.h -a -f ../../../include/uapi/linux/bpf.h && ( \ (diff -B ../../include/uapi/linux/bpf.h ../../../include/uapi/linux/bpf.h >/dev/null) || \ echo "Warning: Kernel ABI header at 'tools/include/uapi/linux/bpf.h' differs from latest version at 'include/uapi/linux/bpf.h'" >&2 )) || true @@ -177,12 +177,12 @@ $(BPF_IN_SHARED): force elfdep bpfdep bpf_helper_defs.h echo "Warning: Kernel ABI header at 'tools/include/uapi/linux/if_xdp.h' differs from latest version at 'include/uapi/linux/if_xdp.h'" >&2 )) || true $(Q)$(MAKE) $(build)=libbpf OUTPUT=$(SHARED_OBJDIR) CFLAGS="$(CFLAGS) $(SHLIB_FLAGS)" -$(BPF_IN_STATIC): force elfdep bpfdep bpf_helper_defs.h +$(BPF_IN_STATIC): force elfdep bpfdep $(OUTPUT)bpf_helper_defs.h $(Q)$(MAKE) $(build)=libbpf OUTPUT=$(STATIC_OBJDIR) -bpf_helper_defs.h: $(srctree)/include/uapi/linux/bpf.h +$(OUTPUT)bpf_helper_defs.h: $(srctree)/include/uapi/linux/bpf.h $(Q)$(srctree)/scripts/bpf_helpers_doc.py --header \ - --file $(srctree)/include/uapi/linux/bpf.h > bpf_helper_defs.h + --file $(srctree)/include/uapi/linux/bpf.h > $(OUTPUT)bpf_helper_defs.h $(OUTPUT)libbpf.so: $(OUTPUT)libbpf.so.$(LIBBPF_VERSION) @@ -246,7 +246,7 @@ install_lib: all_cmd $(call do_install_mkdir,$(libdir_SQ)); \ cp -fpR $(LIB_FILE) $(DESTDIR)$(libdir_SQ) -install_headers: bpf_helper_defs.h +install_headers: $(OUTPUT)bpf_helper_defs.h $(call QUIET_INSTALL, headers) \ $(call do_install,bpf.h,$(prefix)/include/bpf,644); \ $(call do_install,libbpf.h,$(prefix)/include/bpf,644); \ @@ -254,7 +254,7 @@ install_headers: bpf_helper_defs.h $(call do_install,libbpf_util.h,$(prefix)/include/bpf,644); \ $(call do_install,xsk.h,$(prefix)/include/bpf,644); \ $(call do_install,bpf_helpers.h,$(prefix)/include/bpf,644); \ - $(call do_install,bpf_helper_defs.h,$(prefix)/include/bpf,644); \ + $(call do_install,$(OUTPUT)bpf_helper_defs.h,$(prefix)/include/bpf,644); \ $(call do_install,bpf_tracing.h,$(prefix)/include/bpf,644); \ $(call do_install,bpf_endian.h,$(prefix)/include/bpf,644); \ $(call do_install,bpf_core_read.h,$(prefix)/include/bpf,644); @@ -274,7 +274,7 @@ install: install_lib install_pkgconfig clean: $(call QUIET_CLEAN, libbpf) $(RM) -rf $(CMD_TARGETS) \ *.o *~ *.a *.so *.so.$(LIBBPF_MAJOR_VERSION) .*.d .*.cmd \ - *.pc LIBBPF-CFLAGS bpf_helper_defs.h \ + *.pc LIBBPF-CFLAGS $(OUTPUT)bpf_helper_defs.h \ $(SHARED_OBJDIR) $(STATIC_OBJDIR) $(call QUIET_CLEAN, core-gen) $(RM) $(OUTPUT)FEATURE-DUMP.libbpf
I got the following error when I tried to build perf on a read-only filesystem with O=dir option. $ cd /some/where/ro/linux/tools/perf $ make O=$HOME/build/perf ... CC /home/namhyung/build/perf/lib.o /bin/sh: bpf_helper_defs.h: Read-only file system make[3]: *** [Makefile:184: bpf_helper_defs.h] Error 1 make[2]: *** [Makefile.perf:778: /home/namhyung/build/perf/libbpf.a] Error 2 make[2]: *** Waiting for unfinished jobs.... LD /home/namhyung/build/perf/libperf-in.o AR /home/namhyung/build/perf/libperf.a PERF_VERSION = 5.4.0 make[1]: *** [Makefile.perf:225: sub-make] Error 2 make: *** [Makefile:70: all] Error 2 It was becaused bpf_helper_defs.h was generated in current directory. Move it to OUTPUT directory. Signed-off-by: Namhyung Kim <namhyung@kernel.org> --- tools/lib/bpf/Makefile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)