[bionic][PATCH 0/2] add bpftool to linux-tools-common

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[bionic][PATCH 0/2] add bpftool to linux-tools-common

Quentin Monnet
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 use to provide other tools located in
the kernel repository, such as perf.

Because the bpftool version provided with kernel 4.15 does not build properly
(API changed at some point in bfd.h from binutils-dev), backport a patch from
4.16 to fix the calls to libbfd's disassembler.

[Testcase]

A test linux package was successfully built, at:

https://launchpad.net/~qmonnet/+archive/ubuntu/ppa-linux-bpftool

(The i386 build actually fails, but it does not seem related to the
changes. The amd64 build succeeded.)

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:

- The backported patch touches 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, none is removed.

---
This is my first contribution to ubuntu_kernel, please let me know if I got
anything wrong with the process.

I would like bpftool to be packaged for bionic and later (supported) releases,
if possible. Could someone provide me some guidance on the process, please?
Should I also submit the packaging patch for disco/eowan? (As the patch
backported in this series is in Linux 4.16, later Ubuntu versions should not
need this backport.)

Quentin Monnet (2):
  tools/bpftool: fix bpftool build with bintutils >= 2.9
  UBUNTU: [Debian] Package bpftool in linux-tools-common

 debian.master/control.stub.in                 |  1 +
 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                    | 24 +++++++++++++++
 tools/bpf/bpftool/jit_disasm.c                |  7 +++++
 tools/build/feature/Makefile                  |  4 +++
 .../feature/test-disassembler-four-args.c     | 15 ++++++++++
 17 files changed, 115 insertions(+), 2 deletions(-)
 create mode 100644 tools/build/feature/test-disassembler-four-args.c

--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[bionic][PATCH 1/2] tools/bpftool: fix bpftool build with bintutils >= 2.9

Quentin Monnet
From: Roman Gushchin <[hidden email]>

BugLink: http://bugs.launchpad.net/bugs/1774815

Bpftool build is broken with binutils version 2.29 and later.
The cause is commit 003ca0fd2286 ("Refactor disassembler selection")
in the binutils repo, which changed the disassembler() function
signature.

Fix this by adding a new "feature" to the tools/build/features
infrastructure and make it responsible for decision which
disassembler() function signature to use.

Signed-off-by: Roman Gushchin <[hidden email]>
Cc: Jakub Kicinski <[hidden email]>
Cc: Alexei Starovoitov <[hidden email]>
Cc: Daniel Borkmann <[hidden email]>
Acked-by: Jakub Kicinski <[hidden email]>
Signed-off-by: Daniel Borkmann <[hidden email]>
(backported from commit fb982666e380c1632a74495b68b3c33a66e76430)
 [ fix bpftool compilation before packaging it ]
Signed-off-by: Quentin Monnet <[hidden email]>
---
 tools/bpf/Makefile                            | 29 +++++++++++++++++++
 tools/bpf/bpf_jit_disasm.c                    |  7 +++++
 tools/bpf/bpftool/Makefile                    | 24 +++++++++++++++
 tools/bpf/bpftool/jit_disasm.c                |  7 +++++
 tools/build/feature/Makefile                  |  4 +++
 .../feature/test-disassembler-four-args.c     | 15 ++++++++++
 6 files changed, 86 insertions(+)
 create mode 100644 tools/build/feature/test-disassembler-four-args.c

diff --git a/tools/bpf/Makefile b/tools/bpf/Makefile
index 07a6697466ef..c8ec0ae16bf0 100644
--- a/tools/bpf/Makefile
+++ b/tools/bpf/Makefile
@@ -9,6 +9,35 @@ MAKE = make
 CFLAGS += -Wall -O2
 CFLAGS += -D__EXPORTED_HEADERS__ -I../../include/uapi -I../../include
 
+ifeq ($(srctree),)
+srctree := $(patsubst %/,%,$(dir $(CURDIR)))
+srctree := $(patsubst %/,%,$(dir $(srctree)))
+endif
+
+FEATURE_USER = .bpf
+FEATURE_TESTS = libbfd disassembler-four-args
+FEATURE_DISPLAY = libbfd disassembler-four-args
+
+check_feat := 1
+NON_CHECK_FEAT_TARGETS := clean bpftool_clean
+ifdef MAKECMDGOALS
+ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),)
+  check_feat := 0
+endif
+endif
+
+ifeq ($(check_feat),1)
+ifeq ($(FEATURES_DUMP),)
+include $(srctree)/tools/build/Makefile.feature
+else
+include $(FEATURES_DUMP)
+endif
+endif
+
+ifeq ($(feature-disassembler-four-args), 1)
+CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
+endif
+
 %.yacc.c: %.y
  $(YACC) -o $@ -d $<
 
