Name: dpdk Version: 1.7.0 Release: 6%{?dist} URL: http://dpdk.org Source: http://dpdk.org/browse/dpdk/snapshot/dpdk-%{version}.tar.gz Patch1: dpdk-config.patch Summary: Set of libraries and drivers for fast packet processing # # Note that, while this is dual licensed, all code that is included with this # Pakcage are BSD licensed. The only files that aren't licensed via BSD is the # kni kernel module which is dual LGPLv2/BSD, and thats not built for fedora. # License: BSD and LGPLv2 and GPLv2 # # The DPDK is designed to optimize througput of network traffic using, among # other techniques, carefully crafted x86 assembly instructions. As such it # currently (and likely never will) run on non-x86 platforms # ExclusiveArch: x86_64 %define machine native %define target x86_64-%{machine}-linuxapp-gcc BuildRequires: kernel-headers, libpcap-devel, doxygen %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 Requires: %{name}%{?_isa} = %{version}-%{release} %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 BuildArch: noarch %description doc API programming documentation for the Data Plane Development Kit. %define sdkdir %{_libdir}/%{name}-%{version}-sdk %define docdir %{_docdir}/%{name}-%{version} %prep %setup -q %patch1 -p1 -z .config %build export EXTRA_CFLAGS="%{optflags}" # 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 make V=1 O=%{target} %{?_smp_mflags} make V=1 O=%{target} %{?_smp_mflags} doc %install # DPDK's "make install" seems a bit broken -- do things manually... mkdir -p %{buildroot}%{_bindir} cp -a %{target}/app/testpmd %{buildroot}%{_bindir}/testpmd-%{version} mkdir -p %{buildroot}%{_includedir}/%{name}-%{version} cp -Lr %{target}/include/* %{buildroot}%{_includedir}/%{name}-%{version} mkdir -p %{buildroot}%{_libdir}/%{name}-%{version} cp -a %{target}/lib/* %{buildroot}%{_libdir}/%{name}-%{version} mkdir -p %{buildroot}%{docdir} cp -a %{target}/doc/* %{buildroot}%{docdir} # DPDK apps expect a particular (and somewhat peculiar) directory layout # for building, arrange for that mkdir -p %{buildroot}%{sdkdir}/%{target} cp -a %{target}/.config %{buildroot}%{sdkdir}/%{target} ln -s ../../../%{_lib}/%{name}-%{version} %{buildroot}%{sdkdir}/%{target}/lib ln -s ../../../include/%{name}-%{version} %{buildroot}%{sdkdir}/%{target}/include cp -a mk/ %{buildroot}%{sdkdir} # 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="%{_includedir}/%{name}-%{version}" 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 "%{_includedir}/%{name}-%{version}" endif EOF # Theres no point in packaging any of the tools # We currently don't need the igb uio script, there # are several uio scripts already available # And the cpu_layout script functionality is # covered by lscpu #cp -a tools %{buildroot}%{datadir} # Fixup irregular modes in headers find %{buildroot}%{_includedir}/%{name}-%{version} -type f | xargs chmod 0644 %files # BSD %{_bindir}/* %{_libdir}/%{name}-%{version} %files doc #BSD %{docdir} %files devel #BSD %{_includedir}/* %{sdkdir} %{_sysconfdir}/profile.d/dpdk-sdk-*.* %changelog * Wed Jan 27 2015 Panu Matilainen - 1.7.0-6 - Avoid variable expansion in the spec here-documents during build - Drop now unnecessary debug flags patch * Tue Jan 27 2015 Panu Matilainen - 1.7.0-5 - Avoid unnecessary use of %%global, lazy expansion is normally better - Drop unused destdir macro while at it - Arrange for RTE_SDK environment + directory layout expected by DPDK apps - Drop config from main package, it shouldn't be needed at runtime * Tue Jan 27 2015 Panu Matilainen - 1.7.0-4 - Copy the headers instead of broken symlinks into -devel package - Force sane mode on the headers - Avoid unnecessary %%exclude by not copying unpackaged content to buildroot - Clean up summaries and descriptions - Drop unnecessary kernel-devel BR, we are not building kernel modules * Sat Aug 16 2014 Fedora Release Engineering - 1.7.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild * Thu Jul 17 2014 - John W. Linville - 1.7.0-2 - Use EXTRA_CFLAGS to include standard Fedora compiler flags in build - Set CONFIG_RTE_MACHINE=default to build for least-common-denominator machines - Turn-off build of librte_acl, since it does not build on default machines - Turn-off build of physical device PMDs that require kernel support - Clean-up the install rules to match current packaging - Correct changelog versions 1.0.7 -> 1.7.0 - Remove ix86 from ExclusiveArch -- it does not build with above changes * Thu Jul 10 2014 - Neil Horman - 1.7.0-1.0 - Update source to official 1.7.0 release * Thu Jul 03 2014 - Neil Horman - Fixing up release numbering * Tue Jul 01 2014 - Neil Horman - 1.7.0-0.9.1.20140603git5ebbb1728 - Fixed some build errors (empty debuginfo, bad 32 bit build) * Wed Jun 11 2014 - Neil Horman - 1.7.0-0.9.20140603git5ebbb1728 - Fix another build dependency * Mon Jun 09 2014 - Neil Horman - 1.7.0-0.8.20140603git5ebbb1728 - Fixed doc arch versioning issue * Mon Jun 09 2014 - Neil Horman - 1.7.0-0.7.20140603git5ebbb1728 - Added verbose output to build * Tue May 13 2014 - Neil Horman - 1.7.0-0.6.20140603git5ebbb1728 - Initial Build