diff options
20 files changed, 624 insertions, 360 deletions
diff --git a/conf/layer.conf b/conf/layer.conf index f395aff1..016f9aef 100644 --- a/conf/layer.conf +++ b/conf/layer.conf @@ -14,4 +14,9 @@ LAYERDEPENDS_dpdk = "core" # This should only be incremented on significant changes that will # cause compatibility issues with other layers LAYERVERSION_dpdk = "1" -LAYERSERIES_COMPAT_dpdk = "zeus dunfell" +LAYERSERIES_COMPAT_dpdk = "kirkstone nanbield scarthgap" + +BBFILES_DYNAMIC += " \ + clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/*/*/*.bb \ + clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/*/*/*.bbappend \ +" diff --git a/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0001-configure-skip-toolchain-checks.patch b/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0001-configure-skip-toolchain-checks.patch new file mode 100644 index 00000000..0c891528 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0001-configure-skip-toolchain-checks.patch @@ -0,0 +1,44 @@ +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 diff --git a/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch b/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch new file mode 100644 index 00000000..2e667836 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch @@ -0,0 +1,44 @@ +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 + diff --git a/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0003-Makefile-fix-KeyError-failure.patch b/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0003-Makefile-fix-KeyError-failure.patch new file mode 100644 index 00000000..41c57f6e --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0003-Makefile-fix-KeyError-failure.patch @@ -0,0 +1,31 @@ +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 + diff --git a/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0004-Makefile-fix-libxdp.pc-error.patch b/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0004-Makefile-fix-libxdp.pc-error.patch new file mode 100644 index 00000000..b1e15e52 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0004-Makefile-fix-libxdp.pc-error.patch @@ -0,0 +1,34 @@ +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 + diff --git a/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools_1.2.10.bb b/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools_1.2.10.bb new file mode 100644 index 00000000..bd3182d1 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools_1.2.10.bb @@ -0,0 +1,37 @@ +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" + +S = "${WORKDIR}/git" + +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/recipes-extended/dpdk/dpdk-kmods_git.bb b/recipes-extended/dpdk/dpdk-kmods_git.bb new file mode 100644 index 00000000..b7c540ff --- /dev/null +++ b/recipes-extended/dpdk/dpdk-kmods_git.bb @@ -0,0 +1,29 @@ +SUMMARY = "DPDK Kernel Module igb_uio" +DESCRIPTION = "UIO driver for Intel IGB PCI cards" +HOMEPAGE = "http://git.dpdk.org/dpdk-kmods/" + +FILESEXTRAPATHS:prepend := "${THISDIR}/dpdk:" + +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://igb_uio.c;beginline=1;endline=4;md5=a05cd72f85021e22ff6b2632b437450b" + +SRC_URI = "git://dpdk.org/git/dpdk-kmods;protocol=https;branch=main \ + file://0001-support-5.18-kernel-ABI.patch;patchdir=../.. \ + " +SRCREV = "e721c733cd24206399bebb8f0751b0387c4c1595" + +S = "${WORKDIR}/git/linux/igb_uio" + +PV = "1.0" + +inherit module + +EXTRA_OEMAKE += "KSRC='${STAGING_KERNEL_DIR}'" + +do_install() { + if [ -e "${S}/igb_uio.ko" ] + then + install -d ${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net/ + install -m 0644 ${S}/igb_uio.ko ${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net/ + fi +} diff --git a/recipes-extended/dpdk/dpdk-module_21.11.5.bb b/recipes-extended/dpdk/dpdk-module_21.11.5.bb new file mode 100644 index 00000000..7f733c89 --- /dev/null +++ b/recipes-extended/dpdk/dpdk-module_21.11.5.bb @@ -0,0 +1,58 @@ +include dpdk.inc + +FILESEXTRAPATHS:prepend := "${THISDIR}/dpdk:" + +SRC_URI += " \ + file://0001-Makefile-add-makefile.patch \ +" +STABLE = "-stable" +BRANCH = "21.11" +SRCREV = "4e50ad4469f7c037e32de5aa3535d1cd25de0741" +S = "${WORKDIR}/git" + +inherit module + +#kernel module needs 'rte_build_config.h', which is generated at buid time +DEPENDS += "dpdk" + +COMPATIBLE_MACHINE = "null" +COMPATIBLE_HOST:libc-musl:class-target = "null" +COMPATIBLE_HOST:linux-gnux32 = "null" + +export S +export STAGING_KERNEL_DIR +export STAGING_INCDIR +export INSTALL_MOD_DIR="dpdk" + +do_configure[noexec] = "1" + +do_compile() { + cd ${S}/kernel/linux/kni + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ + KERNEL_VERSION=${KERNEL_VERSION} \ + CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + AR="${KERNEL_AR}" \ + O=${STAGING_KERNEL_BUILDDIR} \ + KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" \ + ${MAKE_TARGETS} +} + +do_install() { + cd ${S}/kernel/linux/kni + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + oe_runmake DEPMOD=echo MODLIB="${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}" \ + INSTALL_FW_PATH="${D}${nonarch_base_libdir}/firmware" \ + CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + O=${STAGING_KERNEL_BUILDDIR} \ + ${MODULES_INSTALL_TARGET} +} + +# CVE-2021-3839 has been fixed by commit 4c40d30d2b in 21.11.1 +# NVD database is incomplete +# CVE-2022-0669 has been fixed by commit 6cb68162e4 in 21.11.1 +# NVD database is incomplete +CVE_CHECK_IGNORE += "\ + CVE-2021-3839 \ + CVE-2022-0669 \ +" diff --git a/recipes-extended/dpdk/dpdk.inc b/recipes-extended/dpdk/dpdk.inc index 64f85719..41618e09 100644 --- a/recipes-extended/dpdk/dpdk.inc +++ b/recipes-extended/dpdk/dpdk.inc @@ -1,193 +1,12 @@ DESCRIPTION = "Intel(r) Data Plane Development Kit" HOMEPAGE = "http://dpdk.org" -STABLE = "" -BRANCH = "main" -S = "${WORKDIR}/git" +LICENSE = "BSD-3-Clause & LGPL-2.1-only & GPL-2.0-only" +LIC_FILES_CHKSUM = "file://license/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://license/lgpl-2.1.txt;md5=4b54a1fd55a448865a0b32d41598759d \ + file://license/bsd-3-clause.txt;md5=0f00d99239d922ffd13cabef83b33444" -SRC_URI = "git://dpdk.org/dpdk${STABLE};branch=${BRANCH} \ - file://dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch \ - file://dpdk-16.07-add-sysroot-option-within-app-makefile.patch \ - " - -COMPATIBLE_MACHINE = "null" -COMPATIBLE_HOST_libc-musl_class-target = "null" -COMPATIBLE_HOST_linux-gnux32 = "null" - -# dpdk example apps dpdk_qat and vhost have dependancy on fuse and qat. -# fuse is in meta-filesystems and qat is not yet upstreamed. -# So adding mechanism to explicitly disable the use of fuse and qat. -# To enable, uncomment the below line or include in .bbappend. -# PACKAGECONFIG ?= " dpdk_qat vhost libvirt" - -PACKAGECONFIG[dpdk_qat] = ",,virtual/qat" -PACKAGECONFIG[vhost] = ",,fuse" -PACKAGECONFIG[libvirt] = ",,libvirt" -PACKAGECONFIG[numa] = ",,numactl" - -export CONFIG_EXAMPLE_DPDK_QAT = "${@bb.utils.contains('PACKAGECONFIG', 'dpdk_qat', 'y', 'n', d)}" -export CONFIG_EXAMPLE_VM_POWER_MANAGER = "${@bb.utils.contains('PACKAGECONFIG', 'libvirt', 'y', 'n', d)}" -export CONFIG_VHOST_ENABLED = "${@bb.utils.contains('PACKAGECONFIG', 'vhost', 'y', 'n', d)}" -export CONFIG_HAVE_NUMA = "${@bb.utils.contains('PACKAGECONFIG', 'numa', 'y', 'n', d)}" - -# Don't use the default value of datadir and let the dpdk set it to a dpdk -# specific directory -datadir[unexport] = "1" - -RDEPENDS_${PN} += "pciutils python3-core" -DEPENDS = "virtual/kernel" -do_configure[depends] += "virtual/kernel:do_shared_workdir" - -inherit module - -export MODULE_DIR="${nonarch_base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net" -export RTE_SDK = "${S}" - -export ICP_ROOT = "${PKG_CONFIG_SYSROOT_DIR}/usr/include" -export ICP_LIB_ROOT= "${PKG_CONFIG_SYSROOT_DIR}/usr/lib" -export RTE_KERNELDIR = "${STAGING_KERNEL_DIR}" -export RTE_KERNELDIR_OUT = "${STAGING_KERNEL_BUILDDIR}" -export INSTALL_PATH = "${prefix}/share/dpdk" -export RTE_OUTPUT = "${S}/${RTE_TARGET}" -export ETHTOOL_LIB_PATH = "${S}/examples/ethtool/lib/${RTE_TARGET}/" -export SYSROOTPATH = "--sysroot=${STAGING_DIR_HOST}" -export DPDK_TARGET_MACH = "${@get_dpdk_target_mach(bb,d)}" -export ICP_LAC_API_DIR = "${STAGING_DIR_TARGET}${includedir}/lac" - -export EXAMPLES_BUILD_DIR = "${RTE_TARGET}" -export ARCHDIR = "generic" - -DPDK_RTE_TARGET_x86-64 = "x86_64-native-linuxapp-gcc" -DPDK_RTE_TARGET_x86 = "i686-native-linuxapp-gcc" -DPDK_RTE_TARGET_aarch64 = "arm64-${DPDK_TARGET_MACH}-linuxapp-gcc" -export RTE_TARGET = "${DPDK_RTE_TARGET}" - -# Workaround failure on gcc10 -TOOLCHAIN_OPTIONS += "-Wno-error=maybe-uninitialized" - -CONFIG_NAME = "common_linux" -TEST_DIR = "test" - -# The list of intel Comms platforms and their target machine -# process mapping. The supported target machine is listed under -# dpdk/mk/machine -def get_dpdk_target_mach(bb, d): - target_arch = d.getVar('DPDK_TARGET_MACHINE', True) - if target_arch: - return target_arch - return "default" - -do_configure () { - ############################################################# - ### default value for prefix is "usr", unsetting it, so it - ### will not be concatenated in ${RTE_TARGET}/Makefile - ### which will cause compilation failure - ############################################################# - unset prefix - - # Fix-up CONFIG_RTE_MACHINE based on target machine - sed -e "s#CONFIG_RTE_MACHINE=\"native\"#CONFIG_RTE_MACHINE=\"${DPDK_TARGET_MACH}\"#" -i ${S}/config/defconfig_${RTE_TARGET} - - # Fix-up vhost configs based on package config - sed -e "s#CONFIG_RTE_KNI_VHOST=n#CONFIG_RTE_KNI_VHOST=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/${CONFIG_NAME} - sed -e "s#CONFIG_RTE_KNI_VHOST_VNET_HDR_EN=n#CONFIG_RTE_KNI_VHOST_VNET_HDR_EN=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/${CONFIG_NAME} - sed -e "s#CONFIG_RTE_LIBRTE_VHOST=n#CONFIG_RTE_LIBRTE_VHOST=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/${CONFIG_NAME} - sed -e "s#CONFIG_RTE_LIBRTE_VHOST_NUMA=.*#CONFIG_RTE_LIBRTE_VHOST_NUMA=${CONFIG_HAVE_NUMA}#" -i ${S}/config/${CONFIG_NAME} - sed -e "s#CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=.*#CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=${CONFIG_HAVE_NUMA}#" -i ${S}/config/${CONFIG_NAME} - - # Fix-up CONFIG_RTE_LIBRTE_POWER based on package config for libvirt - sed -e "s#CONFIG_RTE_LIBRTE_POWER=y#CONFIG_RTE_LIBRTE_POWER=${CONFIG_EXAMPLE_VM_POWER_MANAGER}#" -i ${S}/config/${CONFIG_NAME} - - make O=$RTE_TARGET T=$RTE_TARGET config -} - -do_compile () { - unset LDFLAGS TARGET_LDFLAGS BUILD_LDFLAGS - - cd ${S}/${RTE_TARGET} - oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu" \ - EXTRA_CFLAGS="${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} -I${STAGING_INCDIR}" \ - CROSS="${TARGET_PREFIX}" \ - prefix="" LDFLAGS="${TUNE_LDARGS}" WERROR_FLAGS="-w" V=1 - - cd ${S}/examples/ - oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu -fuse-ld=bfd" \ - EXTRA_CFLAGS="${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} -O3 -I${STAGING_INCDIR}" \ - CROSS="${TARGET_PREFIX}" O="${S}/examples/$@/" - - cd ${S}/${TEST_DIR}/ - oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu -fuse-ld=bfd" \ - EXTRA_CFLAGS="${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} -O3 -I${STAGING_INCDIR}" \ - CROSS="${TARGET_PREFIX}" O="${S}/${TEST_DIR}/$@/" -} - -do_install () { - oe_runmake O=${RTE_OUTPUT} T= install-runtime DESTDIR=${D} - oe_runmake O=${RTE_OUTPUT} T= install-kmod DESTDIR=${D} kerneldir=${MODULE_DIR} - oe_runmake O=${RTE_OUTPUT} T= install-sdk DESTDIR=${D} - - # Install examples - for dirname in ${S}/examples/* - do - install -m 0755 -d ${D}/${INSTALL_PATH}/examples/`basename ${dirname}` - - for appname in `find ${dirname} -regex ".*${EXAMPLES_BUILD_DIR}\/app\/[-0-9a-zA-Z0-9/_]*$"` - do - install -m 755 ${appname} ${D}/${INSTALL_PATH}/examples/`basename ${dirname}`/ - done - done - - # Install test - for dirname in ${S}/${TEST_DIR}/app/* - do - install -m 0755 -d ${D}/${INSTALL_PATH}/test - - for appname in `find ${dirname} -regex ".*test\/app\/[-0-9a-zA-Z0-9/_]*$"` - do - install -m 755 ${appname} ${D}/${INSTALL_PATH}/test - done - done - - cp -r ${S}/mk ${D}${INSTALL_PATH}/ - - for ss in $(find ${D} -type f -name "*.py"); do - sed -i -e "1s,#!.*python.*,#!${USRBINPATH}/env python3," ${ss} - done -} - -PACKAGES += "${PN}-examples ${PN}-test" - -FILES_${PN}-dbg += " \ - ${INSTALL_PATH}/.debug \ - ${INSTALL_PATH}/examples/*/.debug \ - " - -FILES_${PN}-doc += "\ - ${INSTALL_PATH}/doc \ - " - -FILES_${PN}-dev += " \ - ${INSTALL_PATH}/${RTE_TARGET}/.config \ - ${includedir} \ - ${includedir}/${ARCHDIR} \ - ${includedir}/exec-env \ - ${INSTALL_PATH}/buildtools/ \ - ${INSTALL_PATH}/${RTE_TARGET}/include \ - ${INSTALL_PATH}/${RTE_TARGET}/lib \ - ${INSTALL_PATH}/mk \ - " - -FILES_${PN} += " ${INSTALL_PATH}/usertools/ \ - ${prefix}/sbin/ \ - ${prefix}/bin/ \ - ${libdir}/ \ - " -FILES_${PN}-examples += " \ - ${INSTALL_PATH}/examples/* \ - " - -FILES_${PN}-test += " \ - ${INSTALL_PATH}/test \ - " +SRC_URI = "git://dpdk.org/git/dpdk${STABLE};protocol=https;branch=${BRANCH} \ +" CVE_PRODUCT = "data_plane_development_kit" diff --git a/recipes-extended/dpdk/dpdk/0001-Makefile-add-makefile.patch b/recipes-extended/dpdk/dpdk/0001-Makefile-add-makefile.patch new file mode 100644 index 00000000..0fc849b7 --- /dev/null +++ b/recipes-extended/dpdk/dpdk/0001-Makefile-add-makefile.patch @@ -0,0 +1,75 @@ +From 768cef60957d5e840071d1d6514d4add3f3c2904 Mon Sep 17 00:00:00 2001 +From: Naveen Saini <naveen.kumar.saini@intel.com> +Date: Wed, 14 Apr 2021 17:25:53 +0800 +Subject: [PATCH] Makefile: add makefile + +Current meson build for kernel module build does not fit in Yocto. +So added Makefile to build rte_kni.ko + +Upstream-Status: Inappropriate + +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> +--- + kernel/linux/kni/Kbuild | 6 ------ + kernel/linux/kni/Makefile | 35 +++++++++++++++++++++++++++++++++++ + 2 files changed, 35 insertions(+), 6 deletions(-) + delete mode 100644 kernel/linux/kni/Kbuild + create mode 100644 kernel/linux/kni/Makefile + +diff --git a/kernel/linux/kni/Kbuild b/kernel/linux/kni/Kbuild +deleted file mode 100644 +index e5452d6c00..0000000000 +--- a/kernel/linux/kni/Kbuild ++++ /dev/null +@@ -1,6 +0,0 @@ +-# SPDX-License-Identifier: BSD-3-Clause +-# Copyright(c) 2018 Luca Boccassi <bluca@debian.org> +- +-ccflags-y := $(MODULE_CFLAGS) +-obj-m := rte_kni.o +-rte_kni-y := $(patsubst $(src)/%.c,%.o,$(wildcard $(src)/*.c)) +diff --git a/kernel/linux/kni/Makefile b/kernel/linux/kni/Makefile +new file mode 100644 +index 0000000000..19897ee06e +--- /dev/null ++++ b/kernel/linux/kni/Makefile +@@ -0,0 +1,35 @@ ++# ++# Makefile for building rte_kni.ko ++# ++MODULE_CFLAGS += -include $(S)/config/rte_config.h ++MODULE_CFLAGS += -I$(S)/lib/librte_eal/include ++MODULE_CFLAGS += -I$(S)/lib/librte_kni ++MODULE_CFLAGS += -I$(S)/kernel/linux/kni ++MODULE_CFLAGS += -I$(S)/lib/kni ++MODULE_CFLAGS += -I$(S) ++MODULE_CFLAGS += -I$(STAGING_INCDIR) ++ ++rte_kni-objs = kni_misc.o kni_net.o ++ ++ccflags-y := $(MODULE_CFLAGS) ++cflags-y := $(MODULE_CFLAGS) ++obj-m := rte_kni.o ++ ++ ++KERNEL_MAKE_OPTS := -C $(STAGING_KERNEL_DIR) M=$(CURDIR) ++ifneq ($(ARCH),) ++KERNEL_MAKE_OPTS += ARCH=$(ARCH) ++endif ++ifneq ($(CROSS_COMPILE),) ++KERNEL_MAKE_OPTS += CROSS_COMPILE=$(CROSS_COMPILE) ++endif ++ ++build: ++ $(MAKE) $(KERNEL_MAKE_OPTS) modules ++ ++install: modules_install ++ ++modules_install: ++ $(MAKE) $(KERNEL_MAKE_OPTS) modules_install ++ ++clean: ++ $(MAKE) $(KERNEL_MAKE_OPTS) clean +-- +2.17.1 + diff --git a/recipes-extended/dpdk/dpdk/0001-Starting-from-Linux-5.9-get_user_pages_remote-API-do.patch b/recipes-extended/dpdk/dpdk/0001-Starting-from-Linux-5.9-get_user_pages_remote-API-do.patch deleted file mode 100644 index ad6fd939..00000000 --- a/recipes-extended/dpdk/dpdk/0001-Starting-from-Linux-5.9-get_user_pages_remote-API-do.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 7e0102a6d29732b92c25ca4793d641ce6c98e95a Mon Sep 17 00:00:00 2001 -From: He Zhe <zhe.he@windriver.com> -Date: Wed, 23 Sep 2020 11:00:03 +0800 -Subject: [PATCH] Starting from Linux 5.9 'get_user_pages_remote()' API doesn't - get 'struct task_struct' parameter: commit 64019a2e467a ("mm/gup: remove - task_struct pointer for all gup code") - -The change reflected to the KNI with version check. - -Cc: stable@dpdk.org - -Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> - -Upstream-Status: Backport [https://patches.dpdk.org/patch/75577/] - -Signed-off-by: He Zhe <zhe.he@windriver.com> ---- - kernel/linux/kni/compat.h | 4 ++++ - kernel/linux/kni/kni_dev.h | 5 +++++ - 2 files changed, 9 insertions(+) - -diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h -index 9ee45dbf6..d515b2766 100644 ---- a/kernel/linux/kni/compat.h -+++ b/kernel/linux/kni/compat.h -@@ -134,3 +134,7 @@ - #if KERNEL_VERSION(5, 6, 0) <= LINUX_VERSION_CODE - #define HAVE_TX_TIMEOUT_TXQUEUE - #endif -+ -+#if KERNEL_VERSION(5, 9, 0) > LINUX_VERSION_CODE -+#define HAVE_TSK_IN_GUP -+#endif -diff --git a/kernel/linux/kni/kni_dev.h b/kernel/linux/kni/kni_dev.h -index ca5f92a47..c15da311b 100644 ---- a/kernel/linux/kni/kni_dev.h -+++ b/kernel/linux/kni/kni_dev.h -@@ -101,8 +101,13 @@ static inline phys_addr_t iova_to_phys(struct task_struct *tsk, - offset = iova & (PAGE_SIZE - 1); - - /* Read one page struct info */ -+#ifdef HAVE_TSK_IN_GUP - ret = get_user_pages_remote(tsk, tsk->mm, iova, 1, - FOLL_TOUCH, &page, NULL, NULL); -+#else -+ ret = get_user_pages_remote(tsk->mm, iova, 1, -+ FOLL_TOUCH, &page, NULL, NULL); -+#endif - if (ret < 0) - return 0; - --- -2.17.1 - diff --git a/recipes-extended/dpdk/dpdk/0001-config-meson-get-cpu_instruction_set-from-meson-opti.patch b/recipes-extended/dpdk/dpdk/0001-config-meson-get-cpu_instruction_set-from-meson-opti.patch new file mode 100644 index 00000000..92e3523c --- /dev/null +++ b/recipes-extended/dpdk/dpdk/0001-config-meson-get-cpu_instruction_set-from-meson-opti.patch @@ -0,0 +1,32 @@ +From 121e5d019f0bb6dec0ace2b361611edd10fc8ff8 Mon Sep 17 00:00:00 2001 +From: Lee Chee Yang <chee.yang.lee@intel.com> +Date: Wed, 6 Dec 2023 16:58:10 +0800 +Subject: [PATCH] config/meson: get cpu_instruction_set from meson option + +Workaround error: +| ../git/config/meson.build:178:8: ERROR: Problem encountered: Compiler +does not support "x86_64" arch flag. + +Upstream-Status: Inappropriate [ yocto specific to set cpu_instruction_set ] + +Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com> +--- + config/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/config/meson.build b/config/meson.build +index a9ccd56deb..f310c7adf6 100644 +--- a/config/meson.build ++++ b/config/meson.build +@@ -105,7 +105,7 @@ platform = get_option('platform') + + # set the cpu_instruction_set and cflags for it + if meson.is_cross_build() +- cpu_instruction_set = host_machine.cpu() ++ cpu_instruction_set = get_option('cpu_instruction_set') + else + cpu_instruction_set = get_option('cpu_instruction_set') + machine = get_option('machine') +-- +2.37.3 + diff --git a/recipes-extended/dpdk/dpdk/0001-meson.build-march-and-mcpu-already-passed-by-Yocto-21.11.patch b/recipes-extended/dpdk/dpdk/0001-meson.build-march-and-mcpu-already-passed-by-Yocto-21.11.patch new file mode 100644 index 00000000..a74869de --- /dev/null +++ b/recipes-extended/dpdk/dpdk/0001-meson.build-march-and-mcpu-already-passed-by-Yocto-21.11.patch @@ -0,0 +1,38 @@ +From 9aeb0bedf63f0f8f132194705b63ed0045452354 Mon Sep 17 00:00:00 2001 +From: Naveen Saini <naveen.kumar.saini@intel.com> +Date: Wed, 8 Dec 2021 11:48:27 +0800 +Subject: [PATCH] meson.build:-march and -mcpu already passed by Yocto + +Upstream-Status: Inappropriate + +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> +--- + config/meson.build | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/config/meson.build b/config/meson.build +index 805d5d51d0..620331a736 100644 +--- a/config/meson.build ++++ b/config/meson.build +@@ -127,12 +127,12 @@ dpdk_conf.set('RTE_MACHINE', cpu_instruction_set) + machine_args = [] + + # ppc64 does not support -march= at all, use -mcpu and -mtune for that +-if host_machine.cpu_family().startswith('ppc') +- machine_args += '-mcpu=' + cpu_instruction_set +- machine_args += '-mtune=' + cpu_instruction_set +-else +- machine_args += '-march=' + cpu_instruction_set +-endif ++#if host_machine.cpu_family().startswith('ppc') ++# machine_args += '-mcpu=' + cpu_instruction_set ++# machine_args += '-mtune=' + cpu_instruction_set ++#else ++# machine_args += '-march=' + cpu_instruction_set ++#endif + + toolchain = cc.get_id() + dpdk_conf.set_quoted('RTE_TOOLCHAIN', toolchain) +-- +2.17.1 + diff --git a/recipes-extended/dpdk/dpdk/0001-support-5.18-kernel-ABI.patch b/recipes-extended/dpdk/dpdk/0001-support-5.18-kernel-ABI.patch new file mode 100644 index 00000000..bada7bdd --- /dev/null +++ b/recipes-extended/dpdk/dpdk/0001-support-5.18-kernel-ABI.patch @@ -0,0 +1,42 @@ +From 5f2d8db6692e257b16f1c5204efaaac2362f34ab Mon Sep 17 00:00:00 2001 +From: Andrea Righi <andrea.righi@canonical.com> +Date: Tue, 15 Nov 2022 13:56:45 +0800 +Subject: [PATCH] support 5.18+ kernel ABI + +Upstream-Status: Pending [Taken from Ubuntu Source, https://git.launchpad.net/ubuntu/+source/dpdk-kmods/commit/debian/patches?id=9d628c02c169d8190bc2cb6afd81e4d364c382cd] + +Signed-off-by: Andrea Righi <andrea.righi@canonical.com> +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> +--- + linux/igb_uio/igb_uio.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/linux/igb_uio/igb_uio.c b/linux/igb_uio/igb_uio.c +index 33e0e02..89b5262 100644 +--- a/linux/igb_uio/igb_uio.c ++++ b/linux/igb_uio/igb_uio.c +@@ -30,9 +30,20 @@ enum rte_intr_mode { + #define RTE_INTR_MODE_MSI_NAME "msi" + #define RTE_INTR_MODE_MSIX_NAME "msix" + +- + #include "compat.h" + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) ++static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) ++{ ++ return dma_set_mask(&dev->dev, mask); ++} ++ ++static inline int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) ++{ ++ return dma_set_coherent_mask(&dev->dev, mask); ++} ++#endif ++ + /** + * A structure describing the private information for a uio device. + */ +-- +2.25.1 + diff --git a/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch b/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch deleted file mode 100644 index 603bd32c..00000000 --- a/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 0808b30cd00f307f182007d21a8be3a0866ccf83 Mon Sep 17 00:00:00 2001 -From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com> -Date: Fri, 18 Dec 2015 18:30:47 +0800 -Subject: [PATCH] dpdk v2.2.0: add RTE_KERNELDIR_OUT to split kernel build - artifact - -Introduce RTE_KERNELDIR_OUT to be the path to which kernel build -artifacts are located. This is for matching the workflow change -since Yocto Project v1.8 onwards whereby tmp/work-shared contains -separate directories for kernel source and kernel artifacts. - -Upstream-Status: Inappropriate [configuration] - -Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com> - ---- - mk/rte.module.mk | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/mk/rte.module.mk b/mk/rte.module.mk -index 1ada528a00b1..da0538cd5321 100644 ---- a/mk/rte.module.mk -+++ b/mk/rte.module.mk -@@ -48,7 +48,7 @@ build: _postbuild - # build module - $(MODULE).ko: $(SRCS_LINKS) - @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi -- @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \ -+ @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \ - CC="$(KERNELCC)" CROSS_COMPILE=$(CROSS) V=$(if $V,1,0) - - # install module in $(RTE_OUTPUT)/kmod -@@ -59,7 +59,7 @@ $(RTE_OUTPUT)/kmod/$(MODULE).ko: $(MODULE).ko - - # install module - modules_install: -- @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \ -+ @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \ - modules_install - - .PHONY: clean -@@ -69,7 +69,7 @@ clean: _postclean - .PHONY: doclean - doclean: - @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi -- $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) clean -+ $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) clean - @$(foreach FILE,$(SRCS-y) $(SRCS-n) $(SRCS-),\ - if [ -h $(notdir $(FILE)) ]; then rm -f $(notdir $(FILE)) ; fi ;) - @if [ -h $(notdir Makefile) ]; then rm -f $(notdir Makefile) ; fi diff --git a/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch b/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch deleted file mode 100644 index 18b761c7..00000000 --- a/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch +++ /dev/null @@ -1,30 +0,0 @@ -From d08d11c8b6fdfe73884d67a94d907000afd136ed Mon Sep 17 00:00:00 2001 -From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com> -Date: Fri, 19 Aug 2016 11:57:49 +0800 -Subject: [PATCH] dpdk: add --sysroot option within app makefile - -Upstream-Status: Inappropriate [configuration] - -rte.app.mk has been changed to add -Wl, to all items listed -under EXTRA_LDFLAGS. It causes --sysroot=<path> to not setup -correctly when we depends on gcc to setup for GNU ld. - -Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com> - ---- - mk/rte.app.mk | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/mk/rte.app.mk b/mk/rte.app.mk -index 3eb41d176d21..9ab6688718db 100644 ---- a/mk/rte.app.mk -+++ b/mk/rte.app.mk -@@ -300,7 +300,7 @@ exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1)))) - ifeq ($(LINK_USING_CC),1) - O_TO_EXE = $(CC) -o $@ $(CFLAGS) $(EXTRA_CFLAGS) $(OBJS-y) $(call linkerprefix, \ - $(LDLIBS) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \ -- $(MAPFLAGS)) -+ $(MAPFLAGS)) $(SYSROOTPATH) - else - O_TO_EXE = $(LD) -o $@ $(OBJS-y) \ - $(LDLIBS) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \ diff --git a/recipes-extended/dpdk/dpdk_18.11.10.bb b/recipes-extended/dpdk/dpdk_18.11.10.bb deleted file mode 100644 index 708c59ec..00000000 --- a/recipes-extended/dpdk/dpdk_18.11.10.bb +++ /dev/null @@ -1,18 +0,0 @@ -include dpdk.inc - -CONFIG_NAME = "common_linuxapp" -TEST_DIR = "test" - -STABLE = "-stable" -BRANCH = "18.11" -SRCREV = "6da233189fd222ea795fbf6e0f39eeade984203f" - -LICENSE = "BSD-3-Clause & LGPLv2.1 & GPLv2" -LIC_FILES_CHKSUM = "file://license/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://license/lgpl-2.1.txt;md5=4b54a1fd55a448865a0b32d41598759d \ - file://license/bsd-3-clause.txt;md5=0f00d99239d922ffd13cabef83b33444" - -do_install_append () { - # Remove the unneeded dir - rm -rf ${D}/${INSTALL_PATH}/${RTE_TARGET}/app -} diff --git a/recipes-extended/dpdk/dpdk_19.11.5.bb b/recipes-extended/dpdk/dpdk_19.11.5.bb deleted file mode 100644 index aedaa8a9..00000000 --- a/recipes-extended/dpdk/dpdk_19.11.5.bb +++ /dev/null @@ -1,20 +0,0 @@ -include dpdk.inc - -CONFIG_NAME = "common_linux" -TEST_DIR = "app/test" - -STABLE = "-stable" -BRANCH = "19.11" -SRCREV = "1d28832feb881d4512993791d30d695cc9c7160b" - -LICENSE = "BSD-3-Clause & LGPLv2.1 & GPLv2" -LIC_FILES_CHKSUM = "file://license/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://license/lgpl-2.1.txt;md5=4b54a1fd55a448865a0b32d41598759d \ - file://license/bsd-3-clause.txt;md5=0f00d99239d922ffd13cabef83b33444" - -SRC_URI += "file://0001-Starting-from-Linux-5.9-get_user_pages_remote-API-do.patch" - -do_install_append () { - # Remove the unneeded dir - rm -rf ${D}/${INSTALL_PATH}/${RTE_TARGET}/app -} diff --git a/recipes-extended/dpdk/dpdk_21.11.5.bb b/recipes-extended/dpdk/dpdk_21.11.5.bb new file mode 100644 index 00000000..0d460123 --- /dev/null +++ b/recipes-extended/dpdk/dpdk_21.11.5.bb @@ -0,0 +1,77 @@ +include dpdk.inc + +SRC_URI += " \ + file://0001-meson.build-march-and-mcpu-already-passed-by-Yocto-21.11.patch \ +" + +STABLE = "-stable" +BRANCH = "21.11" +SRCREV = "4e50ad4469f7c037e32de5aa3535d1cd25de0741" +S = "${WORKDIR}/git" + +# CVE-2021-3839 has been fixed by commit 4c40d30d2b in 21.11.1 +# NVD database is incomplete +# CVE-2022-0669 has been fixed by commit 6cb68162e4 in 21.11.1 +# NVD database is incomplete +CVE_CHECK_IGNORE += "\ + CVE-2021-3839 \ + CVE-2022-0669 \ +" + +# kernel module is provide by dpdk-module recipe, so disable here +EXTRA_OEMESON = " -Denable_kmods=false \ + -Dexamples=all \ +" + +COMPATIBLE_MACHINE = "null" +COMPATIBLE_HOST:libc-musl:class-target = "null" +COMPATIBLE_HOST:linux-gnux32 = "null" + +PACKAGECONFIG ??= " " +PACKAGECONFIG[afxdp] = ",,libbpf xdp-tools" +PACKAGECONFIG[libvirt] = ",,libvirt" + +RDEPENDS:${PN} += "pciutils python3-core" +RDEPENDS:${PN}-examples += "bash" +DEPENDS = "numactl python3-pyelftools-native" + +inherit meson pkgconfig + +INSTALL_PATH = "${prefix}/share/dpdk" + +do_install:append(){ + # remove source files + rm -rf ${D}/${INSTALL_PATH}/examples/* + + # Install examples + install -m 0755 -d ${D}/${INSTALL_PATH}/examples/ + for dirname in ${B}/examples/dpdk-* + do + if [ ! -d ${dirname} ] && [ -x ${dirname} ]; then + install -m 0755 ${dirname} ${D}/${INSTALL_PATH}/examples/ + fi + done + +} + +PACKAGES =+ "${PN}-examples ${PN}-tools" + +FILES:${PN} += " ${bindir}/dpdk-testpmd \ + ${bindir}/dpdk-proc-info \ + ${libdir}/*.so* \ + ${libdir}/dpdk/pmds-22.0/*.so* \ + " +FILES:${PN}-examples = " \ + ${prefix}/share/dpdk/examples/* \ + " + +FILES:${PN}-tools = " \ + ${bindir}/dpdk-pdump \ + ${bindir}/dpdk-test \ + ${bindir}/dpdk-test-* \ + ${bindir}/dpdk-*.py \ + " + +CVE_PRODUCT = "data_plane_development_kit" + +INSANE_SKIP:${PN} = "dev-so" diff --git a/recipes-extended/dpdk/dpdk_23.11.bb b/recipes-extended/dpdk/dpdk_23.11.bb new file mode 100644 index 00000000..fc2796a0 --- /dev/null +++ b/recipes-extended/dpdk/dpdk_23.11.bb @@ -0,0 +1,71 @@ +include dpdk.inc + +SRC_URI += " file://0001-config-meson-get-cpu_instruction_set-from-meson-opti.patch " + +STABLE = "-stable" +BRANCH = "23.11" +SRCREV = "eeb0605f118dae66e80faa44f7b3e88748032353" +S = "${WORKDIR}/git" + +def get_cpu_instruction_set(bb, d): + import re + march = re.search(r'-march=([^\s]*)', d.getVar('CC')) + if march: + return march.group(1) + else: + return "core2" + +EXTRA_OEMESON = " -Dexamples=all -Dcpu_instruction_set=${@get_cpu_instruction_set(bb, d)} " + +COMPATIBLE_MACHINE = "null" +COMPATIBLE_HOST:libc-musl:class-target = "null" +COMPATIBLE_HOST:linux-gnux32 = "null" + +PACKAGECONFIG ??= " " +PACKAGECONFIG[afxdp] = ",,libbpf xdp-tools" +PACKAGECONFIG[libvirt] = ",,libvirt" + +RDEPENDS:${PN} += "pciutils python3-core" +RDEPENDS:${PN}-examples += "bash" +DEPENDS = "numactl python3-pyelftools-native" + +inherit meson pkgconfig + +INSTALL_PATH = "${prefix}/share/dpdk" + +do_install:append(){ + # remove source files + rm -rf ${D}/${INSTALL_PATH}/examples/* + + # Install examples + install -m 0755 -d ${D}/${INSTALL_PATH}/examples/ + for dirname in ${B}/examples/dpdk-* + do + if [ ! -d ${dirname} ] && [ -x ${dirname} ]; then + install -m 0755 ${dirname} ${D}/${INSTALL_PATH}/examples/ + fi + done + +} + +PACKAGES =+ "${PN}-examples ${PN}-tools" + +FILES:${PN} += " ${bindir}/dpdk-testpmd \ + ${bindir}/dpdk-proc-info \ + ${libdir}/*.so* \ + ${libdir}/dpdk/pmds-22.0/*.so* \ + " +FILES:${PN}-examples = " \ + ${prefix}/share/dpdk/examples/* \ + " + +FILES:${PN}-tools = " \ + ${bindir}/dpdk-pdump \ + ${bindir}/dpdk-test \ + ${bindir}/dpdk-test-* \ + ${bindir}/dpdk-*.py \ + " + +CVE_PRODUCT = "data_plane_development_kit" + +INSANE_SKIP:${PN} = "dev-so" |