merge to HEAD as of 2006-08-21
[bootcd.git] / build.sh
index 6d5ddc0..2549425 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -10,7 +10,7 @@
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2004-2006 The Trustees of Princeton University
 #
-# $Id$
+# $Id: build.sh,v 1.40 2006/07/25 23:51:39 mlhuang Exp $
 #
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
@@ -64,7 +64,10 @@ BOOTCD_VERSION=$(cat build/version.txt)
 if [ -f /etc/planetlab/plc_config ] ; then
     # Source PLC configuration
     . /etc/planetlab/plc_config
-elif [ -d configurations/$CONFIGURATION ] ; then
+fi
+
+# If PLC configuration is not valid, try a static configuration
+if [ -z "$PLC_BOOT_CA_SSL_CRT" -a -d configurations/$CONFIGURATION ] ; then
     # (Deprecated) Source static configuration
     . configurations/$CONFIGURATION/configuration
     PLC_NAME="PlanetLab"
@@ -76,7 +79,7 @@ elif [ -d configurations/$CONFIGURATION ] ; then
     fi
     PLC_BOOT_HOST=$PRIMARY_SERVER
     PLC_BOOT_SSL_PORT=$PRIMARY_SERVER_PORT
-    PLC_BOOT_SSL_CRT=configurations/$CONFIGURATION/$PRIMARY_SERVER_CERT
+    PLC_BOOT_CA_SSL_CRT=configurations/$CONFIGURATION/$PRIMARY_SERVER_CERT
     PLC_ROOT_GPG_KEY_PUB=configurations/$CONFIGURATION/$PRIMARY_SERVER_GPG
 fi
 
@@ -85,7 +88,7 @@ FULL_VERSION_STRING="$PLC_NAME BootCD $BOOTCD_VERSION"
 # Root of the ISO and USB images
 overlay=$(mktemp -d /tmp/overlay.XXXXXX)
 install -d -m 755 $overlay
-trap "rm -rf $overlay" ERR
+trap "rm -rf $overlay" ERR INT
 
 # Create version files
 echo "* Creating version files"
@@ -105,7 +108,7 @@ echo "* Installing boot server configuration files"
 # but never got around to it. Just install the same parameters for
 # both for now.
 for dir in $overlay/usr/boot $overlay/usr/boot/backup ; do
-       install -D -m 644 $PLC_BOOT_SSL_CRT $dir/cacert.pem
+       install -D -m 644 $PLC_BOOT_CA_SSL_CRT $dir/cacert.pem
        install -D -m 644 $PLC_ROOT_GPG_KEY_PUB $dir/pubring.gpg
        echo "$PLC_BOOT_HOST" >$dir/boot_server
        echo "$PLC_BOOT_SSL_PORT" >$dir/boot_server_port
@@ -113,7 +116,7 @@ for dir in $overlay/usr/boot $overlay/usr/boot/backup ; do
 done
 
 # (Deprecated) Install old-style boot server configuration files
-install -D -m 644 $PLC_BOOT_SSL_CRT $overlay/usr/bootme/cacert/$PLC_BOOT_HOST/cacert.pem
+install -D -m 644 $PLC_BOOT_CA_SSL_CRT $overlay/usr/bootme/cacert/$PLC_BOOT_HOST/cacert.pem
 echo "$FULL_VERSION_STRING" >$overlay/usr/bootme/ID
 echo "$PLC_BOOT_HOST" >$overlay/usr/bootme/BOOTSERVER
 echo "$PLC_BOOT_HOST" >$overlay/usr/bootme/BOOTSERVER_IP
@@ -177,11 +180,11 @@ echo "* Compressing overlay image"
 (cd $overlay && find . | cpio --quiet -c -o) | gzip -9 >$isofs/overlay.img
 
 rm -rf $overlay
-trap - ERR
+trap - ERR INT
 
 # Calculate ramdisk size (total uncompressed size of both archives)
 ramdisk_size=$(gzip -l $isofs/bootcd.img $isofs/overlay.img | tail -1 | awk '{ print $2; }') # bytes
-ramdisk_size=$(($ramdisk_size / 1024)) # kilobytes
+ramdisk_size=$((($ramdisk_size + 1023) / 1024)) # kilobytes
 
 # Write isolinux configuration
 echo "$FULL_VERSION_STRING" >$isofs/pl_version
@@ -215,7 +218,7 @@ mkfs.vfat -C "$usb" $(($(du -sk $isofs | awk '{ print $1; }') + 1024))
 # Mount it
 tmp=$(mktemp -d /tmp/bootcd.XXXXXX)
 mount -o loop "$usb" $tmp
-trap "umount $tmp; rm -rf $tmp" ERR
+trap "umount $tmp; rm -rf $tmp" ERR INT
 
 # Populate it
 echo "* Populating USB image"
@@ -225,7 +228,7 @@ echo "* Populating USB image"
 mv $tmp/isolinux.cfg $tmp/syslinux.cfg
 umount $tmp
 rmdir $tmp
-trap - ERR
+trap - ERR INT
 
 echo "* Making USB image bootable"
 $srcdir/syslinux/unix/syslinux "$usb"