From 6d3a6503720b10b0edd6e70ee3595032e0aa975b Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 6 Sep 2025 14:09:26 -0700 Subject: [PATCH] bpftool,bpftool-native: Separate out native recipe build uses prepared sourcedir for kernel and relying on target kernel recipe to prepare this is not the correct thing for native package. Since the kernel will need target dependencies cross-compiler etc. to build/prepare the kernel sourcedir This issue is revealed when bpftool-native is built for riscv64 it ends up in build errors ERROR: bpftool-native-1.0-r0 do_configure: The sstate manifest for task 'linux-libc-headers:populate_sysroot' (multilib variant '') could not be found. The pkgarchs considered were: qemuriscv64, allarch, x86_64_x86_64-nativesdk. But none of these manifests exists: /mnt/b/yoe/master/sources/poky/build/tmp/sstate-control/manifest-qemuriscv64-linux-libc-headers.populate_sysroot /mnt/b/yoe/master/sources/poky/build/tmp/sstate-control/manifest-allarch-linux-libc-headers.populate_sysroot /mnt/b/yoe/master/sources/poky/build/tmp/sstate-control/manifest-x86_64_x86_64-nativesdk-linux-libc-headers.populate_sysroot ERROR: Logfile of failure stored in: /mnt/b/yoe/master/sources/poky/build/tmp/work/x86_64-linux/bpftool-native/1.0/temp/log.do_configure.2509356 Therefore separate it out into independent recipe and use latest stable kernel to build it. Enable musl builds as well for bpftool, it works now. Signed-off-by: Khem Raj --- .../bpftool/bpftool-native_6.16.bb | 38 +++++++++++++++++++ meta-oe/recipes-kernel/bpftool/bpftool.bb | 3 +- 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 meta-oe/recipes-kernel/bpftool/bpftool-native_6.16.bb diff --git a/meta-oe/recipes-kernel/bpftool/bpftool-native_6.16.bb b/meta-oe/recipes-kernel/bpftool/bpftool-native_6.16.bb new file mode 100644 index 0000000000..bc7712ce4d --- /dev/null +++ b/meta-oe/recipes-kernel/bpftool/bpftool-native_6.16.bb @@ -0,0 +1,38 @@ +SUMMARY = "Inspect and manipulate eBPF programs and maps" +DESCRIPTION = "bpftool is a kernel tool for inspection and simple manipulation \ +of eBPF programs and maps." +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" +UPSTREAM_CHECK_URI = "https://www.kernel.org/" + +DEPENDS = "binutils-native elfutils-native" + +inherit native bash-completion + +SRC_URI = "${KERNELORG_MIRROR}/linux/kernel/v6.x/linux-${PV}.tar.xz" +SRC_URI[sha256sum] = "1a4be2fe6b5246aa4ac8987a8a4af34c42a8dd7d08b46ab48516bcc1befbcd83" + +S = "${UNPACKDIR}/linux-${PV}" + +EXTRA_OEMAKE = "\ + V=1 \ + -C ${S}/tools/bpf/bpftool \ + O=${B} \ + CROSS=${TARGET_PREFIX} \ + CC="${CC} ${DEBUG_PREFIX_MAP} -ffile-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} ${CFLAGS}" \ + HOSTCC="${BUILD_CC} ${BUILD_CFLAGS}" \ + LD="${LD}" \ + AR=${AR} \ + ARCH=${ARCH} \ + bash_compdir=${prefix}/share/bash-completion \ +" + +do_compile() { + oe_runmake +} + +do_install() { + oe_runmake DESTDIR=${D} install +} + +FILES:${PN} += "${exec_prefix}/sbin/*" diff --git a/meta-oe/recipes-kernel/bpftool/bpftool.bb b/meta-oe/recipes-kernel/bpftool/bpftool.bb index d19746184c..4f4d4a8670 100644 --- a/meta-oe/recipes-kernel/bpftool/bpftool.bb +++ b/meta-oe/recipes-kernel/bpftool/bpftool.bb @@ -27,7 +27,6 @@ SECURITY_CFLAGS = "" do_configure[depends] += "virtual/kernel:do_shared_workdir" COMPATIBLE_HOST = "(x86_64|aarch64|riscv64).*-linux" -COMPATIBLE_HOST:libc-musl = 'null' do_compile() { oe_runmake @@ -47,4 +46,4 @@ B = "${WORKDIR}/${BPN}-${PV}" FILES:${PN} += "${exec_prefix}/sbin/*" -BBCLASSEXTEND = "native nativesdk" +BBCLASSEXTEND = "nativesdk"