fix to selecting Fedora release number
[vserver-reference.git] / vserver-reference.spec
index c7ba4cd..b5a6c0b 100644 (file)
@@ -1,10 +1,10 @@
-%define name vserver-reference
-%define version 3.1
-%define release 1.planetlab%{?date:.%{date}}
+%define name vserver
+%define version 4.1
+%define release 2%{?pldistro:.%{pldistro}}%{?date:.%{date}}
 
 Vendor: PlanetLab
 Packager: PlanetLab Central <support@planet-lab.org>
 
 Vendor: PlanetLab
 Packager: PlanetLab Central <support@planet-lab.org>
-Distribution: PlanetLab 3.0
+Distribution: PlanetLab 4.0
 URL: http://cvs.planet-lab.org/cvs/vserver-reference
 
 Summary: VServer reference image
 URL: http://cvs.planet-lab.org/cvs/vserver-reference
 
 Summary: VServer reference image
@@ -16,65 +16,104 @@ 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 ./%{name}.init
+pushd vserver-reference
+./build.sh -r $([ -f "/etc/fedora-release" ] && awk ' { if ($2=="Core") print $4; else print $3 } ' /etc/fedora-release || echo 4)
+./system-packages.sh
+popd
 
 %install
 rm -rf $RPM_BUILD_ROOT
 
 %install
 rm -rf $RPM_BUILD_ROOT
-find vservers/vserver-reference | cpio -p -d -u $RPM_BUILD_ROOT/
+
+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
 
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
-%files
+# If run under sudo
+if [ -n "$SUDO_USER" ] ; then
+    # 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
+
+%files reference
 %defattr(-,root,root)
 %defattr(-,root,root)
-/vservers/vserver-reference
-
-%post
-VROOT=/vservers/vserver-reference
-
-# Make sure the barrier bit is set
-setattr --barrier /vservers
-
-# Copy configuration files from host to reference image
-for file in /etc/hosts /etc/resolv.conf /etc/yum.conf ; do
-    if [ -f $file ] ; then
-       echo $file | cpio -p -d -u $VROOT
-    fi
-done
-
-# Install and parse Management Authority (MA) configuration
-if [ -r /etc/planetlab/primary_ma ] ; then
-    . /etc/planetlab/primary_ma
-    install -D -m 644 /etc/planetlab/primary_ma $VROOT/etc/planetlab/primary_ma
-elif [ -d /mnt/cdrom/bootme/cacert ] ; then
-    MA_NAME="PlanetLab Central"
-    MA_BOOT_SERVER=$(head -1 /mnt/cdrom/bootme/BOOTSERVER)
-    MA_BOOT_SERVER_CACERT=/mnt/cdrom/bootme/cacert/$MA_BOOT_SERVER/cacert.pem
-    cat > $VROOT/etc/planetlab/primary_ma <<EOF
-MA_NAME="$MA_NAME"
-MA_BOOT_SERVER="$MA_BOOT_SERVER"
-MA_BOOT_SERVER_CACERT="$MA_BOOT_SERVER_CACERT"
-EOF
+%{_initrddir}/vserver-reference
+%{_sysconfdir}/cron.d/vserver-reference
+/vservers/.vref/default
+
+%files system-packages
+%defattr(-,root,root)
+/vservers/system-packages
+
+%define vcached_pid /var/run/vcached.pid
+
+%pre reference
+# Stop vcached
+if [ -r %{vcached_pid} ] ; then
+    kill $(cat %{vcached_pid})
+fi
+echo $$ > %{vcached_pid}
+
+# vcached will clean up .vtmp later
+mkdir -p /vservers/.vtmp
+if [ -d /vservers/.vref ] ; then
+    mv /vservers/.vref /vservers/.vtmp/.vref.$RANDOM
 fi
 fi
+if [ -d /vservers/.vcache ] ; then
+    mv /vservers/.vcache /vservers/.vtmp/.vcache.$RANDOM
+fi
+
+# Allow vcached to run again
+rm -f %{vcached_pid}
 
 
-# Install boot server certificate
-install -D -m 644 $MA_BOOT_SERVER_CACERT $VROOT/$MA_BOOT_SERVER_CACERT
+%post reference
+chkconfig --add vserver-reference
+chkconfig vserver-reference on
+[ "$PL_BOOTCD" = "1" ] || service vserver-reference start
 
 
-# Also install in /mnt/cdrom/bootme for backward compatibility
-install -D -m 644 $MA_BOOT_SERVER_CACERT $VROOT/mnt/cdrom/bootme/cacert/$MA_BOOT_SERVER/cacert.pem
-echo $MA_BOOT_SERVER > $VROOT/mnt/cdrom/bootme/BOOTSERVER
+# 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
 
 %changelog
 * Tue Sep  1 2005 Mark Huang <mlhuang@cs.princeton.edu> 3.1-1.planetlab