diff --git a/tools/bpf/bpf_jit_disasm.c b/tools/bpf/bpf_jit_disasm.c
index 75bf526a0168..30044bc4f389 100644
--- a/tools/bpf/bpf_jit_disasm.c
+++ b/tools/bpf/bpf_jit_disasm.c
@@ -72,7 +72,14 @@ static void get_asm_insns(uint8_t *image, size_t len, int opcodes)
 
  disassemble_init_for_target(&info);
 
+#ifdef DISASM_FOUR_ARGS_SIGNATURE
+ disassemble = disassembler(info.arch,
+   bfd_big_endian(bfdf),
+   info.mach,
+   bfdf);
+#else
  disassemble = disassembler(bfdf);
+#endif
  assert(disassemble);
 
  do {
diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
index ec3052c0b004..9e433c3f8bbe 100644
--- a/tools/bpf/bpftool/Makefile
+++ b/tools/bpf/bpftool/Makefile
@@ -55,6 +55,30 @@ CFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wshadow
 CFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi -I$(srctree)/tools/include -I$(srctree)/tools/lib/bpf -I$(srctree)/kernel/bpf/
 LIBS = -lelf -lbfd -lopcodes $(LIBBPF)
 
+FEATURE_USER = .bpftool
+FEATURE_TESTS = libbfd disassembler-four-args
+FEATURE_DISPLAY = libbfd disassembler-four-args
+
+check_feat := 1
+NON_CHECK_FEAT_TARGETS := clean uninstall doc doc-clean doc-install doc-uninstall
+ifdef MAKECMDGOALS
+ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),)
+  check_feat := 0
+endif
+endif
+
+ifeq ($(check_feat),1)
+ifeq ($(FEATURES_DUMP),)
+include $(srctree)/tools/build/Makefile.feature
+else
+include $(FEATURES_DUMP)
+endif
+endif
+
+ifeq ($(feature-disassembler-four-args), 1)
+CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
+endif
+
 include $(wildcard *.d)
 
 all: $(OUTPUT)bpftool
diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c
index 1551d3918d4c..57d32e8a1391 100644
--- a/tools/bpf/bpftool/jit_disasm.c
+++ b/tools/bpf/bpftool/jit_disasm.c
@@ -107,7 +107,14 @@ void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes)
 
  disassemble_init_for_target(&info);
 
+#ifdef DISASM_FOUR_ARGS_SIGNATURE
+ disassemble = disassembler(info.arch,
+   bfd_big_endian(bfdf),
+   info.mach,
+   bfdf);
+#else
  disassemble = disassembler(bfdf);
+#endif
  assert(disassemble);
 
  if (json_output)
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index 96982640fbf8..17f2c73fff8b 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -13,6 +13,7 @@ FILES=                                          \
          test-hello.bin                         \
          test-libaudit.bin                      \
          test-libbfd.bin                        \
+         test-disassembler-four-args.bin        \
          test-liberty.bin                       \
          test-liberty-z.bin                     \
          test-cplus-demangle.bin                \
@@ -188,6 +189,9 @@ $(OUTPUT)test-libpython-version.bin:
 $(OUTPUT)test-libbfd.bin:
  $(BUILD) -DPACKAGE='"perf"' -lbfd -lz -liberty -ldl
 
+$(OUTPUT)test-disassembler-four-args.bin:
+ $(BUILD) -lbfd -lopcodes
+
 $(OUTPUT)test-liberty.bin:
  $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty
 
diff --git a/tools/build/feature/test-disassembler-four-args.c b/tools/build/feature/test-disassembler-four-args.c
new file mode 100644
index 000000000000..45ce65cfddf0
--- /dev/null
+++ b/tools/build/feature/test-disassembler-four-args.c
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <bfd.h>
+#include <dis-asm.h>
+
+int main(void)
+{
+ bfd *abfd = bfd_openr(NULL, NULL);
+
+ disassembler(bfd_get_arch(abfd),
+     bfd_big_endian(abfd),
+     bfd_get_mach(abfd),
+     abfd);
+
+ return 0;
+}
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[bionic][PATCH 2/2] UBUNTU: [Debian] package bpftool in linux-tools-common

