X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=vserver-reference.spec;h=86b188a3787aa3e435f45ae1c6ad14007c2972bd;hb=bcd489967e8f3670fb1e0d13bbedd95643c340ea;hp=10455011c5b45532965771bbf0166881c425eb12;hpb=5df962adcf05f12a802f828e8da91eebfe2b2874;p=sliceimage.git diff --git a/vserver-reference.spec b/vserver-reference.spec index 1045501..86b188a 100644 --- a/vserver-reference.spec +++ b/vserver-reference.spec @@ -1,6 +1,6 @@ %define name vserver-reference %define version 3.0 -%define release 1.planetlab%{?date:.%{date}} +%define release 2.planetlab%{?date:.%{date}} Vendor: PlanetLab Packager: PlanetLab Central @@ -16,173 +16,156 @@ License: GPL Group: Applications/System BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot BuildArchitectures: noarch -Requires: util-vserver -AutoReqProv: no -BuildRequires: e2fsprogs, yum - -%define debug_package %{nil} +Requires: util-vserver, e2fsprogs, yum %description This package creates the virtual server (VServer) reference image used as the installation base for new PlanetLab slivers. -%define vrootdir /vservers -%define vrefdir %{vrootdir}/%{name} -%define installroot $RPM_BUILD_ROOT%{vrefdir} - %prep %setup -q -# chattr, mknod, mount, yum all require root privileges. Yech. -if [ $UID -ne 0 ] ; then - echo You must be root to build the %{name} package. - false -fi - %build %install -# Running as root -export PATH="$PATH:/sbin:/usr/sbin" +rm -rf $RPM_BUILD_ROOT -# Clean up -if grep -q %{installroot}/proc /proc/mounts ; then - umount %{installroot}/proc -fi -if grep -q %{installroot}/dev/pts /proc/mounts ; then - umount %{installroot}/dev/pts -fi -chattr -R -i $RPM_BUILD_ROOT +%clean rm -rf $RPM_BUILD_ROOT +%post +. /usr/lib/util-vserver/util-vserver-vars + # Make /vservers -mkdir -p $RPM_BUILD_ROOT%{vrootdir} -chmod 000 $RPM_BUILD_ROOT%{vrootdir} -chattr +t $RPM_BUILD_ROOT%{vrootdir} +mkdir -p $VROOTDIR +chmod 000 $VROOTDIR +chattr +t $VROOTDIR -# Make /vservers/vserver-reference -mkdir -p %{installroot} -chattr -t %{installroot} -chmod 755 %{installroot} +# Build image in /vservers/.vtmp +mkdir -p $VROOTDIR/.vtmp +VROOT=$(mktemp -d $VROOTDIR/.vtmp/vserver-reference.XXXXXX) + +# Make /vservers/.vtmp/vserver-reference.XXXXXX +mkdir -p $VROOT +chattr -t $VROOT +chmod 755 $VROOT + +# Clean up before exiting if anything goes wrong +set -e +trap "umount $VROOT/proc ; umount $VROOT/dev/pts ; chattr -R -i $VROOT ; rm -rf $VROOT" EXIT MAKEDEV () { - if grep -q %{installroot}/dev/pts /proc/mounts ; then - umount %{installroot}/dev/pts - fi - rm -rf %{installroot}/dev - mkdir -p %{installroot}/dev - mknod -m 666 %{installroot}/dev/null c 1 3 - mknod -m 666 %{installroot}/dev/zero c 1 5 - mknod -m 666 %{installroot}/dev/full c 1 7 - mknod -m 644 %{installroot}/dev/random c 1 8 - mknod -m 644 %{installroot}/dev/urandom c 1 9 - mknod -m 666 %{installroot}/dev/tty c 5 0 - mknod -m 666 %{installroot}/dev/ptmx c 5 2 - touch %{installroot}/dev/hdv1 + rm -rf $VROOT/dev + mkdir -p $VROOT/dev + mknod -m 666 $VROOT/dev/null c 1 3 + mknod -m 666 $VROOT/dev/zero c 1 5 + mknod -m 666 $VROOT/dev/full c 1 7 + mknod -m 644 $VROOT/dev/random c 1 8 + mknod -m 644 $VROOT/dev/urandom c 1 9 + mknod -m 666 $VROOT/dev/tty c 5 0 + mknod -m 666 $VROOT/dev/ptmx c 5 2 + touch $VROOT/dev/hdv1 } # Initialize /dev in reference image MAKEDEV # Mount /dev/pts in reference image -mkdir -p %{installroot}/dev/pts -mount -t devpts none %{installroot}/dev/pts +mkdir -p $VROOT/dev/pts +mount -t devpts none $VROOT/dev/pts # Mount /proc in reference image -mkdir -p %{installroot}/proc -mount -t proc none %{installroot}/proc +mkdir -p $VROOT/proc +mount -t proc none $VROOT/proc # Create a dummy /etc/fstab in reference image -mkdir -p %{installroot}/etc -cat > %{installroot}/etc/fstab < $VROOT/etc/fstab < %{installroot}/etc/rpm/macros < $VROOT/etc/rpm/macros < 3.0-2.planetlab +- dynamically install reference image + * Tue Sep 14 2004 Mark Huang 3.0-1.planetlab - initial build