diff mbox series

libbpf: Remove arch-specific include path in Makefile

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

Commit Message

Naveen N. Rao Sept. 2, 2020, 8:42 a.m. UTC
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

Comments

Andrii Nakryiko Sept. 2, 2020, 8:58 p.m. UTC | #1
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
>
Daniel Borkmann Sept. 2, 2020, 9:51 p.m. UTC | #2
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!
Naveen N. Rao Sept. 3, 2020, 5:46 a.m. UTC | #3
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 mbox series

Patch

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