diff -r 4122b089bbec blcr-0.6.0_b7.spec
--- a/blcr-0.6.0_b7.spec	Sun Sep 09 20:00:43 2007 -0400
+++ b/blcr-0.6.0_b7.spec	Mon Sep 10 06:58:30 2007 -0400
@@ -1,6 +1,6 @@ Name: blcr
 Name: blcr
 Version: 0.6.0_b7
-Release: 3
+Release: 1
 Summary: Berkeley Lab Checkpoint/Restart for Linux
 Url: http://ftg.lbl.gov/checkpoint
 
@@ -21,8 +21,8 @@ Url: http://ftg.lbl.gov/checkpoint
 %define kernel %{?kernel_ver:%{kernel_ver}}%{!?kernel_ver:%(uname -r)}
 
 # Name the kernel modules package w/o dashes in the kernel version:
-%define modsubpkg modules_%(echo %{kernel} | tr - _)
-%define moduledir /lib/modules/%{kernel}/extra
+%define modsubpkg modules_dkms
+#%define moduledir /lib/modules/%{kernel}/%{name}
 
 # Name of the unpacked source directory and stem of the tarball name
 %define distname %{name}-%{version}
@@ -59,7 +59,10 @@ Prereq: /sbin/chkconfig
 Prereq: /sbin/chkconfig
 ExclusiveArch: i386 i486 i586 i686 athlon x86_64 ppc64
 ExclusiveOs: Linux
-Requires: %{name}-modules >= %{version}-%{release}
+Requires: gcc, make
+Requires(post): dkms
+Requires(preun): dkms
+Provides: dkms-blcr = %{version}-%{release}
 
 # DON'T require since many clusters are built w/ non-RPM kernels:
 # BuildPreReq: kernel-source = %{kernel}
@@ -118,54 +121,15 @@ ln -s ../configure .
 # rpmbuild command line
 %configure  \
 	--srcdir=.. \
+	--with-components=util,libcr,include,tests \
 	%{?libdir32:--enable-multilib} \
 	--enable-testsuite \
 	--disable-config-report \
 	 \
-	%{?kernel_src:--with-linux=%{kernel_src}} \
-	%{?kernel_obj:--with-linux-obj=%{kernel_obj}} \
-	%{?kernel_type:--with-kernel-type=%{kernel_type}}
-
-# Check kernel VER/SRC variables against configure result
-LINUX_VER=`make --no-print-directory echoval VARNAME=LINUX_VER`
-LINUX_SRC=`make --no-print-directory echoval VARNAME=LINUX_SRC`
-if [ "$LINUX_VER" != %{kernel} ]; then
-  set +x
-  if [ "$LINUX_VER" = %{kernel}smp ]; then
-    msg=\
-"    \"--define 'kernel_type UP'\"
-	(Tries to make the source appear to be for a uni-processor kernel.
-	 Only works for kernel sources configured using /boot/kernel.h)
- or
-    \"--define 'kernel_ver $LINUX_VER'\"
-	(Forces a build for an SMP kernel)."
-  elif [ "$LINUX_VER"smp = %{kernel} ]; then
-    msg=\
-"    \"--define 'kernel_type SMP'\"
-	(Tries to make the source appear to be for an SMP kernel.
-	 Only works for kernel sources configured using /boot/kernel.h)
- or
-    \"--define 'kernel_ver $LINUX_VER'\"
-	(Forces a build for a uni-processor kernel)."
-  else
-    msg=\
-"    \"--define 'kernel_ver $LINUX_VER'\"
- or
-    \"--define 'kernel_src PATH_TO_%{kernel}_SOURCES'\"
-to select a matching source tree and kernel version."
-  fi
-  TMP1="%{?kernel_ver:kernel you specified}%{!?kernel_ver:running kernel}"
-  TMP2="%{?kernel_src:you specified (%{kernel_src}}%{!?kernel_src:found by configure ($LINUX_SRC}"
-  echo "
-==========================================================================
-The $TMP1 (%{kernel}) does not match the kernel source
-$TMP2, version $LINUX_VER).
-To resolve this conflict, try passing (to rpmbuild or rpm):
-$msg
-==========================================================================
-" >&2
-  exit 1
-fi
+#	%{?kernel_src:--with-linux=%{kernel_src}} \
+#	%{?kernel_obj:--with-linux-obj=%{kernel_obj}} \
+#	%{?kernel_type:--with-kernel-type=%{kernel_type}}
+
 
 # Now build it
 make
@@ -174,14 +138,44 @@ rm -rf ${RPM_BUILD_ROOT}
 rm -rf ${RPM_BUILD_ROOT}
 
 %install
-cd builddir
-make install-strip DESTDIR=${RPM_BUILD_ROOT}
+%{__rm} -rf %{buildroot} ?
+
+%define dkms_name blcr
+%define dkms_vers %{version}-%{release}
+%define quiet -q
+
+make -C builddir install DESTDIR=${RPM_BUILD_ROOT}
 # Ensure man pages are gzipped, regardless of brp-compress
 if [ -n "${RPM_BUILD_ROOT}" -a "${RPM_BUILD_ROOT}" != "/" ]; then
   find ${RPM_BUILD_ROOT}/%{_mandir} -name '*.[1-9]' | xargs gzip -9
 fi
 # Install the init script
