cleaner way of finding the vserver.pkgs *.post file.
[vserver-reference.git] / vserver-reference.spec
index a769bd3..aaf961b 100644 (file)
@@ -1,11 +1,13 @@
-%define name vserver-reference
-%define version 3.1
-%define release 2.planetlab%{?date:.%{date}}
+#
+# $Id$
+#
+%define url $URL$
 
 
-Vendor: PlanetLab
-Packager: PlanetLab Central <support@planet-lab.org>
-Distribution: PlanetLab 3.0
-URL: http://cvs.planet-lab.org/cvs/vserver-reference
+%define name vserver
+%define version 4.2
+%define taglevel 2
+
+%define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
 
 Summary: VServer reference image
 Name: %{name}
 
 Summary: VServer reference image
 Name: %{name}
@@ -15,47 +17,84 @@ Source0: %{name}-%{version}.tar.bz2
 License: GPL
 Group: Applications/System
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
 License: GPL
 Group: Applications/System
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
-Requires: util-vserver, e2fsprogs, yum
 
 
-AutoReqProv: no
+Vendor: PlanetLab
+Packager: PlanetLab Central <support@planet-lab.org>
+Distribution: PlanetLab %{plrelease}
+URL: %(echo %{url} | cut -d ' ' -f 2)
+
 %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
+Requires: util-vserver, e2fsprogs, yum
+Requires(pre): /bin/sh, coreutils
+
+%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 VserverReference
+./build.sh %{pldistro}
+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
-if [ -n "$SUDO_USER" ] ; then
-    chown -R $SUDO_USER .
-fi
+pushd VserverReference
+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
+install -D -m 644 vserver-reference.logrotate $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/vserver-reference
+find vservers | cpio -p -d -u $RPM_BUILD_ROOT/
+popd
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
-# If run under sudo, allow user to delete the built RPM
+# If run under sudo
 if [ -n "$SUDO_USER" ] ; then
 if [ -n "$SUDO_USER" ] ; then
-    chown $SUDO_USER %{_rpmdir}/%{_arch}/%{name}-%{version}-%{release}.%{_arch}.rpm
+    # Allow user to delete the build directory
+    chown -h -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 -h -R $SUDO_USER %{_rpmdir}/%{_arch}
 fi
 
 fi
 
-%files
+%files reference
+%defattr(-,root,root)
+%{_initrddir}/vserver-reference
+%{_sysconfdir}/cron.d/vserver-reference
+%{_sysconfdir}/logrotate.d/vserver-reference
+/vservers/.vref/default
+
+%files system-packages
 %defattr(-,root,root)
 %defattr(-,root,root)
-%{_initrddir}/%{name}
-/vservers/vserver-reference
+/vservers/.vstub
 
 %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})
@@ -64,8 +103,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
@@ -74,12 +113,23 @@ 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
 %changelog
+* Fri Feb 15 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - vserver-4.2-1 vserver-4.2-2
+- vserver image to properly use links rather than copies
+
+* Thu Jan 31 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - vserver-4.2-0 vserver-4.2-1
+- more careful scan of the vserver-*.pkgs image specifications
+
 * Tue Sep  1 2005 Mark Huang <mlhuang@cs.princeton.edu> 3.1-1.planetlab
 - Pre-package vserver-reference instead of building it on nodes
 
 * Tue Sep  1 2005 Mark Huang <mlhuang@cs.princeton.edu> 3.1-1.planetlab
 - Pre-package vserver-reference instead of building it on nodes