Sync from SUSE:SLFO:Main dpdk revision ba6e55c9910c13f8504feac9dc5da139
This commit is contained in:
commit
ad5d68acb5
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
## Default LFS
|
||||||
|
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zst filter=lfs diff=lfs merge=lfs -text
|
69
0001-fix-cpu-compatibility.patch
Normal file
69
0001-fix-cpu-compatibility.patch
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
From e2950fec9cd9c235a7847ed97b6914174857bf93 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "mvarlese@suse.de" <mvarlese@suse.de>
|
||||||
|
Date: Wed, 29 Apr 2020 12:24:16 +0200
|
||||||
|
Subject: [PATCH] fix cpu compatibility
|
||||||
|
|
||||||
|
Added 0001-fix-cpu-compatibility.patch to address issue with older CPUs (bsc#1125961, bsc#1099474)
|
||||||
|
|
||||||
|
Updated 2023-02-26 for version 22.11
|
||||||
|
|
||||||
|
diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c
|
||||||
|
index 41bc07dde7..750180cb84 100644
|
||||||
|
--- a/drivers/bus/vdev/vdev.c
|
||||||
|
+++ b/drivers/bus/vdev/vdev.c
|
||||||
|
@@ -51,7 +51,11 @@ static struct vdev_custom_scans vdev_custom_scans =
|
||||||
|
static rte_spinlock_t vdev_custom_scan_lock = RTE_SPINLOCK_INITIALIZER;
|
||||||
|
|
||||||
|
/* register a driver */
|
||||||
|
-void
|
||||||
|
+#if defined(__x86_64__) || defined(__i386__)
|
||||||
|
+void __attribute__((target ("sse2")))
|
||||||
|
+#else
|
||||||
|
+ void
|
||||||
|
+#endif
|
||||||
|
rte_vdev_register(struct rte_vdev_driver *driver)
|
||||||
|
{
|
||||||
|
TAILQ_INSERT_TAIL(&vdev_driver_list, driver, next);
|
||||||
|
diff --git a/lib/eal/common/eal_common_bus.c b/lib/eal/common/eal_common_bus.c
|
||||||
|
index deb9fb8a12..cb7bec607f 100644
|
||||||
|
--- a/lib/eal/common/eal_common_bus.c
|
||||||
|
+++ b/lib/eal/common/eal_common_bus.c
|
||||||
|
@@ -22,7 +22,11 @@ rte_bus_name(const struct rte_bus *bus)
|
||||||
|
return bus->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
-void
|
||||||
|
+#if defined(__x86_64__) || defined(__i386__)
|
||||||
|
+void __attribute__((target ("sse2")))
|
||||||
|
+#else
|
||||||
|
+ void
|
||||||
|
+#endif
|
||||||
|
rte_bus_register(struct rte_bus *bus)
|
||||||
|
{
|
||||||
|
RTE_VERIFY(bus);
|
||||||
|
diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h
|
||||||
|
index 15765b408d..4291706faa 100644
|
||||||
|
--- a/lib/eal/include/rte_common.h
|
||||||
|
+++ b/lib/eal/include/rte_common.h
|
||||||
|
@@ -179,8 +179,20 @@ typedef uint16_t unaligned_uint16_t;
|
||||||
|
* Lowest number is the first to run.
|
||||||
|
*/
|
||||||
|
#ifndef RTE_INIT_PRIO /* Allow to override from EAL */
|
||||||
|
+#if defined(__x86_64__) || defined(__i386__)
|
||||||
|
#define RTE_INIT_PRIO(func, prio) \
|
||||||
|
-static void __attribute__((constructor(RTE_PRIO(prio)), used)) func(void)
|
||||||
|
+static void \
|
||||||
|
+ __attribute__((constructor(RTE_PRIO(prio)), used)) \
|
||||||
|
+ __attribute__((target ("sse2"))) \
|
||||||
|
+ __attribute__((target ("no-sse3"))) \
|
||||||
|
+ __attribute__((target ("no-sse4"))) \
|
||||||
|
+ func(void)
|
||||||
|
+#else
|
||||||
|
+#define RTE_INIT_PRIO(func, prio) \
|
||||||
|
+static void \
|
||||||
|
+ __attribute__((constructor(RTE_PRIO(prio)), used)) \
|
||||||
|
+ func(void)
|
||||||
|
+#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
55
0001-kni-fix-build-with-Linux-6.3.patch
Normal file
55
0001-kni-fix-build-with-Linux-6.3.patch
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
From: Ferruh Yigit <ferruh.yigit@amd.com>
|
||||||
|
Date: Fri, 14 Apr 2023 16:25:22 +0100
|
||||||
|
Subject: kni: fix build with Linux 6.3
|
||||||
|
Patch-mainline: yes
|
||||||
|
Git-commit: 5f34cc454df420b9b2da8deb949fb76cba058b87
|
||||||
|
References: kernel 6.3
|
||||||
|
|
||||||
|
KNI calls `get_user_pages_remote()` API which is using `FOLL_TOUCH`
|
||||||
|
flag, but `FOLL_TOUCH` is no more in public headers since v6.3,
|
||||||
|
causing a build error.
|
||||||
|
|
||||||
|
`FOLL_*` defines in Linux kernel first moved to another header [1],
|
||||||
|
later some of them moved to memory subsystem internal header [2] for 6.3
|
||||||
|
|
||||||
|
`get_user_pages_remote()` already sets `FOLL_TOUCH` internally,
|
||||||
|
no need to set this flag externally anyway, moving flag from the call
|
||||||
|
altogether.
|
||||||
|
|
||||||
|
[1]
|
||||||
|
Commit b5054174ac7c ("mm: move FOLL_* defs to mm_types.h")
|
||||||
|
|
||||||
|
[2]
|
||||||
|
Commit 2c2241081f7d ("mm/gup: move private gup FOLL_ flags to internal.h")
|
||||||
|
|
||||||
|
Fixes: e73831dc6c26 ("kni: support userspace VA")
|
||||||
|
Cc: stable@dpdk.org
|
||||||
|
|
||||||
|
Signed-off-by: Ferruh Yigit <ferruh.yigit@amd.com>
|
||||||
|
Reviewed-by: David Marchand <david.marchand@redhat.com>
|
||||||
|
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
|
||||||
|
---
|
||||||
|
kernel/linux/kni/kni_dev.h | 6 ++----
|
||||||
|
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/kernel/linux/kni/kni_dev.h b/kernel/linux/kni/kni_dev.h
|
||||||
|
index a2c6d9fc..21bfb689 100644
|
||||||
|
--- a/kernel/linux/kni/kni_dev.h
|
||||||
|
+++ b/kernel/linux/kni/kni_dev.h
|
||||||
|
@@ -105,11 +105,9 @@ static inline phys_addr_t iova_to_phys(struct task_struct *tsk,
|
||||||
|
|
||||||
|
/* 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);
|
||||||
|
+ ret = get_user_pages_remote(tsk, tsk->mm, iova, 1, 0, &page, NULL, NULL);
|
||||||
|
#else
|
||||||
|
- ret = get_user_pages_remote(tsk->mm, iova, 1,
|
||||||
|
- FOLL_TOUCH, &page, NULL, NULL);
|
||||||
|
+ ret = get_user_pages_remote(tsk->mm, iova, 1, 0, &page, NULL, NULL);
|
||||||
|
#endif
|
||||||
|
if (ret < 0)
|
||||||
|
return 0;
|
||||||
|
--
|
||||||
|
2.35.3
|
||||||
|
|
36
0002-SLE15-SP3-compatibility-patch-for-kni.patch
Normal file
36
0002-SLE15-SP3-compatibility-patch-for-kni.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
From 430a4b50f2f7e5f21c7c2f81849588c575018501 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Jaime=20Caama=C3=B1o=20Ruiz?= <jcaamano@suse.com>
|
||||||
|
Date: Mon, 21 Sep 2020 14:50:13 +0200
|
||||||
|
Subject: [PATCH] SLE15 SP3 compatibility patch for kni
|
||||||
|
|
||||||
|
Add patch to resolve build error reported in Staging:E project
|
||||||
|
where a kernel backport (jsc#SLE-13536) introduced backward
|
||||||
|
incompatible changes to the API that break kni module build
|
||||||
|
* 0001-SLE15-SP3-compatibility-patch-for-kni.patch
|
||||||
|
|
||||||
|
Updated 2023-02-26 for version 22.11
|
||||||
|
|
||||||
|
diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h
|
||||||
|
index 3a86d12bbc..66d1afd944 100644
|
||||||
|
--- a/kernel/linux/kni/compat.h
|
||||||
|
+++ b/kernel/linux/kni/compat.h
|
||||||
|
@@ -14,7 +14,10 @@
|
||||||
|
#define SLE_VERSION(a, b, c) KERNEL_VERSION(a, b, c)
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_SUSE_KERNEL
|
||||||
|
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 57))
|
||||||
|
+#if (defined(CONFIG_SUSE_VERSION) && CONFIG_SUSE_VERSION == 15 && \
|
||||||
|
+ defined(CONFIG_SUSE_PATCHLEVEL) && CONFIG_SUSE_PATCHLEVEL == 3)
|
||||||
|
+#define SLE_VERSION_CODE SLE_VERSION(15, 3, 0)
|
||||||
|
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 57))
|
||||||
|
/* SLES12SP3 is at least 4.4.57+ based */
|
||||||
|
#define SLE_VERSION_CODE SLE_VERSION(12, 3, 0)
|
||||||
|
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 28))
|
||||||
|
@@ -132,6 +135,7 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if KERNEL_VERSION(5, 6, 0) <= LINUX_VERSION_CODE || \
|
||||||
|
+ (SLE_VERSION_CODE && SLE_VERSION_CODE == SLE_VERSION(15, 3, 0)) || \
|
||||||
|
(defined(RHEL_RELEASE_CODE) && \
|
||||||
|
RHEL_RELEASE_VERSION(8, 3) <= RHEL_RELEASE_CODE) || \
|
||||||
|
(defined(CONFIG_SUSE_KERNEL) && defined(HAVE_ARG_TX_QUEUE))
|
21
_constraints
Normal file
21
_constraints
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<constraints>
|
||||||
|
<overwrite>
|
||||||
|
<conditions>
|
||||||
|
<arch>i586</arch>
|
||||||
|
<arch>x86_64</arch>
|
||||||
|
</conditions>
|
||||||
|
<hardware>
|
||||||
|
<cpu>
|
||||||
|
<flag>mmx</flag>
|
||||||
|
<flag>sse</flag>
|
||||||
|
<flag>sse2</flag>
|
||||||
|
<flag>ssse3</flag>
|
||||||
|
<flag>sse4_2</flag>
|
||||||
|
</cpu>
|
||||||
|
<disk>
|
||||||
|
<size unit="G">8</size>
|
||||||
|
</disk>
|
||||||
|
</hardware>
|
||||||
|
</overwrite>
|
||||||
|
</constraints>
|
3
_multibuild
Normal file
3
_multibuild
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<multibuild>
|
||||||
|
<package>thunderx</package>
|
||||||
|
</multibuild>
|
BIN
dpdk-22.11.1.tar.xz
(Stored with Git LFS)
Normal file
BIN
dpdk-22.11.1.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
1757
dpdk.changes
Normal file
1757
dpdk.changes
Normal file
File diff suppressed because it is too large
Load Diff
318
dpdk.spec
Normal file
318
dpdk.spec
Normal file
@ -0,0 +1,318 @@
|
|||||||
|
#
|
||||||
|
# spec file
|
||||||
|
#
|
||||||
|
# Copyright (c) 2023 SUSE LLC
|
||||||
|
#
|
||||||
|
# All modifications and additions to the file contributed by third parties
|
||||||
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
|
# upon. The license for this file, and modifications and additions to the
|
||||||
|
# file, is the same license as for the pristine package itself (unless the
|
||||||
|
# license for the pristine package is not an Open Source License, in which
|
||||||
|
# case the license is the MIT License). An "Open Source License" is a
|
||||||
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||||
|
#
|
||||||
|
# needssslcertforbuild
|
||||||
|
|
||||||
|
|
||||||
|
%define flavor @BUILD_FLAVOR@%{nil}
|
||||||
|
%define aarch64_machine armv8a
|
||||||
|
%define exclusive_arch aarch64 x86_64 ppc64le
|
||||||
|
%define name_tag %{nil}
|
||||||
|
%define summary_tag %{nil}
|
||||||
|
%if "%{flavor}" == "thunderx"
|
||||||
|
%define name_tag -thunderx
|
||||||
|
%define summary_tag (thunderx)
|
||||||
|
%define aarch64_machine thunderx
|
||||||
|
%define exclusive_arch aarch64
|
||||||
|
%endif
|
||||||
|
# http://doc.dpdk.org/guides-22.11/linux_gsg/build_dpdk.html#adjusting-build-options
|
||||||
|
%define platform generic
|
||||||
|
%define machine auto
|
||||||
|
%ifarch aarch64
|
||||||
|
%define machine %{aarch64_machine2}
|
||||||
|
%endif
|
||||||
|
# This is in sync with <src>/ABI_VERSION
|
||||||
|
# TODO: automate this sync
|
||||||
|
%define maj 23
|
||||||
|
%define min 0
|
||||||
|
#%%define lname libdpdk-%%{maj}_%%{min}
|
||||||
|
%define lname libdpdk-%{maj}
|
||||||
|
# Add option to build without examples
|
||||||
|
%bcond_without examples
|
||||||
|
# Add option to build without tools
|
||||||
|
%bcond_without tools
|
||||||
|
#
|
||||||
|
Name: dpdk%{name_tag}
|
||||||
|
Version: 22.11.1
|
||||||
|
Release: 0
|
||||||
|
Summary: Set of libraries and drivers for fast packet processing
|
||||||
|
License: BSD-3-Clause AND GPL-2.0-only AND LGPL-2.1-only
|
||||||
|
Group: System/Libraries
|
||||||
|
URL: https://www.dpdk.org/
|
||||||
|
Source: https://fast.dpdk.org/rel/dpdk-%{version}.tar.xz
|
||||||
|
Source1: preamble
|
||||||
|
# PATCH-FIX-OPENSUSE PATCH-FEATURE-UPSTREAM
|
||||||
|
Patch0: 0001-fix-cpu-compatibility.patch
|
||||||
|
Patch1: 0002-SLE15-SP3-compatibility-patch-for-kni.patch
|
||||||
|
Patch2: 0001-kni-fix-build-with-Linux-6.3.patch
|
||||||
|
BuildRequires: binutils
|
||||||
|
BuildRequires: doxygen
|
||||||
|
BuildRequires: fdupes
|
||||||
|
BuildRequires: kernel-syms
|
||||||
|
BuildRequires: libfdt-devel
|
||||||
|
BuildRequires: meson >= 0.53.2
|
||||||
|
BuildRequires: modutils
|
||||||
|
BuildRequires: patchelf
|
||||||
|
BuildRequires: pesign-obs-integration
|
||||||
|
BuildRequires: pkgconfig
|
||||||
|
BuildRequires: python3
|
||||||
|
BuildRequires: python3-Sphinx
|
||||||
|
BuildRequires: python3-pyelftools >= 0.22
|
||||||
|
BuildRequires: rdma-core-devel
|
||||||
|
BuildRequires: pkgconfig(jansson)
|
||||||
|
BuildRequires: pkgconfig(libcrypto)
|
||||||
|
BuildRequires: pkgconfig(libelf)
|
||||||
|
BuildRequires: pkgconfig(libmnl)
|
||||||
|
BuildRequires: pkgconfig(libpcap)
|
||||||
|
BuildRequires: pkgconfig(numa)
|
||||||
|
BuildRequires: pkgconfig(zlib)
|
||||||
|
Conflicts: dpdk-any
|
||||||
|
Provides: dpdk-any = %{version}
|
||||||
|
Obsoletes: dpdk-kmp-trace < %{version}
|
||||||
|
ExclusiveArch: %{exclusive_arch}
|
||||||
|
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150400
|
||||||
|
# https://bugzilla.opensuse.org/show_bug.cgi?id=1196511
|
||||||
|
BuildRequires: pkgconfig(libbpf)
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%description
|
||||||
|
The Data Plane Development Kit is a set of libraries and drivers for
|
||||||
|
fast packet processing in the user space.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Data Plane Development Kit development files %{summary_tag}
|
||||||
|
Group: Development/Libraries/C and C++
|
||||||
|
Requires: %{lname} = %{version}
|
||||||
|
Conflicts: dpdk-any-devel
|
||||||
|
Provides: dpdk-any-devel = %{version}
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
This package contains the headers and other files needed for developing
|
||||||
|
applications with the Data Plane Development Kit.
|
||||||
|
|
||||||
|
%package devel-static
|
||||||
|
Summary: Data Plane Development Kit static development files %{summary_tag}
|
||||||
|
Group: Development/Libraries/C and C++
|
||||||
|
Requires: %{name}-devel = %{version}
|
||||||
|
|
||||||
|
%description devel-static
|
||||||
|
This package contains the static library files needed for developing
|
||||||
|
applications with the Data Plane Development Kit.
|
||||||
|
|
||||||
|
%package -n %{lname}
|
||||||
|
Summary: Data Plane Development Kit runtime libraries %{summary_tag}
|
||||||
|
Group: Development/Libraries/C and C++
|
||||||
|
Provides: %{lname}-any = %{version}
|
||||||
|
|
||||||
|
%description -n %{lname}
|
||||||
|
This package contains the runtime libraries needed for 3rd party application
|
||||||
|
to use the Data Plane Development Kit.
|
||||||
|
|
||||||
|
%package doc
|
||||||
|
Summary: Data Plane Development Kit API documentation %{summary_tag}
|
||||||
|
Group: System/Libraries
|
||||||
|
Conflicts: dpdk-any-doc
|
||||||
|
Provides: dpdk-any-doc = %{version}
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description doc
|
||||||
|
API programming documentation for the Data Plane Development Kit.
|
||||||
|
|
||||||
|
%if %{with tools}
|
||||||
|
%package tools
|
||||||
|
Summary: Tools for setting up Data Plane Development Kit environment %{summary_tag}
|
||||||
|
Group: System/Libraries
|
||||||
|
Requires: %{name} = %{version}
|
||||||
|
Requires: findutils
|
||||||
|
Requires: iproute
|
||||||
|
Requires: kmod
|
||||||
|
Requires: pciutils
|
||||||
|
Conflicts: dpdk-any-tools
|
||||||
|
Provides: dpdk-any-tools = %{version}
|
||||||
|
|
||||||
|
%description tools
|
||||||
|
This package contains tools for setting up Data Plane Development Kit environment
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{with examples}
|
||||||
|
%package examples
|
||||||
|
Summary: Data Plane Development Kit example applications %{summary_tag}
|
||||||
|
Group: System/Libraries
|
||||||
|
BuildRequires: libvirt-devel
|
||||||
|
Conflicts: dpdk-any-examples
|
||||||
|
Provides: dpdk-any-examples = %{version}
|
||||||
|
|
||||||
|
%description examples
|
||||||
|
Example applications utilizing the Data Plane Development Kit, such
|
||||||
|
as L2 and L3 forwarding.
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%package kmp
|
||||||
|
Summary: DPDK KNI kernel module %{summary_tag}
|
||||||
|
Group: System/Kernel
|
||||||
|
BuildRequires: %{kernel_module_package_buildreqs}
|
||||||
|
%suse_kernel_module_package -p %{_sourcedir}/preamble pae 64kb
|
||||||
|
|
||||||
|
%description kmp
|
||||||
|
The DPDK Kernel NIC Interface (KNI) allows userspace applications access to the Linux* control plane.
|
||||||
|
|
||||||
|
%define sdkdir %{_datadir}/dpdk
|
||||||
|
%define docdir %{_docdir}/dpdk
|
||||||
|
%define incdir %{_includedir}/dpdk
|
||||||
|
%define pmddir %{_libdir}/dpdk-pmds-%{maj}.%{min}
|
||||||
|
|
||||||
|
%prep
|
||||||
|
# can't use %%{name} because of dpdk-thunderx
|
||||||
|
%autosetup -p1 -n dpdk-stable-%{version}
|
||||||
|
|
||||||
|
# Skip not supported examples
|
||||||
|
sed -i "/performance-thread/d" examples/meson.build
|
||||||
|
|
||||||
|
# Verify ABI
|
||||||
|
[ "$(cat ABI_VERSION)" = "%{maj}.%{min}" ] || exit 1
|
||||||
|
|
||||||
|
%build
|
||||||
|
%define _vpath_builddir "build-%{_target_cpu}-$flavor"
|
||||||
|
|
||||||
|
%ifarch x86_64
|
||||||
|
export CFLAGS="%{optflags} -U_FORTIFY_SOURCE -msse4"
|
||||||
|
%endif
|
||||||
|
examples="all"
|
||||||
|
for flavor in %{flavors_to_build}; do
|
||||||
|
%meson --includedir=%{incdir} \
|
||||||
|
-Ddefault_library=shared \
|
||||||
|
-Denable_docs=true \
|
||||||
|
-Db_lto=true \
|
||||||
|
%if %{with examples}
|
||||||
|
-Dexamples="$examples" \
|
||||||
|
%endif
|
||||||
|
-Dplatform="%{platform}" \
|
||||||
|
-Dcpu_instruction_set=%{machine} \
|
||||||
|
-Denable_kmods=true \
|
||||||
|
-Ddrivers_install_subdir=%{pmddir} \
|
||||||
|
-Dkernel_dir="%{_prefix}/src/linux-obj/%{_target_cpu}/$flavor"
|
||||||
|
%meson_build
|
||||||
|
# Make sure examples are only built once
|
||||||
|
examples=""
|
||||||
|
done
|
||||||
|
|
||||||
|
%install
|
||||||
|
examples="%{?with_examples:all}"
|
||||||
|
for flavor in %{flavors_to_build}; do
|
||||||
|
%meson_install
|
||||||
|
# Also install the example binaries
|
||||||
|
if [ ! -z "$examples" ]; then
|
||||||
|
for f in %{_vpath_builddir}/examples/dpdk-*; do
|
||||||
|
bn=$(basename "$f")
|
||||||
|
if [ -f "$f" ] ; then
|
||||||
|
install -Dm 0755 ${f} "%{buildroot}%{_bindir}/${bn/dpdk-/dpdk_example_}"
|
||||||
|
patchelf --remove-rpath "%{buildroot}%{_bindir}/${bn/dpdk-/dpdk_example_}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
examples=""
|
||||||
|
done
|
||||||
|
|
||||||
|
# Fix Kernel modules on Factory (/usr merge)
|
||||||
|
%if 0%{?suse_version} > 1550
|
||||||
|
mkdir -p %{buildroot}%{_prefix}/lib
|
||||||
|
mv %{buildroot}/lib/modules %{buildroot}%{_prefix}/lib
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# Fix documentation
|
||||||
|
mkdir -p %{buildroot}%docdir
|
||||||
|
mv %{buildroot}%{_datadir}/doc/dpdk %{buildroot}%docdir
|
||||||
|
|
||||||
|
# driver .so files often depend upon the bus drivers for their connect bus,
|
||||||
|
# e.g. ixgbe depends on librte_bus_pci. This means that the bus drivers need
|
||||||
|
# to be in the library path, so symlink the drivers from the main lib directory
|
||||||
|
# Fix broken symlink created by buildtools/symlink-drivers-solibs.sh
|
||||||
|
for f in %{buildroot}/%{pmddir}/*.so.*; do
|
||||||
|
bn=$(basename ${f})
|
||||||
|
ln -s %{pmddir}/${bn} %{buildroot}%{_libdir}/${bn}
|
||||||
|
done
|
||||||
|
|
||||||
|
%if ! %{with tools}
|
||||||
|
# Remove tools if not needed
|
||||||
|
for tool in dpdk-devbind.py dpdk-pmdinfo.py dpdk-telemetry.py dpdk-hugepages.py; do
|
||||||
|
rm -rf "%{buildroot}%{_bindir}/$tool"
|
||||||
|
done
|
||||||
|
%else
|
||||||
|
# Add compatibility symlink
|
||||||
|
mkdir -p %{buildroot}%{_sbindir}
|
||||||
|
ln -s %{_bindir}/dpdk-devbind.py %{buildroot}%{_sbindir}/dpdk_nic_bind
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# Fix interpreter
|
||||||
|
find %{buildroot} -name "*.py" -exec sed -i 's|python$|python3|' \{\} +
|
||||||
|
find %{buildroot} -name "*.py" -exec sed -i 's|env python|python|' \{\} +
|
||||||
|
|
||||||
|
# Remove duplicates
|
||||||
|
%fdupes %{buildroot}/%docdir
|
||||||
|
%fdupes %{buildroot}/%{sdkdir}/examples
|
||||||
|
|
||||||
|
# Fix broken symlink (yes with * in its name)
|
||||||
|
rm -v "%{buildroot}%{_libdir}/librte_*.so*"
|
||||||
|
|
||||||
|
%post devel -p /sbin/ldconfig
|
||||||
|
%postun devel -p /sbin/ldconfig
|
||||||
|
%post -n %{lname} -p /sbin/ldconfig
|
||||||
|
%postun -n %{lname} -p /sbin/ldconfig
|
||||||
|
|
||||||
|
%files
|
||||||
|
%{_bindir}/dpdk-dumpcap
|
||||||
|
%{_bindir}/dpdk-pdump
|
||||||
|
%{_bindir}/dpdk-proc-info
|
||||||
|
%{_bindir}/dpdk-test*
|
||||||
|
|
||||||
|
%files -n %{lname}
|
||||||
|
%license license/gpl-2.0.txt license/lgpl-2.1.txt license/bsd-3-clause.txt
|
||||||
|
%{_libdir}/*.so.*
|
||||||
|
%dir %{pmddir}
|
||||||
|
%{pmddir}/*.so.*
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
#BSD
|
||||||
|
%{incdir}/
|
||||||
|
%{sdkdir}/
|
||||||
|
%{pmddir}/*.so
|
||||||
|
%{_libdir}/*.so
|
||||||
|
%{_libdir}/pkgconfig/libdpdk*.pc
|
||||||
|
%if %{with examples}
|
||||||
|
%exclude %{sdkdir}/examples/
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%files devel-static
|
||||||
|
#BSD
|
||||||
|
%{_libdir}/*.a
|
||||||
|
|
||||||
|
%files doc
|
||||||
|
#BSD
|
||||||
|
%doc %docdir
|
||||||
|
|
||||||
|
%if %{with tools}
|
||||||
|
%files tools
|
||||||
|
%{_sbindir}/dpdk_nic_bind
|
||||||
|
%{_bindir}/dpdk-*.py
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{with examples}
|
||||||
|
%files examples
|
||||||
|
%{_bindir}/dpdk_example_*
|
||||||
|
%doc %{sdkdir}/examples
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%changelog
|
Loading…
Reference in New Issue
Block a user