APPLIED: [SRU][BIONIC][PATCH v3 0/2] add bpftool to linux-tools-common
Kleber Souza
kleber.souza at canonical.com
Fri Feb 14 10:42:02 UTC 2020
On 20.11.19 12:48, Quentin Monnet wrote:
> BugLink: https://bugs.launchpad.net/bugs/1774815
>
> [Impact]
>
> bpftool is a debugging and introspection tool for BPF elements,
> developed by the BPF kernel community. It is essential to list and dump
> BPF programs and maps loaded on the system. Its sources are located in
> the kernel repository, and because it is not packaged, administrators
> willing to use bpftool must download the whole kernel sources, compile
> and install the utility.
>
> [Fix]
>
> Adding bpftool to linux-tools and linux-tools-common packages makes it
> easily accessible. These packages are already used to provide other
> tools located in the kernel repository, such as perf.
>
> The bpftool version provided with kernel 4.15 does not build properly,
> because the API changed at some point in bfd.h from binutils-dev. Also,
> it should be noted that the binutils-dev package description forbids
> dependencies on libbfd:
>
> This package includes header files and static libraries necessary to
> build programs which use the GNU BFD library, which is part of
> binutils. Note that building Debian packages which depend on the
> shared libbfd is Not Allowed.
>
> Therefore, the proposed solution here is to get rid of the
> libbfd/binutils-dev dependency entirely. So far it was used by perf
> only, but perf can also be compiled without it anyway. Removing
> binutils-dev also avoids being locked to a specific libbfd version in
> case of future API changes.
>
> This series contains four patches: the first to add feature detection to
> bpftool Makefile, the second to use those features and to leave out the
> bits relying on libbpfd. Then third patch removes dependency on
> binutils-dev for the Linux package. At last, fourth patch adds packaging
> for bpftool.
>
> [Testcase]
>
> A test linux package was successfully built, at:
>
> https://launchpad.net/~qmonnet/+archive/ubuntu/ppa-linux-bpftool
>
> (Built with:
> do_zfs=false
> do_dkms_nvidia=false
> do_dkms_vbox=false
> skipabi=true
> skipmodule=true
> skipretpoline=true)
>
> Packages linux-tools-$(uname -r) and linux-tools-common can be built
> with "debian/rules binary", and contain bpftool's binary and related
> files (redirection script, bpftool manual pages, bash completion),
> respectively.
>
> [Regression Potential]
>
> Low, as far as I can tell:
>
> - binutils-dev was only used for building perf, but it is not mandatory
> and perf can be built without libbfd. The dependency on binutils-dev
> has been successfully removed on eoan.
>
> - The backported patches touch only bpftool and one feature in
> tools/build/feature (only used with bpftool), all of it user space
> tools not used for anything other than bpftool itself.
>
> - bpftool packaging does not change the way other tools are packaged
> (apart from creating $(toolsman)/man8 a few lines earlier), and should
> have no impact on the packaging of other tools. One dependency is
> added to Build-Depends-Indep.
>
> ---
> Packaging for bpftool is upstream in eoan/master-next as commit 8579afd20b0c.
>
> Discussion on v2 for bionic is available at:
> https://lists.ubuntu.com/archives/kernel-team/2019-October/104622.html
>
> Changes in v3:
> - Remove dependency on libbpf (bintutils-dev package). This adds two
> patches: one to actually remove the dependency, the other (backported)
> to make bpftool build without libbfd. The commit fixing the build for
> binutils >= 2.9, backported in the previous iteration to fix bpftool
> compilation, is kept in this series because it adds feature detection
> to bpftool Makefile (required to build without libbfd).
>
> Changes in v2:
> - Patch has been applied to eoan.
> - Switch from python-docutils to python3-docutils for the dependency
> providing rst2man for manual pages.
> - Set CROSS_COMPILE when building bpftool.
>
> I have been away from work for some time, please accept my sincere
> apologies for the delay since v2 - especially because I chased up in the
> past to have the set reviewed.
>
> Quentin Monnet (1):
> UBUNTU: [Debian] package bpftool in linux-tools-common
>
> Roman Gushchin (1):
> tools/bpftool: fix bpftool build with bintutils >= 2.9
>
> Seth Forshee (1):
> UBUNTU: [Debian] Remove binutils-dev build dependency
>
> Stanislav Fomichev (1):
> bpftool: make libbfd optional
>
> debian.master/control.stub.in | 2 +-
> debian.master/rules.d/amd64.mk | 1 +
> debian.master/rules.d/arm64.mk | 1 +
> debian.master/rules.d/armhf.mk | 1 +
> debian.master/rules.d/i386.mk | 1 +
> debian.master/rules.d/ppc64el.mk | 1 +
> debian.master/rules.d/s390x.mk | 1 +
> debian/rules | 2 +-
> debian/rules.d/1-maintainer.mk | 1 +
> debian/rules.d/2-binary-arch.mk | 9 +++++
> debian/rules.d/3-binary-indep.mk | 12 +++++-
> tools/bpf/Makefile | 29 +++++++++++++++
> tools/bpf/bpf_jit_disasm.c | 7 ++++
> tools/bpf/bpftool/Makefile | 37 ++++++++++++++++++-
> tools/bpf/bpftool/jit_disasm.c | 13 +++++++
> tools/bpf/bpftool/main.c | 3 --
> tools/bpf/bpftool/main.h | 13 +++++++
> tools/bpf/bpftool/prog.c | 3 ++
> tools/build/feature/Makefile | 4 ++
> .../feature/test-disassembler-four-args.c | 15 ++++++++
> 20 files changed, 148 insertions(+), 8 deletions(-)
> create mode 100644 tools/build/feature/test-disassembler-four-args.c
>
Applied to bionic/linux.
Thanks,
Kleber
More information about the kernel-team
mailing list