Message ID | 20191120114823.27955-1-quentin.monnet@netronome.com |
---|---|
Headers | show |
Series | add bpftool to linux-tools-common | expand |
On Wed, Nov 20, 2019 at 11:48:19AM +0000, 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. And I apologize for not acking this sooneer, seems I missed it on the list when it was sent. Acked-by: Seth Forshee <seth.forshee@canonical.com>
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 > These changes look good to me. Thank you! Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
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