SHA256
1
0
forked from pool/dpdk
dpdk/dpdk.spec

320 lines
9.3 KiB
RPMSpec
Raw Normal View History

#
# 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}
Accepting request 433598 from home:ndas:branches:network - Drop code for generating our own linker script. * Commit 948fd64befc3 (" mk: replace the combined library with a linker script") added upstream support for building and installing a linker script so we drop our code from the spec file which generated a much larger and possibly broken linker script resulting to linking issues (boo#1002534) - Update to version 16.07. Some of the new features are listed below: * Removed the mempool cache memory if caching is not being used. * Added mempool external cache for non-EAL thread. * Changed the memory allocation scheme in the mempool library. * Added a new driver for Broadcom NetXtreme-C devices. * Added a new driver for ThunderX nicvf devices. * Added mailbox interrupt support for ixgbe and igb VFs. * Updated the ixgbe base driver. * Updated the i40e base driver. * Updated the enic driver. * Updated the mlx5 driver. * Added support for virtio on IBM POWER8. * Added support for Virtio in containers. * Added vhost-user client mode. * Added NSH packet recognition in i40e. * Added AES-CTR support to AESNI MB PMD. * Added AES counter mode support for Intel QuickAssist devices. * Added KASUMI SW PMD. * Added multi-writer support for RTE Hash with Intel TSX. * Improved IP Pipeline Application. * Added keepalive enhancements. * Added packet capture framework. OBS-URL: https://build.opensuse.org/request/show/433598 OBS-URL: https://build.opensuse.org/package/show/network/dpdk?expand=0&rev=15
2016-10-06 16:10:19 +02:00
# 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
Patch3: 0001-kni-fix-build-with-Linux-6.5.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}
Accepting request 927313 from home:suntorytimed:branches:network Rebased as requested - - Update LTS version to maintenance release 19.11.10 * app/crypto-perf: fix out-of-place mempool allocation * app/test: fix IPv6 header initialization * app/testpmd: change port link speed without stopping all * app/testpmd: fix help string for port reset * app/testpmd: fix IPv4 checksum * app/testpmd: fix MAC address after port reset * app/testpmd: fix offloads for newly attached port * app/testpmd: fix Tx checksum calculation for tunnel * bitmap: fix buffer overrun in bitmap init * bus: clarify log for non-NUMA-aware devices * bus/dpaa: fix freeing in FMAN interface destructor * common/mlx5: fix compatibility with OFED port query API * common/mlx5: fix Netlink port name padding in probing * common/mlx5: use new port query API if available * cryptodev: fix freeing after device release * crypto/mvsam: fix AES-GCM session parameters * crypto/mvsam: fix capabilities * crypto/mvsam: fix options parsing * crypto/mvsam: fix session data reset * crypto/octeontx: fix freeing after device release * crypto/qat: fix Arm build with special memcpy * devtools: fix file listing in maintainers check * distributor: fix 128-bit write alignment * doc: add limitation for ConnectX-4 with L2 in mlx5 guide * doc: announce common prefix for ethdev * doc: fix default burst size in testpmd * doc: fix spelling * drivers/net: fix memzone allocations for DMA memory * ethdev: fix doc of flow action * eventdev: fix event port setup in tx adapter * flow_classify: fix leaking rules on delete * (github-cpaelzer-stable/19.11) telemetry: fix race in telemetry control thread creation * ipc: stop mp control thread on cleanup * kni: fix crash on userspace VA for segmented packets * kni: fix mbuf allocation for kernel side use * mempool/octeontx2: fix shift calculation * net/bnxt: check access to possible null pointer * net/bnxt: cleanup code * net/bnxt: clear cached statistics * net/bnxt: detect bad opaque in Rx completion * net/bnxt: fix auto-negotiation on Whitney+ * net/bnxt: fix check for PTP support in FW * net/bnxt: fix error handling in VNIC prepare * net/bnxt: fix error messages in VNIC prepare * net/bnxt: fix missing barriers in completion handling * net/bnxt: fix nested lock during bonding * net/bnxt: fix ring and context memory allocation * net/bnxt: fix Rx burst size constraint * net/bnxt: fix Rx interrupt setting * net/bnxt: fix scalar Tx completion handling * net/bnxt: fix Tx descriptor status implementation * net/bnxt: fix typo in log message * net/bnxt: improve probing log message * net/bnxt: invoke device removal event on recovery failure * net/bnxt: remove unnecessary code * net/bnxt: remove unnecessary comment * net/bnxt: set flow error after tunnel redirection free * net/bnxt: set flow error when free filter not available * net/bnxt: use common function to free VNIC resource * net/bnxt: workaround spurious zero stats in Thor * net/bonding: check flow setting * net/bonding: fix error message on flow verify * net/ena: enable multi-segment in Tx offload flags * net/ena: trigger reset on Tx prepare failure * net/hinic/base: fix LRO * net/hinic: increase protection of the VLAN * net/hns3: fix delay for waiting to stop Rx/Tx * net/hns3: fix filter parsing comment * net/hns3: fix Tx prepare after stop * net/hns3: fix VLAN strip log * net/hns3: increase VF reset retry maximum * net/i40e: fix descriptor scan on Arm * net/i40e: fix multi-process shared data * net/iavf: fix RSS key access out of bound * net/iavf: fix Tx threshold check * net/ice/base: fix first profile mask * net/ice/base: revert change of first profile mask * net/ice: fix default RSS key generation * net/ice: fix memzone leak when firmware is missing * net/ixgbe: fix flow entry access after freeing * net/mlx5: fix incorrect r/w lock usage in DMA unmap * net/mlx5: fix IPIP multi-tunnel validation * net/mlx5: fix match MPLS over GRE with key * net/mlx5: fix MPLS RSS expansion * net/mlx5: fix overflow in mempool argument * net/mlx5: fix representor interrupt handler * net/mlx5: fix RoCE LAG bond device probing * net/mlx5: fix RSS flow item expansion for GRE key * net/mlx5: fix Rx/Tx queue checks * net/mlx5: fix switchdev mode recognition * net/mlx5: fix typo in vectorized Rx comments * net/mlx5: limit implicit MPLS RSS expansion over GRE * net/mlx5: limit inner RSS expansion for MPLS * net/mlx5: remove redundant operations in NEON Rx * net/mlx5: remove unsupported flow item MPLS over IP * net/mlx5: workaround drop action with old kernel * net/mvpp2: fix configured state dependency * net/mvpp2: fix port speed overflow * net/octeontx2: fix default MCAM allocation size * net/octeontx2: fix flow creation limit on CN98xx * net/octeontx2: use runtime LSO format indices * net/octeontx/base: fix debug build with clang * net/pfe: remove unnecessary null check * net/sfc: fix MAC stats lock in xstats query by ID * net/sfc: fix MAC stats update for stopped device * net/sfc: fix reading adapter state without locking * net/sfc: fix xstats query by ID according to ethdev * net/sfc: fix xstats query by unsorted list of IDs * net/softnic: fix connection memory leak * net/softnic: fix memory leak as profile is freed * net/virtio: fix aarch32 build * net/virtio: fix refill order in packed ring datapath * net/virtio: report maximum MTU in device info * power: fix namespace for internal struct * rib: fix max depth IPv6 lookup * test/crypto: fix mbuf reset after null check * test/crypto: fix mempool size for session-less * test/crypto: fix typo in AES case * test/crypto: fix typo in ESN case * test/mbuf: fix virtual address conversion * tests/eal: fix memory leak * vhost/crypto: check request pointer before dereference * vhost: fix crash on reconnect * vhost: fix missing guest pages table NUMA realloc * vhost: fix missing memory table NUMA realloc * vhost: utilize dynamic memory allocator * Changes from 19.11.9: https://doc.dpdk.org/guides-19.11/rel_notes/release_19_11.html#id25 - rename 0001-SLE15-SP3-compatibility-patch-for-kni.patch to 0002-SLE15-SP3-compatibility-patch-for-kni.patch - rename dpdk-fallthrough-comment-fixes.patch to 0003-dpdk-fallthrough-comment-fixes.patch OBS-URL: https://build.opensuse.org/request/show/927313 OBS-URL: https://build.opensuse.org/package/show/network/dpdk?expand=0&rev=130
2021-11-21 12:10:03 +01:00
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
Accepting request 433598 from home:ndas:branches:network - Drop code for generating our own linker script. * Commit 948fd64befc3 (" mk: replace the combined library with a linker script") added upstream support for building and installing a linker script so we drop our code from the spec file which generated a much larger and possibly broken linker script resulting to linking issues (boo#1002534) - Update to version 16.07. Some of the new features are listed below: * Removed the mempool cache memory if caching is not being used. * Added mempool external cache for non-EAL thread. * Changed the memory allocation scheme in the mempool library. * Added a new driver for Broadcom NetXtreme-C devices. * Added a new driver for ThunderX nicvf devices. * Added mailbox interrupt support for ixgbe and igb VFs. * Updated the ixgbe base driver. * Updated the i40e base driver. * Updated the enic driver. * Updated the mlx5 driver. * Added support for virtio on IBM POWER8. * Added support for Virtio in containers. * Added vhost-user client mode. * Added NSH packet recognition in i40e. * Added AES-CTR support to AESNI MB PMD. * Added AES counter mode support for Intel QuickAssist devices. * Added KASUMI SW PMD. * Added multi-writer support for RTE Hash with Intel TSX. * Improved IP Pipeline Application. * Added keepalive enhancements. * Added packet capture framework. OBS-URL: https://build.opensuse.org/request/show/433598 OBS-URL: https://build.opensuse.org/package/show/network/dpdk?expand=0&rev=15
2016-10-06 16:10:19 +02:00
# 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
Accepting request 433598 from home:ndas:branches:network - Drop code for generating our own linker script. * Commit 948fd64befc3 (" mk: replace the combined library with a linker script") added upstream support for building and installing a linker script so we drop our code from the spec file which generated a much larger and possibly broken linker script resulting to linking issues (boo#1002534) - Update to version 16.07. Some of the new features are listed below: * Removed the mempool cache memory if caching is not being used. * Added mempool external cache for non-EAL thread. * Changed the memory allocation scheme in the mempool library. * Added a new driver for Broadcom NetXtreme-C devices. * Added a new driver for ThunderX nicvf devices. * Added mailbox interrupt support for ixgbe and igb VFs. * Updated the ixgbe base driver. * Updated the i40e base driver. * Updated the enic driver. * Updated the mlx5 driver. * Added support for virtio on IBM POWER8. * Added support for Virtio in containers. * Added vhost-user client mode. * Added NSH packet recognition in i40e. * Added AES-CTR support to AESNI MB PMD. * Added AES counter mode support for Intel QuickAssist devices. * Added KASUMI SW PMD. * Added multi-writer support for RTE Hash with Intel TSX. * Improved IP Pipeline Application. * Added keepalive enhancements. * Added packet capture framework. OBS-URL: https://build.opensuse.org/request/show/433598 OBS-URL: https://build.opensuse.org/package/show/network/dpdk?expand=0&rev=15
2016-10-06 16:10:19 +02:00
%{_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