summaryrefslogtreecommitdiffstats
path: root/zfs-modules.spec.in
diff options
context:
space:
mode:
Diffstat (limited to 'zfs-modules.spec.in')
-rw-r--r--zfs-modules.spec.in280
1 files changed, 280 insertions, 0 deletions
diff --git a/zfs-modules.spec.in b/zfs-modules.spec.in
new file mode 100644
index 000000000..93129b3d7
--- /dev/null
+++ b/zfs-modules.spec.in
@@ -0,0 +1,280 @@
+# The following block is used to allow the source RPM to be rebuilt
+# against specific kernels. It is preferable that rpmbuild define the
+# require_kver, require_kdir, require_obj constants for us, but if it does not
+# not we attempt to determine the correct values based on your distro.
+
+# kdir: Full path to the kernel source headers
+# kobj: Full path to the kernel build objects
+# kver: Kernel version
+# kpkg: Kernel package name
+# kdevpkg: Kernel devel package name
+# kverpkg: Kernel package version
+
+%if %{defined require_kver}
+%define kver %{require_kver}
+%endif
+
+%if %{defined require_kdir}
+%define kdir %{require_kdir}
+%endif
+
+%if %{defined require_kobj}
+%define kobj %{require_kobj}
+%endif
+
+# SLES:
+%if %{defined suse_version}
+ %if %{undefined kver}
+ %ifarch ppc64
+ %define kverextra ppc64
+ %else
+ %define kverextra default
+ %endif
+
+ %if %{suse_version} >= 1100
+ %define klnk %{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
+ %define krelease %{klnk}/include/config/kernel.release
+ %else
+ %define klnk %{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
+ %define krelease %{klnk}/.kernelrelease
+ %endif
+
+ %define kver %((echo X; %{__cat} %{krelease} 2>/dev/null)|tail -1)
+ %endif
+
+ %if %{undefined kverextra}
+ %define kverextra %(echo %{kver} | cut -f3 -d'-')
+ %endif
+
+ %define kpkg kernel-%{kverextra}
+ %define kdevpkg kernel-source
+ %define kverpkg %(echo %{kver} | %{__sed} -e 's/-%{kverextra}//g')
+
+ # The kernel and rpm versions do not strictly match under SLES11
+ # e.g. kernel version 2.6.27.19-5 != rpm version 2.6.27.19-5.1
+ %if %{suse_version} >= 1100
+ %define koppkg >=
+ %else
+ %define koppkg =
+ %endif
+
+ %if %{undefined kdir}
+ %define kdir %{_usrsrc}/linux-%{kverpkg}
+ %endif
+ %if %{undefined kobj}
+ %define kobj %{kdir}-obj/%{_target_cpu}/%{kverextra}
+ %endif
+%else
+
+# CHAOS 4.x/5.x:
+%if %{defined ch4} || %{defined ch5}
+ %if %{undefined kver}
+ %define klnk %{_usrsrc}/kernels/*/include/config
+ %define kver %((echo X; %{__cat} %{klnk}/kernel.release
+ 2>/dev/null) | tail -1)
+ %endif
+ %define kpkg chaos-kernel
+ %define kdevpkg chaos-kernel-devel
+ %define kverpkg %{kver}
+ %define koppkg =
+ %if %{undefined kdir}
+ %define kdir %{_usrsrc}/kernels/%{kver}
+ %endif
+ %if %{undefined kobj}
+ %define kobj %{kdir}
+ %endif
+%else
+
+# RHEL 5.x/6.x:
+%if %{defined el5} || %{defined el6}
+ %if %{undefined kver}
+ %define klnk %{_usrsrc}/kernels/*/include/config
+ %define kver %((echo X; %{__cat} %{klnk}/kernel.release
+ 2>/dev/null) | tail -1)
+ %endif
+ %define kpkg kernel
+ %define kdevpkg kernel-devel
+ %if %{defined el6}
+ %define kverpkg %(echo %{kver} | %{__sed} -e 's/.%{_target_cpu}//g')
+ %else
+ %define kverpkg %{kver}
+ %endif
+ %define koppkg =
+ %if %{undefined kdir}
+ %define kdir %{_usrsrc}/kernels/%{kver}-%{_target_cpu}
+ %endif
+ %if %{undefined kobj}
+ %define kobj %{kdir}
+ %endif
+%else
+
+# Fedora:
+%if %{defined fedora}
+ %if %{undefined kver}
+ %define klnk %{_usrsrc}/kernels/*/include/config
+ %define kver %((echo X; %{__cat} %{klnk}/kernel.release
+ 2>/dev/null) | tail -1)
+ %endif
+ %define kpkg kernel
+ %define kdevpkg kernel-devel
+ %define kverpkg %(echo %{kver} | %{__sed} -e 's/.%{_target_cpu}//g')
+ %define koppkg =
+ %if %{undefined kdir}
+ %define kdir %{_usrsrc}/kernels/%{kver}
+ %endif
+ %if %{undefined kobj}
+ %define kobj %{kdir}
+ %endif
+%else
+
+# Unsupported distro:
+ %if %{undefined kver}
+ %define kver %(uname -r)
+ %endif
+ %define kverpkg %{kver}
+ %if %{undefined kdir}
+ %define kdir /lib/modules/%{kver}/build
+ %endif
+ %if %{undefined kobj}
+ %define kobj %{kdir}
+ %endif
+
+%endif
+%endif
+%endif
+%endif
+
+# spldir: Full path to the spl source headers
+# splobj: Full path to the spl build objects
+# splver: Spl version
+# splpkg: Spl package name
+# spldevpkg: Spl devel package name
+# splverpkg: Spl package version
+
+%if %{defined require_splver}
+%define splver %{require_splver}
+%endif
+
+%if %{defined require_spldir}
+%define spldir %{require_spldir}
+%endif
+
+%if %{defined require_splobj}
+%define splobj %{require_splobj}
+%endif
+
+%if %{undefined splver}
+ %define spllnk %{_usrsrc}/spl-*/%{kver}
+ %define splver %((echo X; %{__cat} %{spllnk}/spl.release
+ 2>/dev/null) | tail -1)
+%endif
+%define splpkg spl-modules
+%define spldevpkg spl-modules-devel
+%define splverpkg %{splver}
+%if %{undefined spldir}
+ %define spldir %{_usrsrc}/spl-%{splver}/%{kver}
+%endif
+%if %{undefined splobj}
+ %define splobj %{spldir}/module
+%endif
+
+
+# Distro agnostic:
+%define name @PACKAGE@-modules
+%define version @VERSION@
+%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. This means
+# the source RPM must never specify a required kernel version, but the
+# final RPM should be keyed to the kernel version it was built against.
+%if %{defined build_src_rpm}
+%define release @ZFS_META_RELEASE@
+%if %{defined kpkg}
+%define krequires %{kpkg}
+%endif
+%define splrequires %{splpkg}
+%else
+%define relext %(echo %{kverpkg} | %{__sed} -e 's/-/_/g')
+%define release @ZFS_META_RELEASE@_%{relext}
+%if %{defined kpkg}
+%define krequires %{kpkg} %{koppkg} %{kverpkg}
+%endif
+%define splrequires %{splpkg} = %{splverpkg}
+%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} -un)
+Source: @PACKAGE@-%{version}.tar.gz
+%if %{defined krequires}
+Requires: %{krequires}
+%endif
+%if %{defined kdevpkg}
+BuildRequires: %{kdevpkg}
+%endif
+Requires: %{splrequires}
+BuildRequires: %{spldevpkg}
+
+%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
+%if %{defined krequires}
+Requires: %{krequires}
+%endif
+Requires: %{splrequires}
+%if %{defined kdevpkg}
+BuildRequires: %{kdevpkg}
+%endif
+BuildRequires: %{spldevpkg}
+
+%description devel
+The %{name}-devel package contains the kernel header files and
+Module.symvers symbols needed for building additional modules
+which use %{name}.
+
+%prep
+%setup -n @PACKAGE@-%{version}
+%build
+%configure --with-linux=%{kdir} --with-linux-obj=%{kobj} \
+ --with-spl=%{spldir} --with-spl-obj=%{splobj} \
+ --with-config=kernel
+make
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make DESTDIR=$RPM_BUILD_ROOT install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-, root, root)
+/lib/modules/*
+
+%files devel
+%defattr(-,root,root)
+%{_prefix}/src/*
+
+%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