-make -C etc install DESTDIR=${RPM_BUILD_ROOT}
+make -C builddir/etc install DESTDIR=${RPM_BUILD_ROOT}
+
+# Kernel module sources install for dkms
+%{__mkdir_p} %{buildroot}%{_usrsrc}/%{dkms_name}-%{dkms_vers}/
+%{__cp} -a . \
+    %{buildroot}%{_usrsrc}/%{dkms_name}-%{dkms_vers}/
+#( cd %{buildroot}%{_usrsrc}/%{dkms_name}-%{dkms_vers} && ./autogen.sh && ./configure --with-components=modules && make clean ; ) 
+( cd %{buildroot}%{_usrsrc}/%{dkms_name}-%{dkms_vers} && ./autogen.sh ; )
+rm -rf %{buildroot}%{_usrsrc}/%{dkms_name}-%{dkms_vers}/builddir
+
+# Configuration for dkms
+%{__cat} > %{buildroot}%{_usrsrc}/%{dkms_name}-%{dkms_vers}/dkms.conf << 'EOF'
+PACKAGE_NAME=%{dkms_name}
+PACKAGE_VERSION=%{dkms_vers}
+MAKE[0]="./configure --with-components=modules && make"
+BUILT_MODULE_NAME[0]=blcr
+BUILT_MODULE_LOCATION[0]=cr_module/kbuild
+BUILT_MODULE_NAME[1]=blcr_imports
+BUILT_MODULE_LOCATION[1]=blcr_imports/kbuild
+BUILT_MODULE_NAME[2]=blcr_vmadump
+BUILT_MODULE_LOCATION[2]=vmadump4/kbuild
+DEST_MODULE_LOCATION[0]=/extra
+DEST_MODULE_LOCATION[1]=/extra
+DEST_MODULE_LOCATION[2]=/extra
+AUTOINSTALL="YES"
+EOF
 
 # On some systems rpmbuild dislikes having an RPATH that points
 # to a system directory.  Some versions of libtool get this right
@@ -191,7 +185,7 @@ if chrpath --version >& /dev/null; then
   chrpath -d ${RPM_BUILD_ROOT}/%{_bindir}/cr_checkpoint
   chrpath -d ${RPM_BUILD_ROOT}/%{_bindir}/cr_restart
 %if %{build_testsuite}
-  list=`make -C tests --no-print-directory echoval VARNAME=testsexec_PROGRAMS`
+  list=`make -C builddir/tests --no-print-directory echoval VARNAME=testsexec_PROGRAMS`
   ( cd ${RPM_BUILD_ROOT}/%{_libexecdir}/blcr-testsuite && chrpath -d $list )
 %endif
 fi
@@ -305,32 +299,53 @@ Kernel modules for Berkeley Lab Checkpoi
 Kernel modules for Berkeley Lab Checkpoint/Restart for Linux (BLCR)
 These kernel modules are built for Linux %{kernel}.
 
-You must also install the base %{name} package.
+
+
 %post %{modsubpkg}
-/sbin/depmod -a -F /boot/System.map-%{kernel} %{kernel}
-if [ $1 = 2 ]; then
+#if [ $1 = 1 ]; then
+#  /sbin/chkconfig --add blcr
+#fi
+# Add to DKMS registry
+dkms add -m %{dkms_name} -v %{dkms_vers} %{?quiet} || :
+# Rebuild and make available for the currenty running kernel
+dkms build -m %{dkms_name} -v %{dkms_vers} %{?quiet} || :
+dkms install -m %{dkms_name} -v %{dkms_vers} %{?quiet} --force || :
+
+
+%preun %{modsubpkg}
+# Remove all versions from DKMS registry
+dkms remove -m %{dkms_name} -v %{dkms_vers} %{?quiet} --all || :
+#if [ $1 = 0 ]; then
+#  /sbin/chkconfig --del blcr
+#fi
+#exit 0
+
+
+#You must also install the base %{name} package.
+#%post %{modsubpkg}
+#if [ $1 = 2 ]; then
  # conditional reload on upgrade
- /etc/init.d/blcr reload >& /dev/null
-fi
-exit 0
-%preun %{modsubpkg}
-if [ $1 = 0 ]; then
- /etc/init.d/blcr stop >& /dev/null
-fi
-exit 0
-%postun %{modsubpkg}
-if [ $1 = 0 ]; then
- /sbin/depmod -a -F /boot/System.map-%{kernel} %{kernel}
-fi
-exit 0
+# /etc/init.d/blcr reload >& /dev/null
+#fi
+#/sbin/depmod -a -F /boot/System.map-%{kernel} %{kernel}
+#exit 0
+#%preun %{modsubpkg}
+#if [ $1 = 0 ]; then
+# /etc/init.d/blcr stop >& /dev/null
+#fi
+#exit 0
+#%postun %{modsubpkg}
+#if [ $1 = 0 ]; then
+# /sbin/depmod -a -F /boot/System.map-%{kernel} %{kernel}
+#fi
+#exit 0
 
 %files %{modsubpkg}
 %defattr(-,root,root)
-%dir %{moduledir}
+
+%{_usrsrc}/%{dkms_name}-%{dkms_vers}/
+
 # Note suffix may be either .o (2.4 kernel) or .ko (2.6 kernel)
-%{moduledir}/blcr.*o
-%{moduledir}/blcr_vmadump.*o
-%{moduledir}/blcr_imports.*o
 
 ##
 ## testsuite as an additional package if configured in