Quentin Monnet
In reply to this post by Quentin Monnet
BugLink: https://bugs.launchpad.net/bugs/1774815

bpftool is a debugging and introspection tool for BPF elements,
developed by the BPF kernel community. Its source code is located in the
kernel repository, at tools/bpf/bpftool. Package it in linux-tools and
linux-tools-common.

Along the binary, package manual pages and bash completion file. Note
that the generated manual page bpf-helpers.7 is NOT packaged, as this
one is now included in the man-pages repository.

bpftool itself is installed under /usr/sbin/, to be consistent with its
Makefile.

Dependency python-docutils is added to Build-Depends-Indep, in order to
provide rst2man which is necessary to build bpftool's manual pages.

Signed-off-by: Quentin Monnet <[hidden email]>
---
 debian.master/control.stub.in    |  1 +
 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 +++++++++++-
 11 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/debian.master/control.stub.in b/debian.master/control.stub.in
index 2821ca85668c..f0120b16aa91 100644
--- a/debian.master/control.stub.in
+++ b/debian.master/control.stub.in
@@ -44,6 +44,7 @@ Build-Depends-Indep:
  asciidoc <!stage1>,
  python-sphinx <!stage1>,
  python-sphinx-rtd-theme <!stage1>,
+ python-docutils <!stage1>,
 Vcs-Git: git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/bionic
 XS-Testsuite: autopkgtest
 #XS-Testsuite-Depends: gcc-4.7 binutils
diff --git a/debian.master/rules.d/amd64.mk b/debian.master/rules.d/amd64.mk
index eeb51dea374b..bfb07bc9259b 100644
--- a/debian.master/rules.d/amd64.mk
+++ b/debian.master/rules.d/amd64.mk
@@ -13,6 +13,7 @@ uefi_signed     = true
 do_tools_usbip  = true
 do_tools_cpupower = true
 do_tools_perf   = true
+do_tools_bpftool = true
 do_tools_x86 = true
 do_tools_hyperv = true
 do_tools_host = true
diff --git a/debian.master/rules.d/arm64.mk b/debian.master/rules.d/arm64.mk
index 14c413282c69..c395d34a4e5f 100644
--- a/debian.master/rules.d/arm64.mk
+++ b/debian.master/rules.d/arm64.mk
@@ -15,6 +15,7 @@ do_extras_package = true
 do_tools_usbip  = true
 do_tools_cpupower = true
 do_tools_perf   = true
+do_tools_bpftool = true
 
 do_dtbs = true
 do_zfs = true
diff --git a/debian.master/rules.d/armhf.mk b/debian.master/rules.d/armhf.mk
index 6cabbf281e55..b42e987c2245 100644
--- a/debian.master/rules.d/armhf.mk
+++ b/debian.master/rules.d/armhf.mk
@@ -13,5 +13,6 @@ loader = grub
 do_tools_usbip  = true
 do_tools_cpupower = true
 do_tools_perf = true
+do_tools_bpftool = true
 
 do_dtbs = true
diff --git a/debian.master/rules.d/i386.mk b/debian.master/rules.d/i386.mk
index 8c470c4dab6a..b9be3a167513 100644
--- a/debian.master/rules.d/i386.mk
+++ b/debian.master/rules.d/i386.mk
@@ -12,6 +12,7 @@ no_dumpfile = true
 do_tools_usbip  = true
 do_tools_cpupower = true
 do_tools_perf   = true
+do_tools_bpftool = true
 do_tools_x86 = true
 do_tools_hyperv = true
 do_extras_package = true
diff --git a/debian.master/rules.d/ppc64el.mk b/debian.master/rules.d/ppc64el.mk
index 7faecd720dc7..d893af68f272 100644
--- a/debian.master/rules.d/ppc64el.mk
+++ b/debian.master/rules.d/ppc64el.mk
@@ -14,6 +14,7 @@ opal_signed       = true
 do_tools_usbip    = true
 do_tools_cpupower = true
 do_tools_perf  = true
+do_tools_bpftool  = true
 
 #do_flavour_image_package = false
 do_zfs = true
