Skip to content

Commit

Permalink
Add RHEL style kmod packages
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
behlendorf committed Mar 27, 2015
1 parent 72998c2 commit fade6b0
Show file tree
Hide file tree
Showing 8 changed files with 116 additions and 2 deletions.
2 changes: 1 addition & 1 deletion config/spl-build.m4
Original file line number Diff line number Diff line change
Expand Up @@ -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])
Expand Down
4 changes: 4 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion rpm/Makefile.am
Original file line number Diff line number Diff line change
@@ -1 +1 @@
SUBDIRS = generic
SUBDIRS = generic redhat
3 changes: 3 additions & 0 deletions rpm/redhat/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/spl-dkms.spec
/spl-kmod.spec
/spl.spec
1 change: 1 addition & 0 deletions rpm/redhat/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
EXTRA_DIST = spl.spec.in spl-kmod.spec.in spl-dkms.spec.in
1 change: 1 addition & 0 deletions rpm/redhat/spl-dkms.spec.in
104 changes: 104 additions & 0 deletions rpm/redhat/spl-kmod.spec.in
Original file line number Diff line number Diff line change
@@ -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: https://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 change: 1 addition & 0 deletions rpm/redhat/spl.spec.in

0 comments on commit fade6b0

Please sign in to comment.