]> git.proxmox.com Git - mirror_spl.git/blobdiff - spl-modules.spec.in
Change spl-kmod-devel install path
[mirror_spl.git] / spl-modules.spec.in
index 83955da8ab594a94ed47e2fce51c2f7577d97004..d1315a27b165162f85675e266c446bfa8a4b9693 100644 (file)
  %endif
 %endif
 
+# Set using 'rpmbuild ... --with kernel-dkms ...', defaults to disabled.
+%if %{defined _with_kernel_dkms}
+ %define with_kernel_dkms 1
+%else
+ %if %{defined _without_kernel_dkms}
+  %define with_kernel_dkms 0
+ %else
+  %define with_kernel_dkms 0
+ %endif
+%endif
+
 # Set using 'rpmbuild ... --with debug ...', defaults to disabled.
 %if %{defined _with_debug}
  %define kdebug --enable-debug
 
  %define kpkg_kern       kernel-%{kverextra}
  %define kpkg_dbug       %{nil}
+ %define kpkg_dkms       dkms
 
  %define kdevpkg_kern    kernel-source
  %define kdevpkg_dbug    %{nil}
+ %define kdevpkg_dkms    dkms
 
  %define kverpkg_kern    %(echo %{kver_kern} | %{__sed} -e 's/-%{kverextra}//g')
  %define kverpkg_dbug    %{nil}
+ %define kverpkg_dkms    2.2.0.2
 
  # 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
  %endif
 %else
 
-# CHAOS 4.x:
-%if %{defined ch4}
- %if %{undefined kver}
-  %define klnk           %{_usrsrc}/kernels/*/include/config
-  %define kver_kern      %((echo X; %{__cat} %{klnk}/kernel.release
-                            2>/dev/null) | tail -1)
-  %define kver_dbug      %{nil}
- %else
-  %define kver_kern      %{kver}
-  %define kver_dbug      %{nil}
- %endif
-
- %define kpkg_kern       chaos-kernel
- %define kpkg_dbug       %{nil}
-
- %define kdevpkg_kern    chaos-kernel-devel
- %define kdevpkg_dbug    %{nil}
-
- %define kverpkg_kern    %{kver_kern}
- %define kverpkg_dbug    %{nil}
-
- %define koppkg          =
-
- %if %{undefined kdir}
-  %define kdir_kern      %{_usrsrc}/kernels/%{kver_kern}
-  %define kdir_dbug      %{nil}
- %else
-  %define kdir_kern      %{kdir}
-  %define kdir_dbug      %{nil}
- %endif
-
- %if %{undefined kobj}
-  %define kobj_kern      %{kdir_kern}
-  %define kobj_dbug      %{nil}
- %else
-  %define kobj_kern      %{kobj}
-  %define kobj_dbug      %{nil}
- %endif
-%else
-
 # RHEL 5.x/6.x, CHAOS 5.x:
 %if %{defined el5} || %{defined el6} || %{defined ch5}
  %if %{undefined kver}
 
  %define kpkg_kern       kernel
  %define kpkg_dbug       kernel-debug
+ %define kpkg_dkms       dkms
 
  %define kdevpkg_kern    kernel-devel
  %define kdevpkg_dbug    kernel-debug-devel
+ %define kdevpkg_dkms    dkms
 
+ %define kverpkg_dkms    2.2.0.2
  %if %{defined el6} || %{defined ch5}
   %define kverpkg_kern   %(echo %{kver_kern} | %{__sed} -e 's/.%{_target_cpu}//g')
   %define kverpkg_dbug   %(echo %{kver_dbug} | %{__sed} -e 's/.%{_target_cpu}//g' | %{__sed} -e 's/.debug//g')
 
  %define kpkg_kern       kernel
  %define kpkg_dbug       kernel-debug
+ %define kpkg_dkms       dkms
 
  %define kdevpkg_kern    kernel-devel
  %define kdevpkg_dbug    kernel-debug-devel
+ %define kdevpkg_dkms    dkms
 
+ %define kverpkg_dkms    2.2.0.2
  %define kverpkg_kern    %(echo %{kver_kern} | %{__sed} -e 's/.%{_target_cpu}//g')
  %define kverpkg_dbug    %(echo %{kver_dbug} | %{__sed} -e 's/.%{_target_cpu}//g' | %{__sed} -e 's/.debug//g')
 
 
  %define kverpkg_kern    %{kver_kern}
  %define kverpkg_dbug    %{nil}
+ %define kverpkg_dkms    %{nil}
 
  %if %{undefined kdir}
   %define kdir_kern      /lib/modules/%{kver_kern}/build
 %endif
 %endif
 %endif
-%endif
 
 # Distro agnostic:
 %define name             @PACKAGE@-modules
 %if %{defined build_src_rpm}
 %define rel_kern         @SPL_META_RELEASE@
 %define rel_dbug         @SPL_META_RELEASE@
+%define rel_dkms         @SPL_META_RELEASE@
 %if %{defined kpkg_kern}
 %define req_kern         %{kpkg_kern}
 %endif
 %if %{defined kpkg_dbug}
 %define req_dbug         %{kpkg_dbug}
 %endif
+%if %{defined kpkg_dkms}
+%define req_dkms         %{kpkg_dkms}
+%endif
 %if %{defined kdevpkg_kern}
 %define devreq_kern      %{kdevpkg_kern}
 %endif
 %define relext_dbug      %(echo %{kverpkg_dbug} | %{__sed} -e 's/-/_/g')
 %define rel_kern         @SPL_META_RELEASE@_%{relext_kern}
 %define rel_dbug         @SPL_META_RELEASE@_%{relext_dbug}
+%define rel_dkms         @SPL_META_RELEASE@
 %if %{defined kpkg_kern}
 %define req_kern         %{kpkg_kern} %{koppkg} %{kverpkg_kern}
 %endif
 %if %{defined kpkg_dbug}
 %define req_dbug         %{kpkg_dbug} %{koppkg} %{kverpkg_dbug}
 %endif
+%if %{defined kpkg_dkms}
+%define req_dkms         %{kpkg_dkms} >= %{kverpkg_dkms}
+%endif
 %if %{defined kdevpkg_kern}
 %define devreq_kern      %{kdevpkg_kern} %{koppkg} %{kverpkg_kern}
 %endif
@@ -438,6 +426,30 @@ The %{name}-debug-devel package contains the header files and
 Module{s}.symvers symbols needed for building additional modules which
 use %{name}-debug.
 
+%endif
+%if %{?with_kernel_dkms}
+
+%package dkms
+Summary:         Solaris Porting Layer Modules (DKMS)
+Group:           Utilities/System
+Release:         %{rel_dkms}
+Provides:        %{name}
+BuildArch:       noarch
+%if %{defined req_dkms}
+Requires:        %{req_dkms}
+%endif
+%if %{defined kdevpkg_dkms}
+BuildRequires:   %{kdevpkg_dkms}
+%endif
+
+%description dkms
+The %{name}-dkms package contains all the necessary pieces to build and
+install Solaris Porting Layer (SPL) kernel modules with Dynamic Kernel
+Modules Support (DKMS). The SPL modules emulate Solaris style primatives
+in the the linux kernel. They include, but are not limited to: atomic,
+condvar, debug, error, memory, kobject, kstat, mutex, rwlock, taskq,
+thread, time, and vnode APIs.
+
 %endif
 
 %prep
@@ -462,6 +474,16 @@ make DESTDIR=$RPM_BUILD_ROOT install
 make
 make DESTDIR=$RPM_BUILD_ROOT install
 
+%endif
+%if %{?with_kernel_dkms}
+
+%configure --with-config=kernel \
+           %{kdebug} %{kdebug_log} %{kdebug_kmem} %{kdebug_kmem_tracking}
+make dist
+mkdir -p $RPM_BUILD_ROOT/%{_prefix}/src
+tar -xf @PACKAGE@-%{version}.tar.gz -C $RPM_BUILD_ROOT/%{_prefix}/src
+cp -af dkms.conf $RPM_BUILD_ROOT/%{_prefix}/src/@PACKAGE@-%{version}
+
 %endif
 
 %clean
@@ -475,7 +497,7 @@ rm -rf $RPM_BUILD_ROOT
 
 %files devel
 %defattr(-,root,root)
-%{_prefix}/src/*/%{kver_kern}/*
+%{_prefix}/src/*/%{kver_kern}
 
 %post
 if [ -f /boot/System.map-%{kver_kern} ]; then
