From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id E999E5950 for ; Mon, 24 Feb 2014 18:05:09 +0100 (CET) Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OH6HU5005654 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 24 Feb 2014 12:06:33 -0500 Received: from x220.localdomain (ovpn-113-201.phx2.redhat.com [10.3.113.201]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with SMTP id s1OGq9gP002458; Mon, 24 Feb 2014 11:52:11 -0500 Date: Mon, 24 Feb 2014 08:52:08 -0800 From: Chris Wright To: Thomas Monjalon Message-ID: <20140224165208.GF27503@x220.localdomain> References: <1391529271-24606-1-git-send-email-thomas.monjalon@6wind.com> <1391529271-24606-4-git-send-email-thomas.monjalon@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391529271-24606-4-git-send-email-thomas.monjalon@6wind.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 Cc: dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH 03/16] pkg: add recipe for RPM X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Feb 2014 17:05:10 -0000 * Thomas Monjalon (thomas.monjalon@6wind.com) wrote: > Packages can be built with: > RPM_BUILD_NCPUS=8 rpmbuild -ta dpdk-1.5.2r2.tar.gz > > There are packages for runtime, static libraries and development. > Once devel package installed, it can be used like this: > make -C /usr/share/dpdk/examples/helloworld RTE_SDK=/usr/share/dpdk > > Signed-off-by: Thomas Monjalon > --- > pkg/rpm.spec | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ This should be dpdk.spec > 1 file changed, 143 insertions(+) > create mode 100644 pkg/rpm.spec > > diff --git a/pkg/rpm.spec b/pkg/rpm.spec > new file mode 100644 > index 0000000..d806d55 > --- /dev/null > +++ b/pkg/rpm.spec > @@ -0,0 +1,143 @@ > +Name: dpdk > +Version: 1.5.2r1 > +Release: 1 Just wanted to be sure the NVR properly increases. I verified using "rpmdev-vercmp" and it looks fine. > +Packager: packaging@6wind.com > +URL: http://dpdk.org > +Source: http://dpdk.org/browse/dpdk/snapshot/dpdk-%{version}.tar.gz > + > +Summary: Intel(r) Data Plane Development Kit > +Group: System Environment/Libraries > +License: BSD and LGPLv2 and GPLv2 > + > +ExclusiveArch: i686, x86_64 > +%define target %{_arch}-default-linuxapp-gcc What is this for? > +%define machine default > + > +BuildRequires: kernel-devel, kernel-headers, doxygen > + > +%description > +Dummy main package. Make only subpackages. I think the core package should have the .so, the -devel package w/ headers, and no -static package. Including a .a file is discouraged in Fedora: https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries because if you need to update the archive, e.g. for a security fix, applications linked w/ the static library will not get fixed w/out a rebuild. > +%package core-runtime perhaps just 'runtime' > +Summary: Intel(r) Data Plane Development Kit core for runtime > +%description core-runtime > +Intel(r) DPDK runtime includes kernel modules, core libraries and tools. > +testpmd application allows to test fast packet processing environments > +on x86 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 core-static > +Requires: %{name}-core-runtime > +Summary: Intel(r) Data Plane Development Kit core as static libraries > +%description core-static > +Intel(r) DPDK static provides static version of the core libraries > +for fast packet processing on x86 platforms. > +More libraries are available as extensions in other packages. We drop this > +%package core-devel name this devel > +Requires: %{name}-core-static > +Summary: Intel(r) Data Plane Development Kit core for development > +%description core-devel > +Intel(r) DPDK devel is a set of makefiles, headers, examples and documentation > +for fast packet processing on x86 platforms. > +More libraries are available as extensions in other packages. Often it's just headers, but makefile, examples, etc are quite useful for showing how to develop a dpdk app > +# debuginfo packaging is broken > +%define debug_package %{nil} Can you add a better comment why it's broken? > +%define destdir %{buildroot}%{_prefix} > +%define moddir /lib/modules/%(uname -r)/extra > +%define datadir %{_datadir}/%{name} > +%define docdir %{_docdir}/%{name} > + > +%prep > +%setup -q > + > +%build > +make O=%{target} T=%{target} config Did you try to update the build system to output into $RPM_BUILD_ROOT directly? It's much preferred compared to the cp/rmdir below > +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=).*,\1y,' %{target}/.config > +make O=%{target} %{?_smp_mflags} > +cp %{target}/lib/*.so %{target} > +sed -ri 's,(RTE_BUILD_SHARED_LIB=).*,\1n,' %{target}/.config > +make O=%{target} %{?_smp_mflags} > +make O=%{target} doc > + > +%install > +rm -rf %{buildroot} > +make O=%{target} DESTDIR=%{destdir} Why make again (IOW, why not in %build section)? > +mkdir -p %{buildroot}%{moddir} > +mv %{destdir}/%{target}/kmod/*.ko %{buildroot}%{moddir} Normally I'd use install command (-d will create directories) > +rmdir %{destdir}/%{target}/kmod > +mkdir -p %{buildroot}%{_sbindir} > +ln -s %{datadir}/tools/igb_uio_bind.py %{buildroot}%{_sbindir}/igb_uio_bind > +mkdir -p %{buildroot}%{_bindir} > +mv %{destdir}/%{target}/app/testpmd %{buildroot}%{_bindir} > +rmdir %{destdir}/%{target}/app > +mv %{destdir}/%{target}/include %{buildroot}%{_includedir} > +mv %{destdir}/%{target}/lib %{buildroot}%{_libdir} > +mv %{destdir}/%{target}/*.so %{buildroot}%{_libdir} > +mkdir -p %{buildroot}%{docdir} > +mv %{destdir}/%{target}/doc/* %{buildroot}%{docdir} > +rmdir %{destdir}/%{target}/doc > +mkdir -p %{buildroot}%{datadir} > +mv %{destdir}/%{target}/.config %{buildroot}%{datadir}/config > +mv %{destdir}/%{target} %{buildroot}%{datadir} > +mv %{destdir}/mk %{buildroot}%{datadir} > +cp -a examples %{buildroot}%{datadir} > +cp -a tools %{buildroot}%{datadir} > +ln -s %{datadir}/config %{buildroot}%{datadir}/%{target}/.config > +ln -s %{_includedir} %{buildroot}%{datadir}/%{target}/include > +ln -s %{_libdir} %{buildroot}%{datadir}/%{target}/lib > + > +%files core-runtime > +%dir %{datadir} > +%{datadir}/config > +%{datadir}/tools > +%{moddir}/* > +%{_sbindir}/* > +%{_bindir}/* > +%{_libdir}/*.so > + > +%files core-static > +%{_libdir}/*.a > + > +%files core-devel > +%{_includedir}/* > +%{datadir}/mk > +%{datadir}/%{target} > +%{datadir}/examples > +%doc %{docdir}