From 171be5b8ccaf523f9070738ad1ac05dc43211fc1 Mon Sep 17 00:00:00 2001 From: Aaron Conole Date: Thu, 22 Oct 2015 15:05:49 -0400 Subject: [PATCH] dpdk.spec: Build an examples SDK package Include examples to be built with the SDK, and ratchet the version forward. IMPORTANT: this commit disables the vm_power_manager example since that particular example requires in-tree builds, which is not possible. Also disabled is the ip_pipeline build, since it depends on sse4 intrinsics. Signed-off-by: Aaron Conole --- dpdk-2.1-examples.patch | 21 ++++++++++++++++++++ dpdk.spec | 44 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 dpdk-2.1-examples.patch diff --git a/dpdk-2.1-examples.patch b/dpdk-2.1-examples.patch new file mode 100644 index 0000000..d5b8ba2 --- /dev/null +++ b/dpdk-2.1-examples.patch @@ -0,0 +1,21 @@ +diff -up dpdk-2.1.0-2898.gitf1e779ec/examples/Makefile.examples dpdk-2.1.0-2898.gitf1e779ec/examples/Makefile +index cee95cd..aa760d2 100644 +--- dpdk-2.1.0-2898.gitf1e779ec/examples/Makefile.examples 2015-10-22 22:36:41.000000000 +0300 ++++ dpdk-2.1.0-2898.gitf1e779ec/examples/Makefile 2015-10-22 23:36:41.000000000 +0300 +@@ -45,7 +45,7 @@ DIRS-y += dpdk_qat + endif + DIRS-y += exception_path + DIRS-y += helloworld +-DIRS-y += ip_pipeline ++#DIRS-y += ip_pipeline + DIRS-y += ip_reassembly + DIRS-$(CONFIG_RTE_IP_FRAG) += ip_fragmentation + DIRS-y += ipv4_multicast +@@ -73,6 +73,6 @@ DIRS-$(CONFIG_RTE_LIBRTE_VHOST) += vhost + DIRS-$(CONFIG_RTE_LIBRTE_XEN_DOM0) += vhost_xen + DIRS-y += vmdq + DIRS-y += vmdq_dcb +-DIRS-$(CONFIG_RTE_LIBRTE_POWER) += vm_power_manager ++#DIRS-$(CONFIG_RTE_LIBRTE_POWER) += vm_power_manager + + include $(RTE_SDK)/mk/rte.extsubdir.mk diff --git a/dpdk.spec b/dpdk.spec index 7746388..37e7ee7 100644 --- a/dpdk.spec +++ b/dpdk.spec @@ -1,19 +1,23 @@ # Add option to build as static libraries (--without shared) %bcond_without shared +# Add option to build without examples +%bcond_without examples # Add option to build without tools %bcond_without tools # Add option to build the PDF documentation separately (--with pdfdoc) %bcond_with pdfdoc + Name: dpdk Version: 2.1.0 -Release: 2%{?dist} +Release: 3%{?dist} URL: http://dpdk.org Source: http://dpdk.org/browse/dpdk/snapshot/dpdk-%{version}.tar.gz Patch1: enic-pun-fix.patch Patch2: dpdk-2.1-dtneeded.patch Patch3: dpdk-dtneeded-2.2-accepted.patch +Patch4: dpdk-2.1-examples.patch Summary: Set of libraries and drivers for fast packet processing @@ -80,6 +84,16 @@ Requires: kmod pciutils findutils iproute %{summary} %endif +%if %{with examples} +%package examples +Summary: Data Plane Development Kit example applications +BuildRequires: libvirt-devel + +%description examples +Example applications utilizing the Data Plane Development Kit, such +as L2 and L3 forwarding. +%endif + %define sdkdir %{_libdir}/%{name}-%{version}-sdk %define docdir %{_docdir}/%{name}-%{version} @@ -88,6 +102,7 @@ Requires: kmod pciutils findutils iproute %patch1 -p2 -z .enic %patch2 -p1 -z .dtneeded %patch3 -p1 -z .accepted +%patch4 -p1 -z .examples %build # set up a method for modifying the resulting .config file @@ -133,6 +148,10 @@ setconf CONFIG_RTE_BUILD_SHARED_LIB y make V=1 O=%{target} %{?_smp_mflags} make V=1 O=%{target} %{?_smp_mflags} doc-api-html doc-guides-html %{?with_pdfdoc: guides-pdf} +%if %{with examples} +make V=1 O=%{target}/examples T=%{target} %{?_smp_mflags} examples +%endif + %install # DPDK's "make install" seems a bit broken -- do things manually... @@ -174,6 +193,16 @@ done cp -p tools/*.py %{buildroot}%{_bindir} %endif +%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 +mkdir -p %{buildroot}%{_datadir}/%{name}-%{version} +cp -a examples/ %{buildroot}%{_datadir}/%{name}-%{version} +%endif + # 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 @@ -220,6 +249,7 @@ install -m 644 ${comblib} %{buildroot}/%{_libdir}/${comblib} # BSD %{_bindir}/* %exclude %{_bindir}/*.py +%exclude %{_bindir}/dpdk_example_* %if %{with shared} %{_libdir}/*.so.* %{_libdir}/*_pmd_*.so @@ -248,7 +278,19 @@ install -m 644 ${comblib} %{buildroot}/%{_libdir}/${comblib} %{_bindir}/*.py %endif +%if %{with examples} +%files examples +%{_bindir}/dpdk_example_* +%exclude %{_bindir}/*.py +%{_datadir}/%{name}-%{version}/examples +%endif + %changelog +* Thu Oct 22 2015 Aaron Conole - 2.1.0-3 +- Include examples binaries +- Enable the Broadcom NetXtreme II 10Gb PMD +- Fix up linkages for the dpdk-devel package + * Wed Sep 30 2015 Aaron Conole - 2.1.0-2 - Re-enable the IGB, IXGBE, I40E PMDs - Bring the Fedora and RHEL packages more in-line.