diff options
author | Brian Behlendorf <[email protected]> | 2009-03-10 11:10:50 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2009-03-10 11:10:50 -0700 |
commit | b1b76c66347a84f9d0147f8a775f0a04cf532de9 (patch) | |
tree | 60ef3694a79fd7d9c71c5fc0285b3614242cbb9a /zfs.spec.in | |
parent | b57a2833366257e8cfccc58bfc410e8fd40a9aaa (diff) |
Build system and packaging (RPM support) (Part 1)
An update to the build system to properly support all commonly
used Makefile targets these include:
make all # Build everything
make install # Install everything
make clean # Clean up build products
make distclean # Clean up everything
make dist # Create package tarball
make srpm # Create package source RPM
make rpm # Create package binary RPMs
make tags # Create ctags and etags for everything
Extra care was taken to ensure that the source RPMs are fully
rebuildable against Fedora/RHEL/Chaos kernels. To build binary
RPMs from the source RPM for your system simply run:
rpmbuild --rebuild zfs-x.y.z-1.src.rpm
This will produce two binary RPMs with correct 'requires'
dependencies for your kernel. One will contain all zfs modules
and support utilities, the other is a devel package for compiling
additional kernel modules which are dependant on the zfs.
zfs-x.y.z-1_<kernel version>.x86_64.rpm
zfs-devel-x.y.2-1_<kernel version>.x86_64.rpm
Diffstat (limited to 'zfs.spec.in')
-rw-r--r-- | zfs.spec.in | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/zfs.spec.in b/zfs.spec.in new file mode 100644 index 000000000..f4e598c12 --- /dev/null +++ b/zfs.spec.in @@ -0,0 +1,109 @@ +# The following block is used to allow the source RPM to be rebuilt +# against arbitrary kernels. It ensure the release name is correct +# and the proper build/install requires are set. +%if 0%{?require_kver:1} +%define kver %{require_kver} +%else +%define _kdir %((echo X; ls -1d /usr/src/kernels/* /usr/src/linux-* 2>/dev/null)|sed -e 's/linux-//' | tail -1) +%define kver %(basename %{_kdir}) +%endif + +# Each distro has its own kernel package naming convention. +%if 0%{?ch4} +%define kstr chaos-kernel +%define kdev chaos-kernel-devel +%define kdir /usr/src/kernels/%{kver} +%else +%define kstr kernel +%define kdev kernel-devel +%define kdir /usr/src/kernels/%{kver} +%endif + +%define debug_package %{nil} + +# The kernel version should only be appended to a binary RPM. +# When building a source RPM it must be kernel version agnostic. +%define name @PACKAGE@ +%define version @VERSION@ + +%if %{?build_src_rpm:1}0 +%define release @ZFS_META_RELEASE@ +%else +%define release @ZFS_META_RELEASE@_%(echo %{kver} | sed -e 's/-/_/g') +%endif + +%if 0%{?require_kver:1} +%define k_buildrequires %{kdev}=%{kver} +%define spl_buildrequires spl-devel>=@VERSION@ +%else +%define k_buildrequires %{kdev} +%define spl_buildrequires spl-devel +%endif + +Summary: ZFS File System +Group: Utilities/System +Name: %{name} +Version: %{version} +Release: %{release} +License: @LICENSE@ +URL: git://eris.llnl.gov/zfs.git +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n) +Source: %{name}-%{version}.tar.gz +Requires: %{kstr} = %{kver} +Requires: spl >= @VERSION@ +BuildRequires: %{k_buildrequires} +BuildRequires: %{spl_buildrequires} + +%description +The %{name} package contains kernel modules and support utilities for +the %{name} file system. + +%package devel +Summary: ZFS File System Headers and Symbols +Group: Development/Libraries +Requires: %{kstr} = %{kver} +Requires: spl >= @VERSION@ +BuildRequires: %{k_buildrequires} +BuildRequires: %{spl_buildrequires} + +%description devel +The %{name}-devel package contains the header files and Module.symvers +symbols needed for building additional modules which use %{name}. + +%prep +%setup +%build +%configure --includedir=%{kdir}/include/zfs --with-linux=%{kdir} +make + +%install +rm -rf $RPM_BUILD_ROOT +make DESTDIR=$RPM_BUILD_ROOT install + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-, root, root) +%doc AUTHORS ChangeLog COPYING COPYRIGHT DISCLAIMER GIT +%doc OPENSOLARIS.LICENSE README TODO ZFS.RELEASE +%{_sbindir}/* +/lib/modules/* + +%files devel +%defattr(-,root,root) +%{kdir}/include/zfs/* + +%post +if [ -f /boot/System.map-%{kver} ]; then + depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0 +else + depmod -ae %{kver} || exit 0 +fi + +%postun +if [ -f /boot/System.map-%{kver} ]; then + depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0 +else + depmod -ae %{kver} || exit 0 +fi |