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