diff --git a/dpdk-19.11.tar.xz b/dpdk-19.11.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..69699393bf9c1a3ee9cf30ff841cd127d2ff46ae Binary files /dev/null and b/dpdk-19.11.tar.xz differ diff --git a/dpdk.spec b/dpdk.spec new file mode 100644 index 0000000000000000000000000000000000000000..09c5f763f52b140171d5d5e5da2b0040ca2631aa --- /dev/null +++ b/dpdk.spec @@ -0,0 +1,160 @@ +Name: dpdk +Version: 19.11 +Release: 0 +Packager: packaging@6wind.com +URL: http://dpdk.org +%global source_version 19.11 +Source: %{name}-%{version}.tar.xz + +Summary: Data Plane Development Kit core +Group: System Environment/Libraries +License: BSD and LGPLv2 and GPLv2 + +ExclusiveArch: i686 x86_64 aarch64 +%ifarch aarch64 +%global machine armv8a +%global target arm64-%{machine}-linux-gcc +%global config arm64-%{machine}-linux-gcc +%else +%global machine native +%global target x86_64-%{machine}-linux-gcc +%global config x86_64-%{machine}-linux-gcc +%endif + +BuildRequires: kernel-devel, kernel, libpcap-devel +BuildRequires: kernel-source +BuildRequires: numactl-devel libconfig-devel +BuildRequires: module-init-tools uname-build-checks libnl3 libmnl +BuildRequires: glibc glibc-devel libibverbs libibverbs-devel libmnl-devel +BuildRequires: texlive +%define kern_devel_ver %(uname -r) +%description +DPDK core includes kernel modules, core libraries and tools. +testpmd application allows to test fast packet processing environments +on arm64 platforms. For instance, it can be used to check that environment +can support fast path applications such as 6WINDGate, pktgen, rumptcpip, etc. +More libraries are available as extensions in other packages. + +%package devel +Summary: Data Plane Development Kit for development +Requires: %{name}%{?_isa} = %{version}-%{release} +%description devel +DPDK devel is a set of makefiles, headers and examples +for fast packet processing on arm64 platforms. + +%package doc +Summary: Data Plane Development Kit API documentation +BuildArch: noarch +%description doc +DPDK doc is divided in two parts: API details in doxygen HTML format +and guides in sphinx HTML/PDF formats. + +%package tools +Summary: dpdk pdump tool +Group : Applications/System +Requires: dpdk = %{version} +%description tools +This package contains the pdump tool for capture the dpdk network packets. + +%prep +%setup -q + +%build +namer=%{kern_devel_ver} +export RTE_KERNELDIR=/lib/modules/${namer}/build +make O=%{target} T=%{config} config +#make .so libraries for spdk +sed -ri 's,(CONFIG_RTE_BUILD_SHARED_LIB=).*,\1y,' %{target}/.config +sed -ri 's,(CONFIG_RTE_LIB_LIBOS=).*,\1n,' %{target}/.config +make O=%{target} %{?_smp_mflags} + +%install +namer=%{kern_devel_ver} +rm -rf %{buildroot} +make install O=%{target} RTE_KERNELDIR=/lib/modules/${namer}/build \ + kerneldir=/lib/modules/${namer}/extra/dpdk DESTDIR=%{buildroot} \ + prefix=%{_prefix} bindir=%{_bindir} sbindir=%{_sbindir} \ + includedir=%{_includedir}/dpdk libdir=%{_libdir} \ + datadir=%{_datadir}/dpdk docdir=%{_docdir}/dpdk + +mkdir -p $RPM_BUILD_ROOT/lib64/ +cp -ar ./%{target}/lib/librte_eal.so* $RPM_BUILD_ROOT/lib64/ +cp -ar ./%{target}/lib/librte_mempool.so* $RPM_BUILD_ROOT/lib64/ +cp -ar ./%{target}/lib/librte_ring.so* $RPM_BUILD_ROOT/lib64/ +cp -ar ./%{target}/lib/librte_mempool_ring.so* $RPM_BUILD_ROOT/lib64/ +cp -ar ./%{target}/lib/librte_pci.so* $RPM_BUILD_ROOT/lib64/ +cp -ar ./%{target}/lib/librte_bus_pci.so* $RPM_BUILD_ROOT/lib64/ +cp -ar ./%{target}/lib/librte_kvargs.so* $RPM_BUILD_ROOT/lib64/ +cp -ar ./%{target}/lib/librte_acl.so* $RPM_BUILD_ROOT/lib64/ +cp -ar ./%{target}/lib/librte_ethdev.so* $RPM_BUILD_ROOT/lib64/ +cp -ar ./%{target}/lib/librte_mbuf.so* $RPM_BUILD_ROOT/lib64/ +cp -ar ./%{target}/lib/librte_cmdline.so* $RPM_BUILD_ROOT/lib64/ +cp -ar ./%{target}/lib/librte_net.so* $RPM_BUILD_ROOT/lib64/ + +sed -ri 's,(RTE_MACHINE=).*,\1%{machine},' %{target}/.config +sed -ri 's,(RTE_APP_TEST=).*,\1n,' %{target}/.config +sed -ri 's,(RTE_BUILD_SHARED_LIB=).*,\1n,' %{target}/.config +sed -ri 's,(RTE_NEXT_ABI=).*,\1n,' %{target}/.config +sed -ri 's,(LIBRTE_VHOST=).*,\1y,' %{target}/.config +#sed -ri 's,(LIBRTE_PMD_PCAP=).*,\1y,' %{target}/.config +sed -ri 's,(CONFIG_RTE_BUILD_SHARED_LIB=).*,\1n,' %{target}/.config +make O=%{target} %{?_smp_mflags} +#make O=%{target} doc + +make install O=%{target} RTE_KERNELDIR=/lib/modules/${namer}/build \ + kerneldir=/lib/modules/${namer}/extra/dpdk DESTDIR=%{buildroot} \ + prefix=%{_prefix} bindir=%{_bindir} sbindir=%{_sbindir} \ + includedir=%{_includedir}/dpdk libdir=%{_libdir} \ + datadir=%{_datadir}/dpdk docdir=%{_docdir}/dpdk + +mkdir -p $RPM_BUILD_ROOT/usr/include/%{name}-%{version}/ +ln -s /usr/share/dpdk/mk $RPM_BUILD_ROOT/usr/include/%{name}-%{version}/ +ln -s /usr/share/dpdk/%{target} $RPM_BUILD_ROOT/usr/include/%{name}-%{version}/ + +mkdir -p $RPM_BUILD_ROOT/usr/include/dpdk/ +ln -s /usr/share/dpdk/%{target} $RPM_BUILD_ROOT/usr/include/dpdk/ + +mkdir -p $RPM_BUILD_ROOT/usr/bin +cp ./%{target}/app/dpdk-pdump $RPM_BUILD_ROOT/usr/bin + +strip -g $RPM_BUILD_ROOT/lib/modules/${namer}/extra/dpdk/igb_uio.ko +strip -g $RPM_BUILD_ROOT/lib/modules/${namer}/extra/dpdk/rte_kni.ko + +%define _unpackaged_files_terminate_build 0 + +%files +%dir %{_datadir}/dpdk +%{_datadir}/dpdk/usertools/*.py +%{_datadir}/dpdk/usertools/*.sh +/lib/modules/%{kern_devel_ver}/extra/dpdk/* +/lib64/librte*.so* + +%files devel +%{_includedir}/dpdk +%{_datadir}/dpdk/mk +%{_datadir}/dpdk/buildtools +%{_datadir}/dpdk/%{target} +%{_datadir}/dpdk/examples +%{_sbindir}/* +%{_bindir}/* +%{_libdir}/* +%dir /usr/include/%{name}-%{version}/ +/usr/include/%{name}-%{version}/* +%dir /usr/include/dpdk/ +/usr/include/dpdk/* + +%files doc +#%doc %{_docdir}/dpdk + +%files tools +/usr/bin/dpdk-pdump + +%post +/sbin/ldconfig +/usr/sbin/depmod + +%postun +/sbin/ldconfig +/usr/sbin/depmod + +%changelog