use build/build.common to use common build operations
[bootmanager.git] / support-files / buildnode.sh
index 53b18b7..71b076d 100755 (executable)
@@ -6,7 +6,7 @@
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2005-2006 The Trustees of Princeton University
 #
-# $Id: buildnode.sh,v 1.5 2006/03/21 14:57:29 mlhuang Exp $
+# $Id: buildnode.sh,v 1.13 2007/08/30 20:08:25 mef Exp $
 #
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
@@ -24,33 +24,11 @@ fi
 
 export PATH
 
-# Release and architecture to install
-releasever=2
-basearch=i386
+. build.common
 
-usage()
-{
-    echo "Usage: build.sh [OPTION]..."
-    echo "     -r release      Fedora release number (default: $releasever)"
-    echo "     -a arch         Fedora architecture (default: $basearch)"
-    echo "     -h              This message"
-    exit 1
-}
-
-# Get options
-while getopts "r:a:h" opt ; do
-    case $opt in
-       r)
-           releasever=$OPTARG
-           ;;
-       a)
-           basearch=$OPTARG
-           ;;
-       h|*)
-           usage
-           ;;
-    esac
-done
+pl_process_fedora_options $@
+shiftcount=$?
+shift $shiftcount
 
 # Do not tolerate errors
 set -e
@@ -66,18 +44,37 @@ export PL_BOOTCD=1
 # Install the "PlanetLab" group. This requires that the PlanetLab
 # build system install the appropriate yumgroups.xml file (currently
 # build/groups/v3_yumgroups.xml) in $RPM_BUILD_DIR/../RPMS/ and that
-# mkfedora runs either yum-arch or createrepo on that directory.
-mkfedora -v -r $releasever -a $basearch -g PlanetLab $VROOT
+# mkfedora runs either yum-arch or createrepo on that directory. dev
+# is specified explicitly because of a stupid bug in its %post script
+# that causes its installation to fail; see the mkfedora script for a
+# full explanation. coreutils and python are specified explicitly
+# because groupinstall does not honor Requires(pre) dependencies
+# properly, most %pre scripts require coreutils to be installed first,
+# and some of our %post scripts require python.
+
+packagelist=(
+udev
+coreutils
+python
+)
+# vserver-reference packages used for reference image
+for package in "${packagelist[@]}" ; do
+    packages="$packages -p $package"
+done
+
+# Populate VROOT with the files for the PlanetLab-Bootstrap content
+pl_setup_chroot $VROOT -k $packages -g PlanetLab
 
-# Disable unnecessary services
+# Disable additional unnecessary services
 echo "* Disabling unnecessary services"
 for service in netfs rawdevices cpuspeed smartd ; do
-    /usr/sbin/chroot $VROOT /sbin/chkconfig $service off
+    if [ -x $VROOT/etc/init.d/$service ] ; then
+       /usr/sbin/chroot $VROOT /sbin/chkconfig $service off
+    fi
 done
 
 # Build tarball
 echo "* Building bootstrap tarball"
 tar -cpjf PlanetLab-Bootstrap.tar.bz2 -C $VROOT .
-rm -rf $VROOT
 
 exit 0