meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb
Khem Raj 6d3a650372
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 <raj.khem@gmail.com>
2025-09-06 14:17:15 -07:00

50 lines
1.2 KiB
BlitzBasic

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"
DEPENDS = "binutils elfutils elfutils-native"
PROVIDES = "virtual/bpftool"
inherit bash-completion kernelsrc kernel-arch
do_populate_lic[depends] += "virtual/kernel:do_shared_workdir"
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 \
"
SECURITY_CFLAGS = ""
do_configure[depends] += "virtual/kernel:do_shared_workdir"
COMPATIBLE_HOST = "(x86_64|aarch64|riscv64).*-linux"
do_compile() {
oe_runmake
}
do_install() {
oe_runmake DESTDIR=${D} install
}
PACKAGE_ARCH = "${MACHINE_ARCH}"
python do_package:prepend() {
d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0])
}
B = "${WORKDIR}/${BPN}-${PV}"
FILES:${PN} += "${exec_prefix}/sbin/*"
BBCLASSEXTEND = "nativesdk"