- move vserver-reference to .vref/default
[sliceimage.git] / vserver-reference.spec
index 897b8a0..0839f95 100644 (file)
@@ -1,6 +1,6 @@
-%define name vserver-reference
-%define version 3.1
-%define release 2%{?pldistro:.%{pldistro}}%{?date:.%{date}}
+%define name vserver
+%define version 4.0
+%define release 3%{?pldistro:.%{pldistro}}%{?date:.%{date}}
 
 Vendor: PlanetLab
 Packager: PlanetLab Central <support@planet-lab.org>
 
 Vendor: PlanetLab
 Packager: PlanetLab Central <support@planet-lab.org>
@@ -16,49 +16,77 @@ License: GPL
 Group: Applications/System
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
 Requires: util-vserver, e2fsprogs, yum
 Group: Applications/System
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
 Requires: util-vserver, e2fsprogs, yum
+Requires(pre): coreutils
 
 
-AutoReqProv: no
 %define debug_package %{nil}
 
 %description
 %define debug_package %{nil}
 
 %description
+This package does not really exist.
+
+%package reference
+Summary: VServer reference image
+Group: Applications/System
+AutoReqProv: no
+
+%description reference
 This package creates the virtual server (VServer) reference image used
 as the installation base for new PlanetLab slivers.
 
 This package creates the virtual server (VServer) reference image used
 as the installation base for new PlanetLab slivers.
 
+%package system-packages
+Summary: System slice packages
+Group: Applications/System
+Requires: vserver-reference = %{version}-%{release}
+AutoReqProv: no
+
+%description system-packages
+This package installs the RPMS necessary to create system ("root
+ resource") slices from the virtual server (VServer) reference image.
+
 %prep
 %setup -q
 
 %build
 %prep
 %setup -q
 
 %build
-RPM_BUILD_DIR=$RPM_BUILD_DIR ./build.sh
+pushd vserver-reference
+./build.sh
+./system-packages.sh
+popd
 
 %install
 rm -rf $RPM_BUILD_ROOT
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -D -m 755 %{name}.init $RPM_BUILD_ROOT/%{_initrddir}/%{name}
-find vservers/vserver-reference | cpio -p -d -u $RPM_BUILD_ROOT/
 
 
-# If run under sudo, allow user to delete the build directory
+pushd vserver-reference
+install -D -m 755 vserver-reference.init $RPM_BUILD_ROOT/%{_initrddir}/vserver-reference
+install -D -m 644 vserver-reference.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/vserver-reference
+find vservers | cpio -p -d -u $RPM_BUILD_ROOT/
+popd
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+# If run under sudo
 if [ -n "$SUDO_USER" ] ; then
 if [ -n "$SUDO_USER" ] ; then
+    # Allow user to delete the build directory
     chown -R $SUDO_USER .
     # Some temporary cdroot files like /var/empty/sshd and
     # /usr/bin/sudo get created with non-readable permissions.
     find . -not -perm +0600 -exec chmod u+rw {} \;
     chown -R $SUDO_USER .
     # Some temporary cdroot files like /var/empty/sshd and
     # /usr/bin/sudo get created with non-readable permissions.
     find . -not -perm +0600 -exec chmod u+rw {} \;
+    # Allow user to delete the built RPM(s)
+    chown -R $SUDO_USER %{_rpmdir}/%{_arch}
 fi
 
 fi
 
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-# If run under sudo, allow user to delete the built RPM
-if [ -n "$SUDO_USER" ] ; then
-    chown $SUDO_USER %{_rpmdir}/%{_arch}/%{name}-%{version}-%{release}.%{_arch}.rpm
-fi
+%files reference
+%defattr(-,root,root)
+%{_initrddir}/vserver-reference
+%{_sysconfdir}/cron.d/vserver-reference
+/vservers/.vref/default
 
 
-%files
+%files system-packages
 %defattr(-,root,root)
 %defattr(-,root,root)
-%{_initrddir}/%{name}
-/vservers/vserver-reference
+/vservers/system-packages
 
 %define vcached_pid /var/run/vcached.pid
 
 
 %define vcached_pid /var/run/vcached.pid
 
-%pre
+%pre reference
 # Stop vcached
 if [ -r %{vcached_pid} ] ; then
     kill $(cat %{vcached_pid})
 # Stop vcached
 if [ -r %{vcached_pid} ] ; then
     kill $(cat %{vcached_pid})
@@ -67,8 +95,8 @@ echo $$ > %{vcached_pid}
 
 # vcached will clean up .vtmp later
 mkdir -p /vservers/.vtmp
 
 # vcached will clean up .vtmp later
 mkdir -p /vservers/.vtmp
-if [ -d /vservers/vserver-reference ] ; then
-    mv /vservers/vserver-reference /vservers/.vtmp/vserver-reference.$RANDOM
+if [ -d /vservers/.vref ] ; then
+    mv /vservers/.vref /vservers/.vtmp/.vref.$RANDOM
 fi
 if [ -d /vservers/.vcache ] ; then
     mv /vservers/.vcache /vservers/.vtmp/.vcache.$RANDOM
 fi
 if [ -d /vservers/.vcache ] ; then
     mv /vservers/.vcache /vservers/.vtmp/.vcache.$RANDOM
@@ -77,11 +105,16 @@ fi
 # Allow vcached to run again
 rm -f %{vcached_pid}
 
 # Allow vcached to run again
 rm -f %{vcached_pid}
 
-%post
-chkconfig --add %{name}
-chkconfig %{name} on
+%post reference
+chkconfig --add vserver-reference
+chkconfig vserver-reference on
 [ "$PL_BOOTCD" = "1" ] || service vserver-reference start
 
 [ "$PL_BOOTCD" = "1" ] || service vserver-reference start
 
+# Randomize daily run time
+M=$((60 * $RANDOM / 32768))
+H=$((24 * $RANDOM / 32768))
+sed -i -e "s/@M@/$M/" -e "s/@H@/$H/" %{_sysconfdir}/cron.d/vserver-reference
+
 %changelog
 * Tue Sep  1 2005 Mark Huang <mlhuang@cs.princeton.edu> 3.1-1.planetlab
 - Pre-package vserver-reference instead of building it on nodes
 %changelog
 * Tue Sep  1 2005 Mark Huang <mlhuang@cs.princeton.edu> 3.1-1.planetlab
 - Pre-package vserver-reference instead of building it on nodes