Accepting request 448521 from home:mvarlese:branches:network
- Added dependency on gcc6 to build for aarch64 (armv8a) successfully - Added support to build code for Thunderx platform: * New patch (0001-rte-vars-fix-for-thunderx.patch) to fix DPDK cross-compile environment - Introduced new dpdk-thunderx.spec file: * Removed architectures not supporting Thunderx platform (e.g. x86) * Added dependency on gcc v5.0 for armv8a-crc - Update to version 16.07.2. Some of the fixes are listed below: * ethdev: prevent duplicate event callback * hash: fix bucket size usage OBS-URL: https://build.opensuse.org/request/show/448521 OBS-URL: https://build.opensuse.org/package/show/network/dpdk?expand=0&rev=21
This commit is contained in:
committed by
Git OBS Bridge
parent
a697252c47
commit
6ed4cea857
309
dpdk-thunderx.spec
Normal file
309
dpdk-thunderx.spec
Normal file
@@ -0,0 +1,309 @@
|
||||
#
|
||||
# spec file for package dpdk-thunderx
|
||||
#
|
||||
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# 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 http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%define machine native
|
||||
%define machine2 default
|
||||
%ifarch x86_64
|
||||
%define machine native
|
||||
%define target x86_64-%{machine}-linuxapp-gcc
|
||||
%endif
|
||||
%ifarch %ix86
|
||||
%define machine native
|
||||
%define target i686-%{machine}-linuxapp-gcc
|
||||
%endif
|
||||
%ifarch aarch64
|
||||
%define machine2 thunderx
|
||||
%define target arm64-%{machine2}-linuxapp-gcc
|
||||
%endif
|
||||
%ifarch ppc64le
|
||||
%define machine2 power8
|
||||
%define target ppc_64-%{machine2}-linuxapp-gcc
|
||||
%endif
|
||||
|
||||
%bcond_without shared
|
||||
# Add option to build without examples
|
||||
%bcond_without examples
|
||||
# Add option to build without tools
|
||||
%bcond_without tools
|
||||
|
||||
Name: dpdk-thunderx
|
||||
Version: 16.07.2
|
||||
Release: 0
|
||||
Summary: Set of libraries and drivers for fast packet processing
|
||||
License: BSD-3-Clause and GPL-2.0 and LGPL-2.1
|
||||
Group: System/Libraries
|
||||
Url: http://dpdk.org
|
||||
Source: http://fast.dpdk.org/rel/dpdk-%{version}.tar.xz
|
||||
# PATCH-FIX-OPENSUSE 0001-enic-fix-Type-punning-and-strict-aliasing-warning.patch
|
||||
# This patch was originally taken from the fedora package but they have
|
||||
# removed it since then because of
|
||||
# http://osdir.com/ml/scm-fedora-commits/2016-03/msg00849.html
|
||||
# However, the problem still exists and the fix has to find its way to the
|
||||
# upstream code.
|
||||
Patch1: 0001-enic-fix-Type-punning-and-strict-aliasing-warning.patch
|
||||
# PATCH-FIX-OPENSUSE 0001-rte-vars-fix-for-thunderx.patch
|
||||
# This patch comments the CROSS compilation (broken) in the mk file for ThunderX
|
||||
# Upstreaming of this patch will have to be pursued.
|
||||
Patch2: 0001-rte-vars-fix-for-thunderx.patch
|
||||
BuildRequires: doxygen
|
||||
BuildRequires: fdupes
|
||||
# Required to build on aarch64 (gcc option armv8-a+crc)
|
||||
BuildRequires: gcc6
|
||||
BuildRequires: libnuma-devel
|
||||
BuildRequires: libpcap-devel
|
||||
BuildRequires: zlib-devel
|
||||
ExclusiveArch: aarch64 x86_64 %ix86 ppc64le
|
||||
Conflicts: dpdk
|
||||
|
||||
%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
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description devel
|
||||
This package contains the headers and other files needed for developing
|
||||
applications with the Data Plane Development Kit.
|
||||
|
||||
%package doc
|
||||
Summary: Data Plane Development Kit API documentation
|
||||
Group: System/Libraries
|
||||
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
|
||||
Group: System/Libraries
|
||||
Requires: %{name} = %{version}
|
||||
Requires: findutils
|
||||
Requires: iproute
|
||||
Requires: kmod
|
||||
Requires: pciutils
|
||||
|
||||
%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
|
||||
Group: System/Libraries
|
||||
BuildRequires: libvirt-devel
|
||||
|
||||
%description examples
|
||||
Example applications utilizing the Data Plane Development Kit, such
|
||||
as L2 and L3 forwarding.
|
||||
%endif
|
||||
|
||||
%define sdkdir %{_datadir}/dpdk
|
||||
%define docdir %{_docdir}/dpdk
|
||||
%define incdir %{_includedir}/dpdk
|
||||
%define pmddir %{_libdir}/dpdk-pmds
|
||||
|
||||
%prep
|
||||
%setup -q -n dpdk-stable-%{version}
|
||||
%patch1 -p1 -z .enic
|
||||
%patch2 -p0 -z .rte
|
||||
|
||||
%build
|
||||
# set up a method for modifying the resulting .config file
|
||||
function setconf() {
|
||||
if grep -q ^$1= %{target}/.config; then
|
||||
sed -i "s:^$1=.*$:$1=$2:g" %{target}/.config
|
||||
else
|
||||
echo $1=$2 >> %{target}/.config
|
||||
fi
|
||||
}
|
||||
|
||||
# In case dpdk-devel is installed, we should ignore its hints about the SDK directories
|
||||
unset RTE_SDK RTE_INCLUDE RTE_TARGET
|
||||
|
||||
# For the release, '-Wno-error=array-bounds' is done to prevent a spurious error
|
||||
# generated by gcc 5.X against the 2.1 branch
|
||||
export EXTRA_CFLAGS="%{optflags} -Wformat -fPIC -Wno-error=array-bounds"
|
||||
|
||||
# DPDK defaults to using builder-specific compiler flags. However,
|
||||
# the config has been changed by specifying CONFIG_RTE_MACHINE=default
|
||||
# in order to build for a more generic host. NOTE: It is possible that
|
||||
# the compiler flags used still won't work for all Fedora-supported
|
||||
# machines, but runtime checks in DPDK will catch those situations.
|
||||
|
||||
make V=1 O=%{target} T=%{target} %{?_smp_mflags} config
|
||||
|
||||
setconf CONFIG_RTE_MACHINE '"%{machine2}"'
|
||||
# Disable experimental features
|
||||
setconf CONFIG_RTE_NEXT_ABI n
|
||||
setconf CONFIG_RTE_LIBRTE_CRYPTODEV n
|
||||
setconf CONFIG_RTE_LIBRTE_MBUF_OFFLOAD n
|
||||
|
||||
# Enable automatic driver loading from this path
|
||||
setconf CONFIG_RTE_EAL_PMD_PATH '"%{pmddir}"'
|
||||
|
||||
setconf CONFIG_RTE_LIBRTE_BNX2X_PMD y
|
||||
setconf CONFIG_RTE_LIBRTE_PMD_PCAP y
|
||||
setconf CONFIG_RTE_LIBRTE_VHOST_NUMA y
|
||||
|
||||
setconf CONFIG_RTE_EAL_IGB_UIO n
|
||||
setconf CONFIG_RTE_LIBRTE_KNI n
|
||||
setconf CONFIG_RTE_KNI_KMOD n
|
||||
setconf CONFIG_RTE_KNI_PREEMPT_DEFAULT n
|
||||
|
||||
%if %{with shared}
|
||||
setconf CONFIG_RTE_BUILD_SHARED_LIB y
|
||||
%endif
|
||||
|
||||
%ifarch aarch64 ppc64le
|
||||
setconf CONFIG_RTE_LIBRTE_DISTRIBUTOR n
|
||||
%endif
|
||||
%ifarch ppc64le
|
||||
setconf CONFIG_RTE_LIBRTE_PMD_RING n
|
||||
%endif
|
||||
|
||||
make V=1 O=%{target} %{?_smp_mflags}
|
||||
make V=1 O=%{target} %{?_smp_mflags} doc-api-html
|
||||
|
||||
%if %{with examples}
|
||||
make V=1 O=%{target}/examples T=%{target} %{?_smp_mflags} examples
|
||||
%endif
|
||||
|
||||
%install
|
||||
# In case dpdk-devel is installed
|
||||
unset RTE_SDK RTE_INCLUDE RTE_TARGET
|
||||
|
||||
%make_install O=%{target} prefix=%{_usr} libdir=%{_libdir}
|
||||
|
||||
%if ! %{with tools}
|
||||
rm -rf %{buildroot}%{sdkdir}/tools
|
||||
rm -rf %{buildroot}%{_sbindir}/dpdk_nic_bind
|
||||
%endif
|
||||
rm -f %{buildroot}%{sdkdir}/tools/setup.sh
|
||||
#TODO pip elftools has issues to fix
|
||||
rm -rf %{buildroot}%{_bindir}/dpdk-pmdinfo
|
||||
|
||||
%if %{with examples}
|
||||
find %{target}/examples/ -name "*.map" | xargs rm -f
|
||||
for f in %{target}/examples/*/%{target}/app/*; do
|
||||
bn=`basename ${f}`
|
||||
cp -p ${f} %{buildroot}%{_bindir}/dpdk_example_${bn}
|
||||
done
|
||||
%endif
|
||||
|
||||
# Create a driver directory with symlinks to all pmds
|
||||
mkdir -p %{buildroot}/%{pmddir}
|
||||
for f in %{buildroot}/%{_libdir}/*_pmd_*.so; do
|
||||
bn=$(basename ${f})
|
||||
ln -s ../${bn} %{buildroot}%{pmddir}/${bn}
|
||||
done
|
||||
|
||||
# Setup RTE_SDK environment as expected by apps etc
|
||||
mkdir -p %{buildroot}/%{_sysconfdir}/profile.d
|
||||
cat << EOF > %{buildroot}/%{_sysconfdir}/profile.d/dpdk-sdk-%{_arch}.sh
|
||||
if [ -z "\${RTE_SDK}" ]; then
|
||||
export RTE_SDK="%{sdkdir}"
|
||||
export RTE_TARGET="%{target}"
|
||||
export RTE_INCLUDE="%{incdir}"
|
||||
fi
|
||||
EOF
|
||||
|
||||
cat << EOF > %{buildroot}/%{_sysconfdir}/profile.d/dpdk-sdk-%{_arch}.csh
|
||||
if ( ! \$RTE_SDK ) then
|
||||
setenv RTE_SDK "%{sdkdir}"
|
||||
setenv RTE_TARGET "%{target}"
|
||||
setenv RTE_INCLUDE "%{incdir}"
|
||||
endif
|
||||
EOF
|
||||
|
||||
# Fixup target machine mismatch
|
||||
sed -i -e 's:-%{machine}-:-%{machine2}-:g' %{buildroot}/%{_sysconfdir}/profile.d/dpdk-sdk*
|
||||
|
||||
#doc
|
||||
mkdir %{buildroot}%{_docdir}/
|
||||
mv %{buildroot}%{_datadir}/doc/dpdk %{buildroot}%{_docdir}/
|
||||
|
||||
ln -s %{_bindir}/dpdk-procinfo %{buildroot}%{_bindir}/dpdk_proc_info
|
||||
ln -s %{_sbindir}/dpdk-devbind %{buildroot}%{_sbindir}/dpdk_nic_bind
|
||||
|
||||
# Remove duplicates
|
||||
%fdupes %{buildroot}/%{_prefix}
|
||||
|
||||
%post devel -p /sbin/ldconfig
|
||||
%postun devel -p /sbin/ldconfig
|
||||
%post -p /sbin/ldconfig
|
||||
%postun -p /sbin/ldconfig
|
||||
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
# BSD
|
||||
%{_bindir}/testpmd
|
||||
%{_bindir}/dpdk-procinfo
|
||||
%{_bindir}/dpdk_proc_info
|
||||
%{_bindir}/dpdk-pdump
|
||||
|
||||
%if %{with shared}
|
||||
%dir %{_libdir}/dpdk-pmds
|
||||
|
||||
%{_libdir}/*.so.*
|
||||
%{pmddir}/
|
||||
%endif
|
||||
|
||||
%files doc
|
||||
%defattr(-,root,root)
|
||||
#BSD
|
||||
%docdir
|
||||
%doc LICENSE.GPL LICENSE.LGPL
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root)
|
||||
#BSD
|
||||
%{incdir}/
|
||||
%{sdkdir}
|
||||
%if %{with tools}
|
||||
%exclude %{sdkdir}/tools/
|
||||
%endif
|
||||
%if %{with examples}
|
||||
%exclude %{sdkdir}/examples/
|
||||
%endif
|
||||
%{_sysconfdir}/profile.d/dpdk-sdk-*.*
|
||||
%if ! %{with shared}
|
||||
%{_libdir}/*.a
|
||||
%else
|
||||
%{_libdir}/*.so
|
||||
%endif
|
||||
|
||||
%if %{with tools}
|
||||
%files tools
|
||||
%defattr(-,root,root)
|
||||
%{sdkdir}/tools/
|
||||
%{_sbindir}/dpdk-devbind
|
||||
%{_sbindir}/dpdk_nic_bind
|
||||
%endif
|
||||
|
||||
%if %{with examples}
|
||||
%files examples
|
||||
%defattr(-,root,root)
|
||||
%{_bindir}/dpdk_example_*
|
||||
%doc %{sdkdir}/examples
|
||||
%endif
|
||||
|
||||
%changelog
|
Reference in New Issue
Block a user