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

From: Arnaldo Carvalho de Melo
Date: Fri Dec 20 2019 - 16:53:35 EST


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?

- Arnaldo