mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-09-30 21:17:46 +00:00
xdp-tools: upgrade 1.2.10 -> 1.6.3
Drop patches 0002 and 0004 as they are no longer needed with 1.6.3.
Rework patches 0001 and 0003 to properly handle CC tool validation
and libxdp symlink installation for cross-compilation.
Set PRODUCTION=1 and pass BPF_CFLAGS with sysroot include paths
and ffile-prefix-map for reproducible cross-compilation builds.
Include ${libdir}/bpf/* in FILES:${PN} as libxdp.so resolves BPF
objects at runtime from that path. Add bash to RDEPENDS for the
test scripts.
Signed-off-by: Rajkumar Patel <patel.rajkumar@oss.qualcomm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
parent
acc0003239
commit
d21805a31c
@ -0,0 +1,45 @@
|
|||||||
|
From 2a6d219ec2f5413e38ec502421cce8a2c6d7f054 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Rajkumar Patel <patel.rajkumar@oss.qualcomm.com>
|
||||||
|
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 <patel.rajkumar@oss.qualcomm.com>
|
||||||
|
---
|
||||||
|
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;
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
From 064ccdaf0d84bea86f9cd17383581c3844a33151 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Rajkumar Patel <patel.rajkumar@oss.qualcomm.com>
|
||||||
|
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 <patel.rajkumar@oss.qualcomm.com>
|
||||||
|
---
|
||||||
|
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)
|
||||||
@ -1,44 +0,0 @@
|
|||||||
From 9c9dce2e5f04de65b7b00321f96fff6071546ea1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Naveen Saini <naveen.kumar.saini@intel.com>
|
|
||||||
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 <naveen.kumar.saini@intel.com>
|
|
||||||
|
|
||||||
---
|
|
||||||
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
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
From 2840cf0b89497f545fae2eed7ece3f3c5fc558e3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Naveen Saini <naveen.kumar.saini@intel.com>
|
|
||||||
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 <naveen.kumar.saini@intel.com>
|
|
||||||
---
|
|
||||||
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
|
|
||||||
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
From 157546fbc4f18751c52b3c8788879c05cf253331 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Naveen Saini <naveen.kumar.saini@intel.com>
|
|
||||||
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 <naveen.kumar.saini@intel.com>
|
|
||||||
---
|
|
||||||
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
|
|
||||||
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
From 46b3ff797135574aa0ee42f633a281d44f48da95 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Naveen Saini <naveen.kumar.saini@intel.com>
|
|
||||||
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 <naveen.kumar.saini@intel.com>
|
|
||||||
---
|
|
||||||
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
|
|
||||||
|
|
||||||
@ -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"
|
|
||||||
47
meta-oe/recipes-support/xdp-tools/xdp-tools_1.6.3.bb
Normal file
47
meta-oe/recipes-support/xdp-tools/xdp-tools_1.6.3.bb
Normal file
@ -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"
|
||||||
Loading…
x
Reference in New Issue
Block a user