Add RHEL style kmod packages

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>
This commit is contained in:
Brian Behlendorf 2015-03-27 14:23:27 -07:00
parent 72998c2c9d
commit fade6b00b6
8 changed files with 116 additions and 2 deletions

View 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])

View 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

View File

@ -1 +1 @@
SUBDIRS = generic
SUBDIRS = generic redhat

3
rpm/redhat/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
/spl-dkms.spec
/spl-kmod.spec
/spl.spec

1
rpm/redhat/Makefile.am Normal file
View File

@ -0,0 +1 @@
EXTRA_DIST = spl.spec.in spl-kmod.spec.in spl-dkms.spec.in

1
rpm/redhat/spl-dkms.spec.in Symbolic link
View File

@ -0,0 +1 @@
../generic/spl-dkms.spec.in

104
rpm/redhat/spl-kmod.spec.in Normal file
View File

@ -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}

1
rpm/redhat/spl.spec.in Symbolic link
View File

@ -0,0 +1 @@
../generic/spl.spec.in