diff --git a/debian.master/rules.d/s390x.mk b/debian.master/rules.d/s390x.mk
index 5b468acdfe44..d51c17008abb 100644
--- a/debian.master/rules.d/s390x.mk
+++ b/debian.master/rules.d/s390x.mk
@@ -15,5 +15,6 @@ do_extras_package = true
 do_tools_usbip    = true
 do_tools_cpupower = true
 do_tools_perf     = true
+do_tools_bpftool  = true
 
 do_zfs = true
diff --git a/debian/rules b/debian/rules
index fd3397c67996..cdc107941787 100755
--- a/debian/rules
+++ b/debian/rules
@@ -33,7 +33,7 @@ include $(DROOT)/rules.d/0-common-vars.mk
 # Maintainer targets
 include $(DROOT)/rules.d/1-maintainer.mk
 
-do_linux_tools=$(sort $(filter-out false,$(do_tools_usbip) $(do_tools_cpupower) $(do_tools_perf) $(do_tools_x86)))
+do_linux_tools=$(sort $(filter-out false,$(do_tools_usbip) $(do_tools_cpupower) $(do_tools_perf) $(do_tools_bpftool) $(do_tools_x86)))
 do_cloud_tools=$(sort $(filter-out false,$(do_tools_hyperv)))
 do_tools_common?=true
 do_tools_host?=false
diff --git a/debian/rules.d/1-maintainer.mk b/debian/rules.d/1-maintainer.mk
index 8144be29523e..e515965d6f73 100644
--- a/debian/rules.d/1-maintainer.mk
+++ b/debian/rules.d/1-maintainer.mk
@@ -84,6 +84,7 @@ printenv:
  @echo "do_linux_tools            = $(do_linux_tools)"
  @echo " do_tools_cpupower         = $(do_tools_cpupower)"
  @echo " do_tools_perf             = $(do_tools_perf)"
+ @echo " do_tools_bpftool          = $(do_tools_bpftool)"
  @echo " do_tools_x86              = $(do_tools_x86)"
  @echo " do_tools_host             = $(do_tools_host)"
  @echo "do_cloud_tools            = $(do_cloud_tools)"
diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
index 9267d96fdf7e..eed74229e80e 100644
--- a/debian/rules.d/2-binary-arch.mk
+++ b/debian/rules.d/2-binary-arch.mk
@@ -385,6 +385,9 @@ endif
 ifeq ($(do_tools_perf),true)
  $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/perf $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
 endif
+ifeq ($(do_tools_bpftool),true)
+ $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/bpftool $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
+endif
 ifeq ($(do_tools_x86),true)
  $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/x86_energy_perf_policy $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
  $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/turbostat $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
@@ -649,6 +652,9 @@ ifeq ($(do_tools_perf),true)
  cd $(builddirpa)/tools/perf && \
  $(kmake) prefix=/usr HAVE_NO_LIBBFD=1 HAVE_CPLUS_DEMANGLE_SUPPORT=1 CROSS_COMPILE=$(CROSS_COMPILE) NO_LIBPYTHON=1 NO_LIBPERL=1 PYTHON=python2.7
 endif
+ifeq ($(do_tools_bpftool),true)
+ $(kmake) -C $(builddirpa)/tools/bpf/bpftool
+endif
 ifeq ($(do_tools_x86),true)
  cd $(builddirpa)/tools/power/x86/x86_energy_perf_policy && make CROSS_COMPILE=$(CROSS_COMPILE)
  cd $(builddirpa)/tools/power/x86/turbostat && make CROSS_COMPILE=$(CROSS_COMPILE)
@@ -690,6 +696,9 @@ endif
 ifeq ($(do_tools_perf),true)
  install -m755 $(builddirpa)/tools/perf/perf $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
 endif
+ifeq ($(do_tools_bpftool),true)
+ install -m755 $(builddirpa)/tools/bpf/bpftool/bpftool $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
+endif
 ifeq ($(do_tools_x86),true)
  install -m755 $(builddirpa)/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy \
  $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
diff --git a/debian/rules.d/3-binary-indep.mk b/debian/rules.d/3-binary-indep.mk
index b27275685612..e5c6bc0c2c8a 100644
--- a/debian/rules.d/3-binary-indep.mk
+++ b/debian/rules.d/3-binary-indep.mk
@@ -84,6 +84,7 @@ install-tools: toolspkg = $(tools_common_pkg_name)
 install-tools: toolsbin = $(CURDIR)/debian/$(toolspkg)/usr/bin
 install-tools: toolssbin = $(CURDIR)/debian/$(toolspkg)/usr/sbin
 install-tools: toolsman = $(CURDIR)/debian/$(toolspkg)/usr/share/man
