libbpf-devel rpm uapi headers
Subsystems (2)
hi,
we'd like to have bcc linked with libbpf instead of the github submodule, initial change is discussed in here:
https://github.com/iovisor/bcc/pull/2535
In order to do that, we need to have access to uapi headers compatible with libbpf rpm, bcc is attaching and using them during compilation.
I added them in the fedora spec below (not submitted yet), so libbpf would carry those headers.
Thoughts? thanks,
jirka
---
Subject: [PATCH] Package uapi headers under /usr/include/bpf/uapi/linux
The full list of files for libbpf-devel is now:
/usr/include/bpf
/usr/include/bpf/bpf.h
/usr/include/bpf/btf.h
/usr/include/bpf/libbpf.h
/usr/include/bpf/libbpf_util.h
/usr/include/bpf/uapi
/usr/include/bpf/uapi/linux
/usr/include/bpf/uapi/linux/compiler.h
/usr/include/bpf/uapi/linux/err.h
/usr/include/bpf/uapi/linux/filter.h
/usr/include/bpf/uapi/linux/kernel.h
/usr/include/bpf/uapi/linux/list.h
/usr/include/bpf/uapi/linux/overflow.h
/usr/include/bpf/uapi/linux/ring_buffer.h
/usr/include/bpf/uapi/linux/types.h
/usr/include/bpf/xsk.h
/usr/lib64/libbpf.so
/usr/lib64/pkgconfig/libbpf.pc
--- libbpf.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
libbpf.spec +6 -1
@@ -4,7 +4,7 @@ Name: %{githubname} Version: %{githubver} -Release: 2%{?dist} +Release: 3%{?dist} Summary: Libbpf library License: LGPLv2 or BSD
@@ -48,6 +48,8 @@ developing applications that use %{name} %install %make_install -C ./src %{make_flags} +install -d -m 755 %{buildroot}/usr/include/bpf/uapi/linux +cp include/linux/* %{buildroot}/usr/include/bpf/uapi/linux %files %{_libdir}/libbpf.so.%{version}
@@ -62,6 +64,9 @@ developing applications that use %{name} %{_libdir}/libbpf.a %changelog +* Wed Oct 02 2019 Jiri Olsa <[email protected]> - 0.0.3-3 +- Add uapi headers + * Wed Sep 25 2019 Jiri Olsa <[email protected]> - 0.0.3-2 - Fix libelf linking (BZ#1755317)
Signature · 1 line
2.21.0
Quoted 5 lines · Jiri Olsa
hi,
we'd like to have bcc linked with libbpf instead of the github submodule, initial change is discussed in here:
https://github.com/iovisor/bcc/pull/2535
Quoted 8 lines
In order to do that, we need to have access to uapi headers compatible with libbpf rpm, bcc is attaching and using them during compilation.
I added them in the fedora spec below (not submitted yet), so libbpf would carry those headers.
Thoughts? thanks,
I think it may break a bunch of people who rely on bcc being a single library. What is the main motiviation to use libbpf as a shared library in libbcc?
I think we can have both options. libbpf as git submodule and as shared. In practice git submodule is so much simpler to use and a lot less headaches.
Quoted 10 lines · Alexei Starovoitov
Quoted 9 lines · Jiri Olsa
hi,
we'd like to have bcc linked with libbpf instead of the github submodule, initial change is discussed in here:
https://github.com/iovisor/bcc/pull/2535In order to do that, we need to have access to uapi headers compatible with libbpf rpm, bcc is attaching and using them during compilation.
Quoted 6 lines
Quoted 4 lines
I added them in the fedora spec below (not submitted yet), so libbpf would carry those headers.
Thoughts? thanks,
I think it may break a bunch of people who rely on bcc being a single library.
there's still libbpf.a available so it's still possible
Quoted 1 line
What is the main motiviation to use libbpf as a shared library in libbcc?
Besides that it's better to share common source of libbpf code, it also prevents issues when having application that links to libbpf and libbcc, where you could end up conflicting functions and segfaults if those 2 libbpf libs are not on the same version.
quote from the github pull request ;-)
bpftrace links to libbcc, which carries libbcc_bpf and if I link bpftrace with libbpf, the dynamic loader might get consused and I get crash if those 2 libbpf libs (bcc x bpftrace) are not the same version
Quoted 3 lines
I think we can have both options. libbpf as git submodule and as shared. In practice git submodule is so much simpler to use and a lot less headaches.
that's what the change to bcc suggests.. the build detects libbpf-devel and if available links with it.. Yonghong suggested we also need uapi headers so we don't rely on standard kernel headers
jirka