aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2015-03-25 16:59:17 -0700
committerBrian Behlendorf <[email protected]>2015-03-27 14:41:48 -0700
commitee2ca1db28a0910770b8bd504cf021199f583047 (patch)
tree02d98a8a3b2756a662f24f3fc7d0db61536a5216
parentd820d2e9cf27678dd07b86f8fdd4635162371a37 (diff)
Add RHEL style kmod packages
Provide a Redhat specific zfs-kmod.spec file which uses the old style kmods (not kmods2) packaging. By using the provided kmodtool script packages can be built which support weak modules. This allows for the kernel to be updated without having to rebuild the ZFS kernel modules. Packages for RHEL/Centos/SL/TOSS which use this spec file can by built as follows: $ ./configure --with-spec=redhat $ make rpms Signed-off-by: Brian Behlendorf <[email protected]>
-rw-r--r--config/zfs-build.m42
-rw-r--r--configure.ac4
-rw-r--r--rpm/Makefile.am2
-rw-r--r--rpm/redhat/.gitignore3
-rw-r--r--rpm/redhat/Makefile.am1
l---------rpm/redhat/zfs-dkms.spec.in1
-rw-r--r--rpm/redhat/zfs-kmod.spec.in86
l---------rpm/redhat/zfs.spec.in1
8 files changed, 98 insertions, 2 deletions
diff --git a/config/zfs-build.m4 b/config/zfs-build.m4
index 73ba979d1..8d3a37304 100644
--- a/config/zfs-build.m4
+++ b/config/zfs-build.m4
@@ -151,7 +151,7 @@ AC_DEFUN([ZFS_AC_RPM], [
RPM_SPEC_DIR="rpm/generic"
AC_ARG_WITH([spec],
AS_HELP_STRING([--with-spec=SPEC],
- [Spec files 'generic']),
+ [Spec files 'generic|redhat']),
[RPM_SPEC_DIR="rpm/$withval"])
AC_MSG_CHECKING([whether spec files are available])
diff --git a/configure.ac b/configure.ac
index 854af771c..63d0073e9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -134,6 +134,10 @@ AC_CONFIG_FILES([
scripts/zpool-config/Makefile
scripts/common.sh
rpm/Makefile
+ rpm/redhat/Makefile
+ rpm/redhat/zfs.spec
+ rpm/redhat/zfs-kmod.spec
+ rpm/redhat/zfs-dkms.spec
rpm/generic/Makefile
rpm/generic/zfs.spec
rpm/generic/zfs-kmod.spec
diff --git a/rpm/Makefile.am b/rpm/Makefile.am
index b564eeefd..f2cf72cef 100644
--- a/rpm/Makefile.am
+++ b/rpm/Makefile.am
@@ -1 +1 @@
-SUBDIRS = generic
+SUBDIRS = generic redhat
diff --git a/rpm/redhat/.gitignore b/rpm/redhat/.gitignore
new file mode 100644
index 000000000..7f5daafdd
--- /dev/null
+++ b/rpm/redhat/.gitignore
@@ -0,0 +1,3 @@
+/zfs-dkms.spec
+/zfs-kmod.spec
+/zfs.spec
diff --git a/rpm/redhat/Makefile.am b/rpm/redhat/Makefile.am
new file mode 100644
index 000000000..89b13640d
--- /dev/null
+++ b/rpm/redhat/Makefile.am
@@ -0,0 +1 @@
+EXTRA_DIST = zfs.spec.in zfs-kmod.spec.in zfs-dkms.spec.in
diff --git a/rpm/redhat/zfs-dkms.spec.in b/rpm/redhat/zfs-dkms.spec.in
new file mode 120000
index 000000000..ffa051baa
--- /dev/null
+++ b/rpm/redhat/zfs-dkms.spec.in
@@ -0,0 +1 @@
+../generic/zfs-dkms.spec.in \ No newline at end of file
diff --git a/rpm/redhat/zfs-kmod.spec.in b/rpm/redhat/zfs-kmod.spec.in
new file mode 100644
index 000000000..ecc809bc6
--- /dev/null
+++ b/rpm/redhat/zfs-kmod.spec.in
@@ -0,0 +1,86 @@
+%bcond_with debug
+%bcond_with debug_dmu_tx
+
+Name: @PACKAGE@-kmod
+Version: @VERSION@
+Release: @RELEASE@%{?dist}
+
+Summary: Kernel module(s)
+Group: System Environment/Kernel
+License: @ZFS_META_LICENSE@
+URL: http://zfsonlinux.org/
+BuildRequires: %kernel_module_package_buildreqs
+BuildRequires: kmod-spl-devel = %{version}
+Source0: @PACKAGE@-%{version}.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+# Additional dependency information for the kmod sub-package must be specified
+# by generating a preamble text file which kmodtool can append to the spec file.
+%(/bin/echo -e "\
+Requires: spl-kmod\n\
+Requires: @PACKAGE@ = %{version}\n\
+Conflicts: @PACKAGE@-dkms\n\n" > %{_sourcedir}/kmod-preamble)
+
+%description
+This package contains the ZFS kernel modules.
+
+%define kmod_name @PACKAGE@
+%define debug_package %{nil}
+
+%kernel_module_package -n %{kmod_name} -p %{_sourcedir}/kmod-preamble
+
+%define ksrc %{_usrsrc}/kernels/%{kverrel}
+%define kobj %{ksrc}
+%define splsrc %{_usrsrc}/spl-%{version}
+%define splobj %{splsrc}/%{kverrel}
+
+%package -n kmod-%{kmod_name}-devel
+Summary: ZFS kernel module(s) devel common
+Group: System Environment/Kernel
+Requires: kmod-spl-devel = %{version}
+
+%description -n kmod-%{kmod_name}-devel
+This package provides the header files and objects to build kernel modules
+which depend on the spl kernel module.
+
+%prep
+if ! [ -d "%{ksrc}" ]; then
+ echo "Kernel build directory isn't set properly, cannot continue"
+ exit 1
+fi
+
+%if %{with debug}
+%define debug --enable-debug
+%else
+%define debug --disable-debug
+%endif
+
+%if %{with debug_dmu_tx}
+%define debug_dmu_tx --enable-debug-dmu-tx
+%else
+%define debug_dmu_tx --disable-debug-dmu-tx
+%endif
+
+%setup -n %{kmod_name}-%{version}
+%build
+%configure \
+ --with-config=kernel \
+ --with-linux=%{ksrc} \
+ --with-linux-obj=%{kobj} \
+ --with-spl="%{splsrc}" \
+ --with-spl-obj="%{splobj}" \
+ %{debug} \
+ %{debug_dmu_tx}
+make %{?_smp_mflags}
+
+%install
+make install \
+ DESTDIR=${RPM_BUILD_ROOT} \
+ INSTALL_MOD_DIR=extra/%{kmod_name}
+%{__rm} -f %{buildroot}/lib/modules/%{kverrel}/modules.*
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files -n kmod-%{kmod_name}-devel
+%{_usrsrc}/%{kmod_name}-%{version}
diff --git a/rpm/redhat/zfs.spec.in b/rpm/redhat/zfs.spec.in
new file mode 120000
index 000000000..4c8079166
--- /dev/null
+++ b/rpm/redhat/zfs.spec.in
@@ -0,0 +1 @@
+../generic/zfs.spec.in \ No newline at end of file