diff --git a/meta-oe/recipes-support/xdp-tools/files/0001-configure-correctly-handle-CC-when-validating-requir.patch b/meta-oe/recipes-support/xdp-tools/files/0001-configure-correctly-handle-CC-when-validating-requir.patch new file mode 100644 index 0000000000..1102566ab9 --- /dev/null +++ b/meta-oe/recipes-support/xdp-tools/files/0001-configure-correctly-handle-CC-when-validating-requir.patch @@ -0,0 +1,45 @@ +From 2a6d219ec2f5413e38ec502421cce8a2c6d7f054 Mon Sep 17 00:00:00 2001 +From: Rajkumar Patel +Date: Tue, 9 Jun 2026 11:22:13 +0530 +Subject: [PATCH 1/2] configure: correctly handle CC when validating required + tools + +The tool validation loop checks the availability of required +binaries using `command -v`. However, when CC is defined with +additional flags (e.g. "aarch64-linux-gnu-gcc -O2 -pipe"), +the check fails because `command -v` expects only the binary +name. + +Extract the actual compiler executable from CC by taking the +first word and include it in the validation list. + +This ensures tool detection works correctly in cross-compilation +environments where CC commonly includes compiler flags. + +Additionally, quote variable expansions to avoid issues with +word splitting and empty values. + +Upstream-Status: Pending + +Signed-off-by: Rajkumar Patel +--- + configure | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index d57b2ae..a234f80 100755 +--- a/configure ++++ b/configure +@@ -70,8 +70,10 @@ check_toolchain() + + CLANG=$(find_tool clang "$CLANG") + +- for TOOL in $PKG_CONFIG $CC $OBJCOPY $CLANG $M4 $READELF; do +- if [ ! $(command -v ${TOOL} 2>/dev/null) ]; then ++ CC_TOOL=$(echo "$CC" | awk '{print $1}') ++ ++ for TOOL in $PKG_CONFIG "$CC_TOOL" $OBJCOPY $CLANG $M4 $READELF; do ++ if [ ! $(command -v "${TOOL}" 2>/dev/null) ]; then + echo "*** ERROR: Cannot find tool ${TOOL}" ; + exit 1; + fi; diff --git a/meta-oe/recipes-support/xdp-tools/files/0002-lib-libxdp-Makefile-use-cp-fRd-to-preserve-symlinks-.patch b/meta-oe/recipes-support/xdp-tools/files/0002-lib-libxdp-Makefile-use-cp-fRd-to-preserve-symlinks-.patch new file mode 100644 index 0000000000..bc860ada71 --- /dev/null +++ b/meta-oe/recipes-support/xdp-tools/files/0002-lib-libxdp-Makefile-use-cp-fRd-to-preserve-symlinks-.patch @@ -0,0 +1,36 @@ +From 064ccdaf0d84bea86f9cd17383581c3844a33151 Mon Sep 17 00:00:00 2001 +From: Rajkumar Patel +Date: Tue, 9 Jun 2026 11:24:51 +0530 +Subject: [PATCH 2/2] lib/libxdp/Makefile: use cp -fRd to preserve symlinks + without metadata + +cp -fpR preserves ownership and timestamps from the build host, +which breaks cross-compilation and packaging QA checks. + +The `-p` flag is unnecessary for symlink handling. Replace it +with `-d` to explicitly preserve symlinks without carrying over +file metadata. + +Switch to cp -fRd to maintain symlink structure while avoiding +host contamination. + +Upstream-Status: Pending + +Signed-off-by: Rajkumar Patel +--- + lib/libxdp/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/libxdp/Makefile b/lib/libxdp/Makefile +index 7ea7e7e..3c36b70 100644 +--- a/lib/libxdp/Makefile ++++ b/lib/libxdp/Makefile +@@ -56,7 +56,7 @@ install: all + $(Q)install -d -m 0755 $(DESTDIR)$(BPF_OBJECT_DIR) + $(Q)install -m 0644 $(LIB_HEADERS) $(DESTDIR)$(HDRDIR)/ + $(Q)install -m 0644 $(PC_FILE) $(DESTDIR)$(LIBDIR)/pkgconfig/ +- $(Q)cp -fpR $(SHARED_LIBS) $(STATIC_LIBS) $(DESTDIR)$(LIBDIR) ++ $(Q)cp -fdR $(SHARED_LIBS) $(STATIC_LIBS) $(DESTDIR)$(LIBDIR) + $(Q)install -m 0644 $(XDP_OBJS) $(DESTDIR)$(BPF_OBJECT_DIR) + $(if $(MAN_FILES),$(Q)install -m 0755 -d $(DESTDIR)$(MANDIR)/man3) + $(if $(MAN_FILES),$(Q)install -m 0644 $(MAN_FILES) $(DESTDIR)$(MANDIR)/man3) diff --git a/meta-oe/recipes-support/xdp-tools/xdp-tools/0001-configure-skip-toolchain-checks.patch b/meta-oe/recipes-support/xdp-tools/xdp-tools/0001-configure-skip-toolchain-checks.patch deleted file mode 100644 index 0c891528cb..0000000000 --- a/meta-oe/recipes-support/xdp-tools/xdp-tools/0001-configure-skip-toolchain-checks.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 9c9dce2e5f04de65b7b00321f96fff6071546ea1 Mon Sep 17 00:00:00 2001 -From: Naveen Saini -Date: Mon, 17 Oct 2022 15:44:16 +0800 -Subject: [PATCH] configure: skip toolchain checks - -Current logic fetch full command line along with the tool. i.e -gcc -m64 -march=skylake -mtune=generic ... - -Which throws ERROR: Cannot find tool -m64 - -So need to re-write for loop, so it can work in cross-compilation -environment too. - -Upstream-Status: Inappropriate - -Signed-off-by: Naveen Saini - ---- - configure | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/configure b/configure -index b4e824f..10618fc 100755 ---- a/configure -+++ b/configure -@@ -69,12 +69,12 @@ check_toolchain() - CLANG=$(find_tool clang "$CLANG") - LLC=$(find_tool llc "$LLC") - -- for TOOL in $PKG_CONFIG $CC $LD $OBJCOPY $CLANG $LLC $M4; do -- if [ ! $(command -v ${TOOL} 2>/dev/null) ]; then -- echo "*** ERROR: Cannot find tool ${TOOL}" ; -- exit 1; -- fi; -- done -+ #for TOOL in $PKG_CONFIG $CC $LD $OBJCOPY $CLANG $LLC $M4; do -+ # if [ ! $(command -v ${TOOL} 2>/dev/null) ]; then -+ # echo "*** ERROR: Cannot find tool ${TOOL}" ; -+ # exit 1; -+ # fi; -+ #done - - clang_version=$($CLANG --version | grep -Po '(?<=clang version )[[:digit:]]+') - if [ "$?" -ne "0" ]; then diff --git a/meta-oe/recipes-support/xdp-tools/xdp-tools/0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch b/meta-oe/recipes-support/xdp-tools/xdp-tools/0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch deleted file mode 100644 index 2e66783692..0000000000 --- a/meta-oe/recipes-support/xdp-tools/xdp-tools/0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 2840cf0b89497f545fae2eed7ece3f3c5fc558e3 Mon Sep 17 00:00:00 2001 -From: Naveen Saini -Date: Mon, 17 Oct 2022 15:50:34 +0800 -Subject: [PATCH 2/4] Makefile: It does not detect libbpf header from sysroot - -So adding sysroot headers path. - -Upstream-Status: OE-Specific - -Signed-off-by: Naveen Saini ---- - lib/common.mk | 2 +- - lib/libxdp/Makefile | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lib/common.mk b/lib/common.mk -index 56c0406..ab0bad8 100644 ---- a/lib/common.mk -+++ b/lib/common.mk -@@ -55,7 +55,7 @@ LIBXDP_SOURCES := $(wildcard $(LIBXDP_DIR)/*.[ch] $(LIBXDP_DIR)/*.in) - KERN_USER_H ?= $(wildcard common_kern_user.h) - - CFLAGS += -I$(HEADER_DIR) -I$(LIB_DIR)/util $(ARCH_INCLUDES) --BPF_CFLAGS += -I$(HEADER_DIR) $(ARCH_INCLUDES) -+BPF_CFLAGS += -I$(HEADER_DIR) $(ARCH_INCLUDES) -I${STAGING_INCDIR}/ - - BPF_HEADERS := $(wildcard $(HEADER_DIR)/bpf/*.h) $(wildcard $(HEADER_DIR)/xdp/*.h) - -diff --git a/lib/libxdp/Makefile b/lib/libxdp/Makefile -index 358b751..8f459d8 100644 ---- a/lib/libxdp/Makefile -+++ b/lib/libxdp/Makefile -@@ -30,7 +30,7 @@ PC_FILE := $(OBJDIR)/libxdp.pc - TEMPLATED_SOURCES := xdp-dispatcher.c - - CFLAGS += -I$(HEADER_DIR) --BPF_CFLAGS += -I$(HEADER_DIR) -+BPF_CFLAGS += -I$(HEADER_DIR) -I${STAGING_INCDIR}/ - - - ifndef BUILD_STATIC_ONLY --- -2.25.1 - diff --git a/meta-oe/recipes-support/xdp-tools/xdp-tools/0003-Makefile-fix-KeyError-failure.patch b/meta-oe/recipes-support/xdp-tools/xdp-tools/0003-Makefile-fix-KeyError-failure.patch deleted file mode 100644 index 41c57f6eb2..0000000000 --- a/meta-oe/recipes-support/xdp-tools/xdp-tools/0003-Makefile-fix-KeyError-failure.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 157546fbc4f18751c52b3c8788879c05cf253331 Mon Sep 17 00:00:00 2001 -From: Naveen Saini -Date: Mon, 17 Oct 2022 16:02:46 +0800 -Subject: [PATCH 3/4] Makefile: fix KeyError failure - -Error: -Exception: KeyError: 'getpwuid(): uid not found: 11857215' - -Upstream-Status: Inappropriate - -Signed-off-by: Naveen Saini ---- - lib/libxdp/Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/libxdp/Makefile b/lib/libxdp/Makefile -index 8f459d8..9a340a3 100644 ---- a/lib/libxdp/Makefile -+++ b/lib/libxdp/Makefile -@@ -55,7 +55,7 @@ install: all - $(Q)install -d -m 0755 $(DESTDIR)$(BPF_OBJECT_DIR) - $(Q)install -m 0644 $(LIB_HEADERS) $(DESTDIR)$(HDRDIR)/ - $(Q)install -m 0644 $(PC_FILE) $(DESTDIR)$(LIBDIR)/pkgconfig/ -- $(Q)cp -fpR $(SHARED_LIBS) $(STATIC_LIBS) $(DESTDIR)$(LIBDIR) -+ $(Q)cp -fpR --no-preserve=ownership $(SHARED_LIBS) $(STATIC_LIBS) $(DESTDIR)$(LIBDIR) - $(Q)install -m 0755 $(XDP_OBJS) $(DESTDIR)$(BPF_OBJECT_DIR) - $(if $(MAN_FILES),$(Q)install -m 0755 -d $(DESTDIR)$(MANDIR)/man3) - $(if $(MAN_FILES),$(Q)install -m 0644 $(MAN_FILES) $(DESTDIR)$(MANDIR)/man3) --- -2.25.1 - diff --git a/meta-oe/recipes-support/xdp-tools/xdp-tools/0004-Makefile-fix-libxdp.pc-error.patch b/meta-oe/recipes-support/xdp-tools/xdp-tools/0004-Makefile-fix-libxdp.pc-error.patch deleted file mode 100644 index b1e15e5216..0000000000 --- a/meta-oe/recipes-support/xdp-tools/xdp-tools/0004-Makefile-fix-libxdp.pc-error.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 46b3ff797135574aa0ee42f633a281d44f48da95 Mon Sep 17 00:00:00 2001 -From: Naveen Saini -Date: Mon, 17 Oct 2022 16:05:15 +0800 -Subject: [PATCH 4/4] Makefile: fix libxdp.pc error - -Error: -do_populate_sysroot: QA Issue: libxdp.pc failed sanity test (tmpdir) in -path ... xdp-tools/1.2.8-r0/sysroot-destdir/usr/lib/pkgconfig [pkgconfig] - -Upstream-Status: Inappropriate - -Signed-off-by: Naveen Saini ---- - lib/libxdp/Makefile | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lib/libxdp/Makefile b/lib/libxdp/Makefile -index 9a340a3..bc39177 100644 ---- a/lib/libxdp/Makefile -+++ b/lib/libxdp/Makefile -@@ -76,8 +76,8 @@ $(OBJDIR)/libxdp.so.$(LIBXDP_VERSION): $(SHARED_OBJS) - $^ $(LDFLAGS) $(LDLIBS) -o $@ - - $(OBJDIR)/libxdp.pc: -- $(Q)sed -e "s|@PREFIX@|$(PREFIX)|" \ -- -e "s|@LIBDIR@|$(LIBDIR)|" \ -+ $(Q)sed -e "s|@PREFIX@|$(prefix)|" \ -+ -e "s|@LIBDIR@|$(libdir)|" \ - -e "s|@VERSION@|$(TOOLS_VERSION)|" \ - < libxdp.pc.template > $@ - --- -2.25.1 - diff --git a/meta-oe/recipes-support/xdp-tools/xdp-tools_1.2.10.bb b/meta-oe/recipes-support/xdp-tools/xdp-tools_1.2.10.bb deleted file mode 100644 index 4a06124caf..0000000000 --- a/meta-oe/recipes-support/xdp-tools/xdp-tools_1.2.10.bb +++ /dev/null @@ -1,36 +0,0 @@ -SUMMARY = "Utilities and example programs for use with XDP" -HOMEPAGE = "https://github.com/xdp-project/xdp-tools" -LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & BSD-2-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=9ee53f8d06bbdb4c11b1557ecc4f8cd5 \ - file://LICENSES/GPL-2.0;md5=994331978b428511800bfbd17eea3001 \ - file://LICENSES/LGPL-2.1;md5=b370887980db5dd40659b50909238dbd \ - file://LICENSES/BSD-2-Clause;md5=5d6306d1b08f8df623178dfd81880927" - -DEPENDS += " libbpf clang-native zlib elfutils libpcap" - -SRC_URI = "git://github.com/xdp-project/xdp-tools.git;branch=v1.2;protocol=https \ - file://0001-configure-skip-toolchain-checks.patch \ - file://0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch \ - file://0003-Makefile-fix-KeyError-failure.patch \ - file://0004-Makefile-fix-libxdp.pc-error.patch \ - " - -SRCREV = "57a139f9bf6ef644f9c1deb4f7df4bb4c76d6179" - - -inherit pkgconfig - -EXTRA_OEMAKE += "PREFIX=${D}${prefix} LIBDIR=${D}${libdir} BUILD_STATIC_ONLY=1 PRODUCTION=1" - -CFLAGS += "-fPIC" - -export STAGING_INCDIR - -do_install () { - oe_runmake install - - # Remove object files *.o - rm -rf ${D}/${libdir}/bpf -} - -RDEPENDS:${PN} += "bash" diff --git a/meta-oe/recipes-support/xdp-tools/xdp-tools_1.6.3.bb b/meta-oe/recipes-support/xdp-tools/xdp-tools_1.6.3.bb new file mode 100644 index 0000000000..09cfc72950 --- /dev/null +++ b/meta-oe/recipes-support/xdp-tools/xdp-tools_1.6.3.bb @@ -0,0 +1,47 @@ +SUMMARY = "Utilities and library for managing XDP/eBPF programs" + +DESCRIPTION = "xdp-tools provides libxdp and command-line utilities for working \ +with XDP eBPF programs in Linux, including tools for loading programs, packet \ +processing, monitoring, traffic generation, and benchmarking." + +HOMEPAGE = "https://github.com/xdp-project/xdp-tools" +LICENSE = "GPL-2.0-only & GPL-2.0-or-later & LGPL-2.1-only & BSD-2-Clause" +LIC_FILES_CHKSUM = " \ + file://LICENSE;md5=9ee53f8d06bbdb4c11b1557ecc4f8cd5 \ + file://LICENSES/GPL-2.0;md5=994331978b428511800bfbd17eea3001 \ + file://LICENSES/LGPL-2.1;md5=b370887980db5dd40659b50909238dbd \ + file://LICENSES/BSD-2-Clause;md5=5d6306d1b08f8df623178dfd81880927 \ +" +SRC_URI = " \ + git://github.com/xdp-project/xdp-tools.git;tag=v${PV};nobranch=1;protocol=https \ + file://0001-configure-correctly-handle-CC-when-validating-requir.patch \ + file://0002-lib-libxdp-Makefile-use-cp-fRd-to-preserve-symlinks-.patch \ +" +SRCREV = "8fbad9f0af621a22aa87ff2520b3735915b1f0fd" + +DEPENDS += " \ + libbpf \ + clang-native \ + zlib \ + elfutils \ + libpcap \ +" + +inherit pkgconfig + +EXTRA_OEMAKE += " \ + PREFIX=${prefix} \ + LIBDIR=${libdir} \ + PRODUCTION=1 \ + BPF_CFLAGS='-D__${TARGET_ARCH}__ -I${S}/headers -I${STAGING_INCDIR} -ffile-prefix-map=${S}=${TARGET_DBGSRC_DIR} -ffile-prefix-map=${STAGING_DIR_HOST}=' \ +" + +do_install () { + oe_runmake DESTDIR=${D} install +} + +# libxdp.so loads BPF objects at runtime from ${libdir}/bpf, not embedded in the .so. +FILES:${PN} += "${libdir}/bpf ${libdir}/bpf/*" + +# Test scripts under ${datadir}/xdp-tools require bash. +RDEPENDS:${PN} += "bash"