Re: [PATCH] libbpf: Fix build on read-only filesystems

From: Andrii Nakryiko
Date: Fri Dec 20 2019 - 17:01:01 EST


On Fri, Dec 20, 2019 at 1:53 PM Arnaldo Carvalho de Melo
<arnaldo.melo@xxxxxxxxx> 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@xxxxxxxxx> 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@xxxxxxxxxx> 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@xxxxxxxxxx>
> > > > > ---
>
> > > > 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