Message ID | 20200902084246.1513055-1-naveen.n.rao@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
Series | libbpf: Remove arch-specific include path in Makefile | expand |
On Wed, Sep 2, 2020 at 1:43 AM Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> wrote: > > Ubuntu mainline builds for ppc64le are failing with the below error (*): > CALL /home/kernel/COD/linux/scripts/atomic/check-atomics.sh > DESCEND bpf/resolve_btfids > > Auto-detecting system features: > ... libelf: [ [32mon[m ] > ... zlib: [ [32mon[m ] > ... bpf: [ [31mOFF[m ] > > BPF API too old > make[6]: *** [Makefile:295: bpfdep] Error 1 > make[5]: *** [Makefile:54: /home/kernel/COD/linux/debian/build/build-generic/tools/bpf/resolve_btfids//libbpf.a] Error 2 > make[4]: *** [Makefile:71: bpf/resolve_btfids] Error 2 > make[3]: *** [/home/kernel/COD/linux/Makefile:1890: tools/bpf/resolve_btfids] Error 2 > make[2]: *** [/home/kernel/COD/linux/Makefile:335: __build_one_by_one] Error 2 > make[2]: Leaving directory '/home/kernel/COD/linux/debian/build/build-generic' > make[1]: *** [Makefile:185: __sub-make] Error 2 > make[1]: Leaving directory '/home/kernel/COD/linux' > > resolve_btfids needs to be build as a host binary and it needs libbpf. > However, libbpf Makefile hardcodes an include path utilizing $(ARCH). > This results in mixing of cross-architecture headers resulting in a > build failure. > > The specific header include path doesn't seem necessary for a libbpf > build. Hence, remove the same. > > (*) https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9-rc3/ppc64el/log > > Reported-by: Vaidyanathan Srinivasan <svaidy@linux.ibm.com> > Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> > --- This seems to still build fine for me, so I seems fine. Not sure why that $(ARCH)/include/uapi path is there. Acked-by: Andrii Nakryiko <andriin@fb.com> > This is a simpler fix that seems to work and I saw the proper headers > from within tools/ being included in both cross-architecture builds as > well as a native ppc64le build. I am not sure if there is a better way > to ask kbuild to build resolve_btfids/libbpf for the host architecture, > and if that will set $(ARCH) appropriately. > > - Naveen > > > tools/lib/bpf/Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile > index adbe994610f2..fccc4dcda4b6 100644 > --- a/tools/lib/bpf/Makefile > +++ b/tools/lib/bpf/Makefile > @@ -62,7 +62,7 @@ FEATURE_USER = .libbpf > FEATURE_TESTS = libelf zlib bpf > FEATURE_DISPLAY = libelf zlib bpf > > -INCLUDES = -I. -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(ARCH)/include/uapi -I$(srctree)/tools/include/uapi > +INCLUDES = -I. -I$(srctree)/tools/include -I$(srctree)/tools/include/uapi > FEATURE_CHECK_CFLAGS-bpf = $(INCLUDES) > > check_feat := 1 > > base-commit: 0697fecf7ecd8abf70d0f46e6a352818e984cc9f > -- > 2.25.4 >
On 9/2/20 10:58 PM, Andrii Nakryiko wrote: > On Wed, Sep 2, 2020 at 1:43 AM Naveen N. Rao > <naveen.n.rao@linux.vnet.ibm.com> wrote: >> >> Ubuntu mainline builds for ppc64le are failing with the below error (*): >> CALL /home/kernel/COD/linux/scripts/atomic/check-atomics.sh >> DESCEND bpf/resolve_btfids >> >> Auto-detecting system features: >> ... libelf: [ [32mon[m ] >> ... zlib: [ [32mon[m ] >> ... bpf: [ [31mOFF[m ] >> >> BPF API too old >> make[6]: *** [Makefile:295: bpfdep] Error 1 >> make[5]: *** [Makefile:54: /home/kernel/COD/linux/debian/build/build-generic/tools/bpf/resolve_btfids//libbpf.a] Error 2 >> make[4]: *** [Makefile:71: bpf/resolve_btfids] Error 2 >> make[3]: *** [/home/kernel/COD/linux/Makefile:1890: tools/bpf/resolve_btfids] Error 2 >> make[2]: *** [/home/kernel/COD/linux/Makefile:335: __build_one_by_one] Error 2 >> make[2]: Leaving directory '/home/kernel/COD/linux/debian/build/build-generic' >> make[1]: *** [Makefile:185: __sub-make] Error 2 >> make[1]: Leaving directory '/home/kernel/COD/linux' >> >> resolve_btfids needs to be build as a host binary and it needs libbpf. >> However, libbpf Makefile hardcodes an include path utilizing $(ARCH). >> This results in mixing of cross-architecture headers resulting in a >> build failure. >> >> The specific header include path doesn't seem necessary for a libbpf >> build. Hence, remove the same. >> >> (*) https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9-rc3/ppc64el/log >> >> Reported-by: Vaidyanathan Srinivasan <svaidy@linux.ibm.com> >> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> >> --- > > This seems to still build fine for me, so I seems fine. Not sure why > that $(ARCH)/include/uapi path is there. > > Acked-by: Andrii Nakryiko <andriin@fb.com> Same here, builds fine from my side too. Looks like this was from the very early days, added in commit 1b76c13e4b36 ("bpf tools: Introduce 'bpf' library and add bpf feature check"). Applied, thanks!
Daniel Borkmann wrote: > On 9/2/20 10:58 PM, Andrii Nakryiko wrote: >> On Wed, Sep 2, 2020 at 1:43 AM Naveen N. Rao >> <naveen.n.rao@linux.vnet.ibm.com> wrote: >>> >>> Ubuntu mainline builds for ppc64le are failing with the below error (*): >>> CALL /home/kernel/COD/linux/scripts/atomic/check-atomics.sh >>> DESCEND bpf/resolve_btfids >>> >>> Auto-detecting system features: >>> ... libelf: [ [32mon[m ] >>> ... zlib: [ [32mon[m ] >>> ... bpf: [ [31mOFF[m ] >>> >>> BPF API too old >>> make[6]: *** [Makefile:295: bpfdep] Error 1 >>> make[5]: *** [Makefile:54: /home/kernel/COD/linux/debian/build/build-generic/tools/bpf/resolve_btfids//libbpf.a] Error 2 >>> make[4]: *** [Makefile:71: bpf/resolve_btfids] Error 2 >>> make[3]: *** [/home/kernel/COD/linux/Makefile:1890: tools/bpf/resolve_btfids] Error 2 >>> make[2]: *** [/home/kernel/COD/linux/Makefile:335: __build_one_by_one] Error 2 >>> make[2]: Leaving directory '/home/kernel/COD/linux/debian/build/build-generic' >>> make[1]: *** [Makefile:185: __sub-make] Error 2 >>> make[1]: Leaving directory '/home/kernel/COD/linux' >>> >>> resolve_btfids needs to be build as a host binary and it needs libbpf. >>> However, libbpf Makefile hardcodes an include path utilizing $(ARCH). >>> This results in mixing of cross-architecture headers resulting in a >>> build failure. >>> >>> The specific header include path doesn't seem necessary for a libbpf >>> build. Hence, remove the same. >>> >>> (*) https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9-rc3/ppc64el/log >>> >>> Reported-by: Vaidyanathan Srinivasan <svaidy@linux.ibm.com> >>> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> >>> --- >> >> This seems to still build fine for me, so I seems fine. Not sure why >> that $(ARCH)/include/uapi path is there. >> >> Acked-by: Andrii Nakryiko <andriin@fb.com> > > Same here, builds fine from my side too. Looks like this was from the very early days, > added in commit 1b76c13e4b36 ("bpf tools: Introduce 'bpf' library and add bpf feature > check"). Applied, thanks! Thanks! Daniel, I see that this has been applied to bpf-next. Can you please consider sending this in for v5.9-rc series so as to resolve the build failures? - Naveen
diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile index adbe994610f2..fccc4dcda4b6 100644 --- a/tools/lib/bpf/Makefile +++ b/tools/lib/bpf/Makefile @@ -62,7 +62,7 @@ FEATURE_USER = .libbpf FEATURE_TESTS = libelf zlib bpf FEATURE_DISPLAY = libelf zlib bpf -INCLUDES = -I. -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(ARCH)/include/uapi -I$(srctree)/tools/include/uapi +INCLUDES = -I. -I$(srctree)/tools/include -I$(srctree)/tools/include/uapi FEATURE_CHECK_CFLAGS-bpf = $(INCLUDES) check_feat := 1
Ubuntu mainline builds for ppc64le are failing with the below error (*): CALL /home/kernel/COD/linux/scripts/atomic/check-atomics.sh DESCEND bpf/resolve_btfids Auto-detecting system features: ... libelf: [ [32mon[m ] ... zlib: [ [32mon[m ] ... bpf: [ [31mOFF[m ] BPF API too old make[6]: *** [Makefile:295: bpfdep] Error 1 make[5]: *** [Makefile:54: /home/kernel/COD/linux/debian/build/build-generic/tools/bpf/resolve_btfids//libbpf.a] Error 2 make[4]: *** [Makefile:71: bpf/resolve_btfids] Error 2 make[3]: *** [/home/kernel/COD/linux/Makefile:1890: tools/bpf/resolve_btfids] Error 2 make[2]: *** [/home/kernel/COD/linux/Makefile:335: __build_one_by_one] Error 2 make[2]: Leaving directory '/home/kernel/COD/linux/debian/build/build-generic' make[1]: *** [Makefile:185: __sub-make] Error 2 make[1]: Leaving directory '/home/kernel/COD/linux' resolve_btfids needs to be build as a host binary and it needs libbpf. However, libbpf Makefile hardcodes an include path utilizing $(ARCH). This results in mixing of cross-architecture headers resulting in a build failure. The specific header include path doesn't seem necessary for a libbpf build. Hence, remove the same. (*) https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9-rc3/ppc64el/log Reported-by: Vaidyanathan Srinivasan <svaidy@linux.ibm.com> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- This is a simpler fix that seems to work and I saw the proper headers from within tools/ being included in both cross-architecture builds as well as a native ppc64le build. I am not sure if there is a better way to ask kbuild to build resolve_btfids/libbpf for the host architecture, and if that will set $(ARCH) appropriately. - Naveen tools/lib/bpf/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) base-commit: 0697fecf7ecd8abf70d0f46e6a352818e984cc9f