package/bpftool: new package

Move the target bpftool build out of linux-tools so that it is
up to date.

This also fixes build issues due to differences between kernel
versions. The latest version should be fully backwards compatible.

The host bpftool is needed for enabling features such as the systemd
bpf-framework (to be added in a future patch).

Use the git download method to get the libbpf submodule.

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2022.02.x
James Hilliard 2022-01-31 11:51:54 -07:00 committed by Arnout Vandecappelle (Essensium/Mind)
parent 7c7de551c5
commit 3675131e6c
8 changed files with 78 additions and 59 deletions

View File

@ -146,6 +146,14 @@ endif
comment "Legacy options removed in 2022.02"
config BR2_PACKAGE_LINUX_TOOLS_BPFTOOL
bool "bpftool was moved"
select BR2_LEGACY
select BR2_PACKAGE_BPFTOOL
help
The linux-tools bpftool build has been moved out
of the linux-tools package.
config BR2_TARGET_UBOOT_NEEDS_PYTHON2
bool "host-python 2.7 support for U-Boot was removed"
select BR2_LEGACY

View File

@ -1279,6 +1279,7 @@ F: configs/pine64_sopine_defconfig
N: James Hilliard <james.hilliard1@gmail.com>
F: package/apcupsd/
F: package/bpftool/
F: package/exfatprogs/
F: package/gensio/
F: package/lua-std-debug/

View File

@ -86,6 +86,7 @@ menu "Debugging, profiling and benchmark"
source "package/babeltrace2/Config.in"
source "package/blktrace/Config.in"
source "package/bonnie/Config.in"
source "package/bpftool/Config.in"
source "package/cache-calibrator/Config.in"
source "package/clinfo/Config.in"
source "package/coremark/Config.in"

View File

@ -0,0 +1,18 @@
config BR2_PACKAGE_BPFTOOL
bool "bpftool"
depends on !BR2_nios2 # binutils
depends on BR2_USE_WCHAR # binutils, elfutils
depends on !BR2_STATIC_LIBS # elfutils
depends on BR2_TOOLCHAIN_HAS_THREADS # elfutils
depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils
select BR2_PACKAGE_BINUTILS
select BR2_PACKAGE_ELFUTILS
help
bpftool is a tool for for inspection and simple manipulation
of eBPF programs and maps.
comment "bpftool needs a uClibc or glibc toolchain w/ wchar, dynamic library, threads"
depends on !BR2_nios2
depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \
|| !BR2_TOOLCHAIN_HAS_THREADS \
|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)

View File

@ -0,0 +1,5 @@
# Locally calculated
sha256 c868cb85bf44195ec6cd20649c3db4f7aff64a38d950a1c2911d981fb2d7042c bpftool-a7f0e7f057283ae8af3de4578bcb8b7ee80b7144-br1.tar.gz
sha256 7c588754d5e81e92e2a12e47cf78949d485c9c22b4850f12d21b3835c85947d1 LICENSE
sha256 6313108c23efffa36948f8b2cff1560a5935373b527b0e1a837cc77e6ed1bacd LICENSE.BSD-2-Clause
sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL-2.0

View File

@ -0,0 +1,45 @@
################################################################################
#
# bpftool
#
################################################################################
BPFTOOL_VERSION = a7f0e7f057283ae8af3de4578bcb8b7ee80b7144
BPFTOOL_SITE = https://github.com/libbpf/bpftool
BPFTOOL_SITE_METHOD = git
BPFTOOL_GIT_SUBMODULES = YES
BPFTOOL_LICENSE = GPL-2.0, BSD-2-Clause
BPFTOOL_LICENSE_FILES = LICENSE LICENSE.BSD-2-Clause LICENSE.GPL-2.0
BPFTOOL_DEPENDENCIES = binutils elfutils
HOST_BPFTOOL_DEPENDENCIES = host-elfutils host-pkgconf host-zlib
ifeq ($(BR2_PACKAGE_LIBCAP),y)
BPFTOOL_DEPENDENCIES += libcap
endif
ifeq ($(BR2_PACKAGE_ZLIB),y)
BPFTOOL_DEPENDENCIES += zlib
endif
define BPFTOOL_BUILD_CMDS
$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \
-C $(@D)/src
endef
define HOST_BPFTOOL_BUILD_CMDS
$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) \
-C $(@D)/src
endef
define BPFTOOL_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \
-C $(@D)/src install DESTDIR="$(TARGET_DIR)" prefix=/usr
endef
define HOST_BPFTOOL_INSTALL_CMDS
$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) \
-C $(@D)/src install DESTDIR="$(HOST_DIR)" prefix=/usr
endef
$(eval $(generic-package))
$(eval $(host-generic-package))

View File

@ -5,28 +5,6 @@ menu "Linux Kernel Tools"
config BR2_PACKAGE_LINUX_TOOLS
bool
config BR2_PACKAGE_LINUX_TOOLS_BPFTOOL
bool "bpftool"
depends on !BR2_nios2 # binutils
depends on BR2_USE_WCHAR # binutils, elfutils
depends on !BR2_STATIC_LIBS # elfutils
depends on BR2_TOOLCHAIN_HAS_THREADS # elfutils
depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils
select BR2_PACKAGE_LINUX_TOOLS
select BR2_PACKAGE_BINUTILS
select BR2_PACKAGE_ELFUTILS
help
bpftool is a tool for for inspection and simple manipulation
of eBPF programs and maps.
These tools are available only from kernel version 4.15.
comment "bpftool needs a uClibc or glibc toolchain w/ wchar, dynamic library, threads"
depends on !BR2_nios2
depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \
|| !BR2_TOOLCHAIN_HAS_THREADS \
|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)
config BR2_PACKAGE_LINUX_TOOLS_CPUPOWER
bool "cpupower"
select BR2_PACKAGE_LINUX_TOOLS

View File

@ -1,37 +0,0 @@
################################################################################
#
# bpftool
#
################################################################################
LINUX_TOOLS += bpftool
BPFTOOL_DEPENDENCIES = binutils elfutils
ifeq ($(BR2_PACKAGE_LIBCAP),y)
BPFTOOL_DEPENDENCIES += libcap
endif
ifeq ($(BR2_PACKAGE_ZLIB),y)
BPFTOOL_DEPENDENCIES += zlib
endif
BPFTOOL_MAKE_OPTS = $(LINUX_MAKE_FLAGS)
define BPFTOOL_BUILD_CMDS
$(Q)if ! grep install $(LINUX_DIR)/tools/bpf/bpftool/Makefile >/dev/null 2>&1 ; then \
echo "Your kernel version is too old and does not have install section in the bpf tools." ; \
echo "At least kernel 4.15 must be used." ; \
exit 1 ; \
fi
$(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools/bpf/bpftool \
$(BPFTOOL_MAKE_OPTS)
endef
define BPFTOOL_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools/bpf/bpftool \
$(BPFTOOL_MAKE_OPTS) \
DESTDIR=$(TARGET_DIR) \
install
endef