Setting tag vserver-reference-5.0-5
[sliceimage.git] / build.sh
index c5cfcb7..aa04382 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -12,7 +12,8 @@
 # Marc E. Fiuczynski <mef@cs.princeton.edu>
 # Copyright (C) 2004-2007 The Trustees of Princeton University
 #
-# $Id: build.sh,v 1.20 2007/09/06 20:41:23 faiyaza Exp $
+# $Id$
+# $URL$
 #
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
@@ -40,19 +41,21 @@ shift $shiftcount
 # pldistro expected as $1 
 pldistro=$1 ; shift
 # The vserver reference name - this comes from spec's slicefamily
-vrefname=$1; shift
+slicefamily=$1; shift
 
 # Do not tolerate errors
 set -e
 
 # Path's to the vserver references images and stubs
 vrefdir=$PWD/vservers/.vref
-vref=${vrefdir}/${vrefname}
+vref=${vrefdir}/${slicefamily}
 # stubs are created in a subdir per slicefamily
-vstubdir=$PWD/vservers/.vstub/${vrefname}
+vstubdir=$PWD/vservers/.vstub/${slicefamily}
 
 # Make /vservers and default vserver reference image
 install -d -m 755 ${vref}
+# needed for pldistros that don't have any system vserver images
+install -d -m 755 ${vstubdir}
 
 # Some of the PlanetLab RPMs attempt to (re)start themselves in %post,
 # unless the installation is running inside the BootCD environment. We
@@ -85,24 +88,25 @@ systemvserver_count=$(ls ../build/config.${pldistro}/vserver-*.pkgs 2> /dev/null
     rm -f ${vdir}/var/lib/rpm/__db*
 
     # Communicate to the initialization script from which vref this stub was cloned
-    echo ${vrefname} > ${vdir}.cloned
+    echo ${slicefamily} > ${vdir}.cloned
 
     # Install the system vserver specific packages
-    [ -n "$systempackages" ] && yum -c ${vdir}/etc/yum.conf --installroot=${vdir} -y install $systempackages
-    [ -n "$systemgroups" ] && yum -c ${vdir}/etc/yum.conf --installroot=${vdir} -y groupinstall $systemgroups
+    [ -n "$systempackages" ] && yum -c ${vdir}/etc/mkfedora-yum.conf --installroot=${vdir} -y install $systempackages
+    for group_plus in $systemgroups; do
+       group=$(echo $group_plus | sed -e "s,+++, ,g")
+        yum -c ${vdir}/etc/mkfedora-yum.conf --installroot=${vdir} -y groupinstall "$group"
+    done
+
+    # search e.g. vserver-planetflow.post in config.<pldistro> or in config.planetlab otherwise
+    postfile=$(pl_locateDistroFile ../build/ ${pldistro} vserver-${NAME}.post || : )
 
-    pkgsdir=$(dirname $pkgsfile)
-    pkgsname=$(basename $pkgsfile .pkgs)
-    postfile="${pkgsdir}/${pkgsname}.post"
     [ -f $postfile ] && /bin/bash $postfile ${vdir} || :
 
     # Create a copy of the system vserver w/o the vserver reference files and make it smaller. 
     # This is a three step process:
 
     # step 1: clean out yum cache to reduce space requirements
-    yum -c ${vdir}/etc/yum.conf --installroot=${vdir} -y clean all
-
-    [ -f ${vdir}/etc/yum.conf.rpmnew ] && mv -f ${vdir}/etc/yum.conf.rpmnew ${vdir}/etc/yum.conf
+    yum -c ${vdir}/etc/mkfedora-yum.conf --installroot=${vdir} -y clean all
 
     # step 2: figure out the new/changed files in ${vdir} vs. ${vref} and compute ${vdir}.changes
     rsync -anv ${vdir}/ ${vref}/ > ${vdir}.changes
@@ -124,15 +128,22 @@ systemvserver_count=$(ls ../build/config.${pldistro}/vserver-*.pkgs 2> /dev/null
     rm -rf ${vdir}
     rm -f  ${vdir}.changes
     mv ${vdir}-tmp ${vdir}
+
+    # cleanup yum remainings
+    rm -rf ${vdir}/build ${vdir}/longbuildroot
+
     echo "--------DONE BUILDING system vserver ${NAME}: $(date)"
 done
 
-pkgsdir=$(dirname $pkgsfile)
-pkgsname=$(basename $pkgsfile .pkgs)
-postfile="${pkgsdir}/${pkgsname}.post"
+# search vserver.post in config.<pldistro> or in config.planetlab otherwise
+postfile=$(pl_locateDistroFile ../build/ ${pldistro} vserver.post)
+
 [ -f $postfile ] && /bin/bash $postfile ${vref} || :
 
-# switch the vserver reference /etc/yum.conf to the new one from the yum package
-[ -f ${vref}/etc/yum.conf.rpmnew ] && mv -f ${vref}/etc/yum.conf.rpmnew ${vref}/etc/yum.conf
+# fix sudoers config
+[ -f ${vref}/etc/sudoers ] && echo -e "\nDefaults\tlogfile=/var/log/sudo\n" >> ${vref}/etc/sudoers
+
+# cleanup yum remainings
+rm -rf ${vref}/build ${vref}/longbuildroot
 
 exit 0