@@ -491,6 +513,10 @@ else
        /sbin/depmod -a || exit 0
 fi
 
+%postun devel
+rmdir %{_prefix}/src/@PACKAGE@-%{version}-@SPL_META_RELEASE@ 2>/dev/null
+exit 0
+
 %endif
 %if %{?with_kernel_debug}
 
@@ -500,7 +526,7 @@ fi
 
 %files debug-devel
 %defattr(-,root,root)
-%{_prefix}/src/*/%{kver_dbug}/*
+%{_prefix}/src/*/%{kver_dbug}
 
 %post debug
 if [ -f /boot/System.map-%{kver_dbug} ]; then
@@ -516,4 +542,35 @@ else
        /sbin/depmod -a || exit 0
 fi
 
+%postun debug-devel
+rmdir %{_prefix}/src/@PACKAGE@-%{version}-@SPL_META_RELEASE@ 2>/dev/null
+exit 0
+
+%endif
+%if %{?with_kernel_dkms}
+
+%files dkms
+%defattr(-,root,root)
+%{_prefix}/src/@PACKAGE@-%{version}
+
+%post dkms
+for POSTINST in %{_prefix}/lib/dkms/common.postinst; do
+       if [ -f $POSTINST ]; then
+               $POSTINST @PACKAGE@ %{version}
+               exit $?
+       fi
+       echo "WARNING: $POSTINST does not exist."
+done
+echo -e "ERROR: DKMS version is too old and @PACKAGE@ was not"
+echo -e "built with legacy DKMS support."
+echo -e "You must either rebuild @PACKAGE@ with legacy postinst"
+echo -e "support or upgrade DKMS to a more current version."
+exit 1
+
+%preun dkms
+echo -e
+echo -e "Uninstall of @PACKAGE@ module (version %{version}) beginning:"
+dkms remove -m @PACKAGE@ -v %{version} --all --rpm_safe_upgrade
+exit 0
+
 %endif