]> granicus.if.org Git - spl/commitdiff
Add RHEL style kmod packages
authorBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 27 Mar 2015 21:23:27 +0000 (14:23 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 27 Mar 2015 21:42:04 +0000 (14:42 -0700)
Provide a Redhat specific spl-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 SPL 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 <behlendorf1@llnl.gov>
config/spl-build.m4
configure.ac
rpm/Makefile.am
rpm/redhat/.gitignore [new file with mode: 0644]
rpm/redhat/Makefile.am [new file with mode: 0644]
rpm/redhat/spl-dkms.spec.in [new symlink]
rpm/redhat/spl-kmod.spec.in [new file with mode: 0644]
rpm/redhat/spl.spec.in [new symlink]

index 058866dd6caadace9a26b84783c39687c0a6c8f8..3bfc1e2325e25242d28d0ac43c6b96db8b2da513 100644 (file)
@@ -229,7 +229,7 @@ AC_DEFUN([SPL_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])
index 2aee70b712f69da00cc21520c3115bb36452ea4f..efeb243cba692f6b5fc751de65259378fb81b512 100644 (file)
@@ -70,6 +70,10 @@ AC_CONFIG_FILES([
        include/vm/Makefile
        scripts/Makefile
        rpm/Makefile
+       rpm/redhat/Makefile
+       rpm/redhat/spl.spec
+       rpm/redhat/spl-kmod.spec
+       rpm/redhat/spl-dkms.spec
        rpm/generic/Makefile
        rpm/generic/spl.spec
        rpm/generic/spl-kmod.spec
index b564eeefd9f4fd7f750b26c9c6c2a81378e1a791..f2cf72cef13ce964141811d9ba5fe472f46cc179 100644 (file)
@@ -1 +1 @@
-SUBDIRS = generic
+SUBDIRS = generic redhat
diff --git a/rpm/redhat/.gitignore b/rpm/redhat/.gitignore
new file mode 100644 (file)
index 0000000..67129ff
--- /dev/null
@@ -0,0 +1,3 @@
+/spl-dkms.spec
+/spl-kmod.spec
+/spl.spec
diff --git a/rpm/redhat/Makefile.am b/rpm/redhat/Makefile.am
new file mode 100644 (file)
index 0000000..da6c4ab
--- /dev/null
@@ -0,0 +1 @@
+EXTRA_DIST = spl.spec.in spl-kmod.spec.in spl-dkms.spec.in
diff --git a/rpm/redhat/spl-dkms.spec.in b/rpm/redhat/spl-dkms.spec.in
new file mode 120000 (symlink)
index 0000000..900f524
--- /dev/null
@@ -0,0 +1 @@
+../generic/spl-dkms.spec.in
\ No newline at end of file
diff --git a/rpm/redhat/spl-kmod.spec.in b/rpm/redhat/spl-kmod.spec.in
new file mode 100644 (file)
index 0000000..3935285
--- /dev/null
@@ -0,0 +1,104 @@
+%bcond_with     debug
+%bcond_with     debug_log
+%bcond_with     debug_kmem
+%bcond_with     debug_kmem_tracking
+%bcond_with     atomic_spinlocks
+
+Name:           @PACKAGE@-kmod
+Version:        @VERSION@
+Release:        @RELEASE@%{?dist}
+
+Summary:        Kernel module(s)
+Group:          System Environment/Kernel
+License:        GPLv2+
+URL:            http://zfsonlinux.org/
+BuildRequires:  %kernel_module_package_buildreqs
+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:       @PACKAGE@ = %{version}\n\
+Conflicts:      @PACKAGE@-dkms\n\n" > %{_sourcedir}/kmod-preamble)
+
+%description
+This package contains the kernel modules required to emulate
+several interfaces provided by the Solaris kernel.
+
+%define kmod_name spl
+%define debug_package %{nil}
+
+%kernel_module_package -n %{kmod_name} -p %{_sourcedir}/kmod-preamble
+
+%define ksrc %{_usrsrc}/kernels/%{kverrel}
+%define kobj %{ksrc}
+
+%package -n kmod-%{kmod_name}-devel
+Summary:        SPL kernel module(s) devel common
+Group:          System Environment/Kernel
+
+%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_log}
+%define debug_log --enable-debug-log
+%else
+%define debug_log --disable-debug-log
+%endif
+
+%if %{with debug_kmem}
+%define debug_kmem --enable-debug-kmem
+%else
+%define debug_kmem --disable-debug-kmem
+%endif
+
+%if %{with debug_kmem_tracking}
+%define debug_kmem_tracking --enable-debug-kmem-tracking
+%else
+%define debug_kmem_tracking --disable-debug-kmem-tracking
+%endif
+
+%if %{with atomic_spinlocks}
+%define atomic_spinlocks --enable-atomic-spinlocks
+%else
+%define atomic_spinlocks --disable-atomic-spinlocks
+%endif
+
+%setup -n %{kmod_name}-%{version}
+%build
+%configure \
+        --with-config=kernel \
+        --with-linux=%{ksrc} \
+        --with-linux-obj=%{kobj} \
+        %{debug} \
+        %{debug_log} \
+        %{debug_kmem} \
+        %{debug_kmem_tracking} \
+        %{atomic_spinlocks}
+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/spl.spec.in b/rpm/redhat/spl.spec.in
new file mode 120000 (symlink)
index 0000000..d3276f0
--- /dev/null
@@ -0,0 +1 @@
+../generic/spl.spec.in
\ No newline at end of file