Tagging module VserverReference - VserverReference-4.2-10
[sliceimage.git] / vserver-reference.spec
index decb529..5d58877 100644 (file)
@@ -1,13 +1,19 @@
-%define name vserver-reference
-%define version 3.0
-%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://www.planet-lab.org
+%define slicefamily %{pldistro}-%{distroname}-%{_arch}
 
 
-Summary: VServer reference image
+%define name vserver
+%define version 4.2
+%define taglevel 10
+
+# pldistro already in the rpm name
+#%define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
+%define release %{taglevel}%{?date:.%{date}}
+
+Summary: VServer reference image for slice family %{slicefamily}
 Name: %{name}
 Version: %{version}
 Release: %{release}
 Name: %{name}
 Version: %{version}
 Release: %{release}
@@ -15,112 +21,160 @@ 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
-BuildArchitectures: noarch
-Requires: util-vserver, e2fsprogs, yum
+# this would not be right
+#BuildArch: noarch
+
+Vendor: PlanetLab
+Packager: PlanetLab Central <support@planet-lab.org>
+Distribution: PlanetLab %{plrelease}
+URL: %(echo %{url} | cut -d ' ' -f 2)
+
+%define debug_package %{nil}
 
 %description
 
 %description
+This package does not really exist.
+
+%package %{slicefamily}
+Summary: VServer reference image
+Group: Applications/System
+AutoReqProv: no
+Requires: util-vserver, e2fsprogs, yum
+Requires(pre): util-vserver-core, findutils
+
+%description %{slicefamily}
 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 systemslices-%{slicefamily}
+Summary: System slice packages
+Group: Applications/System
+Requires: vserver-%{slicefamily} >= %{version}-%{release}
+AutoReqProv: no
+
+%description systemslices-%{slicefamily} 
+This package installs the stubs necessary to create system slices
+(typically planetflow) on top of the reference image.
+
 %prep
 %setup -q
 
 %build
 %prep
 %setup -q
 
 %build
+pushd VserverReference
+./build.sh %{pldistro} %{slicefamily}
+popd
 
 %install
 rm -rf $RPM_BUILD_ROOT
 
 
 %install
 rm -rf $RPM_BUILD_ROOT
 
+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
 
-%post
-. /usr/lib/util-vserver/util-vserver-vars
-VROOT=$VROOTDIR/vserver-reference
-
-# Pause vcached
-service vcached stop
-
-# Remove old installation first
-if [ -d $VROOT ] ; then
-    if grep -q $VROOT/proc /proc/mounts ; then
-       umount $VROOT/proc
-    fi
-    if grep -q $VROOT/dev/pts /proc/mounts ; then
-       umount $VROOT/dev/pts
-    fi
-    chattr -R -i $VROOT
-    rm -rf $VROOT
+# 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
 
 fi
 
