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