aboutsummaryrefslogtreecommitdiffstats
path: root/zfs.spec.in
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2009-03-10 11:10:50 -0700
committerBrian Behlendorf <[email protected]>2009-03-10 11:10:50 -0700
commitb1b76c66347a84f9d0147f8a775f0a04cf532de9 (patch)
tree60ef3694a79fd7d9c71c5fc0285b3614242cbb9a /zfs.spec.in
parentb57a2833366257e8cfccc58bfc410e8fd40a9aaa (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.in109
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