-$PKGLIBDIR/install-pre.sh vserver-reference
+%files %{slicefamily}
+%defattr(-,root,root)
+%{_initrddir}/vserver-reference
+%{_sysconfdir}/cron.d/vserver-reference
+%{_sysconfdir}/logrotate.d/vserver-reference
+/vservers/.vref/%{slicefamily}
 
 
-# Mount /dev/pts in reference image
-mkdir -p $VROOT/dev/pts
-mount -t devpts none $VROOT/dev/pts
+%files systemslices-%{slicefamily}
+%defattr(-,root,root)
+/vservers/.vstub/%{slicefamily}
 
 
-# Mount /proc in reference image
-mkdir -p $VROOT/proc
-mount -t proc none $VROOT/proc
+%define vcached_pid /var/run/vcached.pid
 
 
-# Prevent all locales from being installed in reference image
-mkdir -p $VROOT/etc/rpm
-cat > $VROOT/etc/rpm/macros <<EOF
-%%_install_langs en_US:en
-%%_excludedocs 1
-%%__file_context_path /dev/null
-EOF
+# XXX: UGLY HACK
+%pre %{slicefamily}
+test -d /vservers/.vref/%{slicefamily} && \
+   find /vservers/.vref/%{slicefamily} -print0 | xargs -0 setattr --~iunlink
+:
 
 
-# Zap some locks
-TMP=`mktemp -d /tmp/%{name}.XXXXXX`
-if [ -f /var/lock/rpm/transaction ] ; then
-    mv /var/lock/rpm/transaction $TMP
-fi
-if [ -f /var/run/yum.pid ] ; then
-    mv /var/run/yum.pid $TMP
-fi
+%post %{slicefamily}
+chkconfig --add vserver-reference
+chkconfig vserver-reference on
+# store the default for nodemanager
+[ -f /etc/planetlab/slicefamily ] || { mkdir -p /etc/planetlab ; echo %{slicefamily} > /etc/planetlab/slicefamily ; }
+[ "$PL_BOOTCD" = "1" ] || service vserver-reference start
 
 
-# Initialize RPM database in reference image
-mkdir -p $VROOT/var/lib/rpm
-rpm --root $VROOT --initdb
+# 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
 
 
-# Install RPMs in reference image
-yum \
---sslcertdir=/mnt/cdrom/bootme/cacert \
---installroot=$VROOT \
--y groupinstall VServer
+%changelog
+* Thu Jul 03 2008 Daniel Hokka Zakrisson <daniel@hozac.com> - VserverReference-4.2-10
+- Use the correct yum.conf to get access to required packages such as pf2slice.
 
 
-# Restore locks
-if [ -f $TMP/transaction ] ; then
-    mv $TMP/transaction /var/lock/rpm
-fi
-if [ -f $TMP/yum.pid ] ; then
-    mv $TMP/yum.pid /var/run
-fi
-rmdir $TMP
+* Mon Jun 30 2008 Daniel Hokka Zakrisson <daniel@hozac.com> - VserverReference-4.2-9
+- Scriptlet fix.
 
 
-# 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
+* Fri Jun 27 2008 Daniel Hokka Zakrisson <daniel@hozac.com> - VserverReference-4.2-8
+- Unset the immutable and iunlink bits to make sure we can install the package.
 
 
-# Clean up
-umount $VROOT/proc
-umount $VROOT/dev/pts
+* Fri Jun 27 2008 Daniel Hokka Zakrisson <daniel@hozac.com> - VserverReference-4.2-7
+- Let rpm remove the files.
 
 
-$PKGLIBDIR/install-post.sh vserver-reference
+* Thu Apr 24 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - VserverReference-4.2-6
+- empty change, this should *not* be a noarch package
 
 
-# Disable all services in reference image
-chroot $VROOT /bin/sh -c "chkconfig --list | awk '{ print \$1 }' | xargs -i chkconfig {} off"
+* Mon Apr 21 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - VserverReference-4.2-5
+- tweaked pre script that was removing everything under /vservers/.vref
+- dismantle vcached (as far as this module is concerned)
+- sudo to log in /var/log/sudo
 
 
-# Restart vcached
-service vcached start
+* Fri Mar 28 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - VserverReference-4.2-3 VserverReference-4.2-4
+- bugfix, 4.2-3 was broken as the slicefamily stamp could not get created, thus nm issued 'vuseradd -t default'
 
 
-%files
-%defattr(-,root,root)
+* Wed Mar 26 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - VserverReference-4.2-2 VserverReference-4.2-3
+- a single node can now install several instances of this package
+- package name contains slicefamily - <pldistro>-<fcdistro>-<arch>
+- setattr --iunlink or --~iunlink appropriately (uses /proc/virtual/info)
+- does not copy yum.conf from host anymore
+
+* 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 Nov 30 2004 Mark Huang <mlhuang@cs.princeton.edu> 3.0-5.planetlab
+- PL3118 and PL3131 fix: set barrier bit on /vservers instead of old
+  immulink bit. Do not reset the immutable bit on the new
+  vserver-reference directory when deleting it after an error.
+
+* Mon Nov 15 2004 Mark Huang <mlhuang@cs.princeton.edu> 3.0-4.planetlab
+- bump release to install Fedora Core 2 updates as of Tue Nov  9 2004
+- PL3017 fix: rebuild vserver-reference image in case it was built
+  with i386 glibc
+
+* Mon Nov 15 2004 Mark Huang <mlhuang@cs.princeton.edu> 3.0-4.planetlab
+- bump release to install Fedora Core 2 updates as of Tue Nov  9 2004
+- PL3017 fix: rebuild vserver-reference image in case it was built
+  with i386 glibc
+
+* Sun Oct 10 2004 Mark Huang <mlhuang@cs.princeton.edu> 3.0-3.planetlab
+- dynamically install reference image at init time
 
 
-%changelog
 * Sun Oct 10 2004 Mark Huang <mlhuang@cs.princeton.edu> 3.0-2.planetlab
 - dynamically install reference image
 
 * Sun Oct 10 2004 Mark Huang <mlhuang@cs.princeton.edu> 3.0-2.planetlab
 - dynamically install reference image