+install-tools: toolsbashcomp = $(CURDIR)/debian/$(toolspkg)/usr/share/bash-completion/completions
 install-tools: hosttoolspkg = $(hosttools_pkg_name)
 install-tools: hosttoolsbin = $(CURDIR)/debian/$(hosttoolspkg)/usr/bin
 install-tools: hosttoolsman = $(CURDIR)/debian/$(hosttoolspkg)/usr/share/man
@@ -102,7 +103,10 @@ ifeq ($(do_tools_common),true)
  rsync -a tools/ $(builddir)/tools/tools/
 
  install -d $(toolsbin)
+ install -d $(toolssbin)
  install -d $(toolsman)/man1
+ install -d $(toolsman)/man8
+ install -d $(toolsbashcomp)
 
  install -m755 debian/tools/generic $(toolsbin)/usbip
  install -m755 debian/tools/generic $(toolsbin)/usbipd
@@ -113,6 +117,13 @@ ifeq ($(do_tools_common),true)
 
  install -m755 debian/tools/generic $(toolsbin)/perf
 
+ install -m755 debian/tools/generic $(toolssbin)/bpftool
+ make -C $(builddir)/tools/tools/bpf/bpftool doc
+ install -m644 $(builddir)/tools/tools/bpf/bpftool/Documentation/*.8 \
+ $(toolsman)/man8
+ install -m644 $(builddir)/tools/tools/bpf/bpftool/bash-completion/bpftool \
+ $(toolsbashcomp)
+
  install -m755 debian/tools/generic $(toolsbin)/x86_energy_perf_policy
  install -m755 debian/tools/generic $(toolsbin)/turbostat
 
@@ -120,7 +131,6 @@ ifeq ($(do_tools_common),true)
  install -m644 $(builddir)/tools/tools/perf/Documentation/*.1 \
  $(toolsman)/man1
 
- install -d $(toolsman)/man8
  install -m644 $(CURDIR)/tools/power/x86/x86_energy_perf_policy/*.8 $(toolsman)/man8
  install -m644 $(CURDIR)/tools/power/x86/turbostat/*.8 $(toolsman)/man8
 
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

Re: [bionic][PATCH 0/2] add bpftool to linux-tools-common

Quentin Monnet
In reply to this post by Quentin Monnet
2019-07-21 17:36 UTC+0100 ~ Quentin Monnet <[hidden email]>

> 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 use to provide other tools located in
> the kernel repository, such as perf.
>
> Because the bpftool version provided with kernel 4.15 does not build properly
> (API changed at some point in bfd.h from binutils-dev), backport a patch from
> 4.16 to fix the calls to libbfd's disassembler.
>
> [Testcase]
>
> A test linux package was successfully built, at:
>
> https://launchpad.net/~qmonnet/+archive/ubuntu/ppa-linux-bpftool
>
> (The i386 build actually fails, but it does not seem related to the
> changes. The amd64 build succeeded.)
>
> 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:
>
> - The backported patch touches 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, none is removed.
>
> ---
> This is my first contribution to ubuntu_kernel, please let me know if I got
> anything wrong with the process.
>
> I would like bpftool to be packaged for bionic and later (supported) releases,
> if possible. Could someone provide me some guidance on the process, please?
> Should I also submit the packaging patch for disco/eowan? (As the patch
> backported in this series is in Linux 4.16, later Ubuntu versions should not
> need this backport.)
>

Hi all,

I am looking forwards to having bpftool packaged on bionic and later
releases. Is there anything more I can do to help with getting this
patchset accepted? Please let me know.

(I am not aware of the usual processing delays for patches on the
mailing list, please accept my apologies - and tell me - if pinging does
not feel appropriate.)

Best regards,
Quentin

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

Re: [bionic][PATCH 0/2] add bpftool to linux-tools-common

Kleber Souza
On 8/12/19 6:27 PM, Quentin Monnet wrote:

> 2019-07-21 17:36 UTC+0100 ~ Quentin Monnet <[hidden email]>
>> 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 use to provide other tools located in
>> the kernel repository, such as perf.
>>
>> Because the bpftool version provided with kernel 4.15 does not build properly
>> (API changed at some point in bfd.h from binutils-dev), backport a patch from
>> 4.16 to fix the calls to libbfd's disassembler.
>>
>> [Testcase]
>>
>> A test linux package was successfully built, at:
>>
>> https://launchpad.net/~qmonnet/+archive/ubuntu/ppa-linux-bpftool
>>
>> (The i386 build actually fails, but it does not seem related to the
>> changes. The amd64 build succeeded.)
>>
>> 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:
>>
>> - The backported patch touches 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, none is removed.
>>
>> ---
>> This is my first contribution to ubuntu_kernel, please let me know if I got
>> anything wrong with the process.
>>
>> I would like bpftool to be packaged for bionic and later (supported) releases,
>> if possible. Could someone provide me some guidance on the process, please?
>> Should I also submit the packaging patch for disco/eowan? (As the patch
>> backported in this series is in Linux 4.16, later Ubuntu versions should not
>> need this backport.)
>>
>
> Hi all,
>
> I am looking forwards to having bpftool packaged on bionic and later
> releases. Is there anything more I can do to help with getting this
> patchset accepted? Please let me know.
>
> (I am not aware of the usual processing delays for patches on the
> mailing list, please accept my apologies - and tell me - if pinging does
> not feel appropriate.)
>

Hi Quentin,

Thank you for your contribution to the Ubuntu kernel.

From what I can tell your submission as a SRU request followed all the
guidelines. However, our rule for this sort of packaging change is that
it needs to be made first in the development series (currently Eoan). This
is so that no newer releases get out of sync and that we have time to test
the changes in the devel series before backporting to a stable series.

I would suggest sending the request again tagging as "[EOAN][UNSTABLE]"
so that the development team can assess this change (I have added them on
CC).


Thank you,

Kleber

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

Re: [bionic][PATCH 0/2] add bpftool to linux-tools-common

Quentin Monnet
2019-08-14 11:45 UTC+0200 ~ Kleber Souza <[hidden email]>

> On 8/12/19 6:27 PM, Quentin Monnet wrote:
>> 2019-07-21 17:36 UTC+0100 ~ Quentin Monnet <[hidden email]>
>>> 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 use to provide other tools located in
>>> the kernel repository, such as perf.
>>>
>>> Because the bpftool version provided with kernel 4.15 does not build properly
>>> (API changed at some point in bfd.h from binutils-dev), backport a patch from
>>> 4.16 to fix the calls to libbfd's disassembler.
>>>
>>> [Testcase]
>>>
>>> A test linux package was successfully built, at:
>>>
>>> https://launchpad.net/~qmonnet/+archive/ubuntu/ppa-linux-bpftool
>>>
>>> (The i386 build actually fails, but it does not seem related to the
>>> changes. The amd64 build succeeded.)
>>>
>>> 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:
>>>
>>> - The backported patch touches 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, none is removed.
>>>
>>> ---
>>> This is my first contribution to ubuntu_kernel, please let me know if I got
>>> anything wrong with the process.
>>>
>>> I would like bpftool to be packaged for bionic and later (supported) releases,
>>> if possible. Could someone provide me some guidance on the process, please?
>>> Should I also submit the packaging patch for disco/eowan? (As the patch
>>> backported in this series is in Linux 4.16, later Ubuntu versions should not
>>> need this backport.)
>>>
>>
>> Hi all,
>>
>> I am looking forwards to having bpftool packaged on bionic and later
>> releases. Is there anything more I can do to help with getting this
>> patchset accepted? Please let me know.
>>
>> (I am not aware of the usual processing delays for patches on the
>> mailing list, please accept my apologies - and tell me - if pinging does
>> not feel appropriate.)
>>
>
> Hi Quentin,
>
> Thank you for your contribution to the Ubuntu kernel.
>
> From what I can tell your submission as a SRU request followed all the
> guidelines. However, our rule for this sort of packaging change is that
> it needs to be made first in the development series (currently Eoan). This
> is so that no newer releases get out of sync and that we have time to test
> the changes in the devel series before backporting to a stable series.
>
> I would suggest sending the request again tagging as "[EOAN][UNSTABLE]"
> so that the development team can assess this change (I have added them on
> CC).

Hi Kleber,

Thank you for your answer and guidance! I will rebase the patch for
Eowan, and resubmit as you indicated.

Best regards,
Quentin

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team