X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.sh;h=411111c8be926f45ce3b304662b3e6f486d14081;hb=b4e653e0b89780332aac00afdbde3590dba17c4e;hp=9fe81cda495999b181b6685d4ea1a959a9ab0704;hpb=7558599465b80202c5857a7569936084c3d40135;p=bootmanager.git diff --git a/build.sh b/build.sh index 9fe81cd..411111c 100755 --- a/build.sh +++ b/build.sh @@ -1,17 +1,14 @@ #!/bin/bash # -# Builds bootmanager.sh[.sgn], the PlanetLab Boot Manager script, and -# PlanetLab-Bootstrap.tar.bz2, the initial root filesystem of a new -# PlanetLab node. For backward compatibility with old version 2.0 Boot -# CDs, additional utilities are also built and packaged as -# alpina-BootLVM.tar.gz and alpina-PartDisks.tar.gz. +# Builds bootmanager.sh[.sgn], which is the PlanetLab Boot Manager script. # # The bootmanager.sh script contains in it a uuencoded tarball of the # Boot Manager, customized for this PLC installation. # # Aaron Klingaman # Mark Huang -# Copyright (C) 2004-2006 The Trustees of Princeton University +# Marc E. Fiuczynski +# Copyright (C) 2004-2007 The Trustees of Princeton University # # $Id: build.sh,v 1.5 2006/04/03 19:40:55 mlhuang Exp $ # @@ -28,9 +25,20 @@ fi # Do not tolerate errors set -e +NODEGROUP=$1 + +BOOTSTRAPDIR="/boot" +if [ -n "$NODEGROUP" ] ; then + BOOTSTRAPDIR="/boot/$NODEGROUP" +fi + + # Change to our source directory srcdir=$(cd $(dirname $0) && pwd -P) +# Translate configuration file +sed -i -e "s|SUPPORT_FILE_DIR=.*|SUPPORT_FILE_DIR=$BOOTSTRAPDIR|" $srcdir/source/configuration + # Source bootmanager configuration . $srcdir/source/configuration @@ -38,6 +46,12 @@ srcdir=$(cd $(dirname $0) && pwd -P) # after a nonce check. DEST_SCRIPT=bootmanager.sh +if [ -n "$NODEGROUP" ] ; then + DEST_SCRIPT="${NODEGROUP}_bootmanager.sh" + # Remove the old version or any sym links prior to re-writing + rm -f ${DEST_SCRIPT} + rm -f ${DEST_SCRIPT}.sgn +fi cat > $DEST_SCRIPT <> $DEST_SCRIPT sed -i -e "s@^BOOT_API_SERVER.*@BOOT_API_SERVER=https://$PLC_API_HOST:443/$PLC_API_PATH/@" \ $srcdir/source/configuration +sed -i -e "s@^BOOT_SERVER.*@BOOT_SERVER=$PLC_BOOT_HOST@" $srcdir/source/configuration +if [ "$PLC_MONITOR_ENABLED" = "1" ]; then + MONITOR_SERVER=$PLC_MONITOR_HOST +else + MONITOR_SERVER=$PLC_BOOT_HOST +fi +sed -i -e "s@^MONITOR_SERVER.*@MONITOR_SERVER=$MONITOR_SERVER@" $srcdir/source/configuration + +install -D -m 644 $PLC_BOOT_CA_SSL_CRT $srcdir/source/cacert/$PLC_BOOT_HOST/cacert.pem +if [ -f $PLC_MONITOR_CA_SSL_CRT ] ; then + install -D -m 644 $PLC_MONITOR_CA_SSL_CRT $srcdir/source/cacert/$PLC_MONITOR_HOST/cacert.pem +fi + # Replace the default debug SSH key if [ -f "$PLC_DEBUG_SSH_KEY_PUB" ] ; then install -D -m 644 "$PLC_DEBUG_SSH_KEY_PUB" $srcdir/source/debug_files/debug_root_ssh_key fi +# Add python code from the following packages +# make sure they are in the 'Requires' header of the specfile +required_rpms="pypcilib pyplnet monitor-runlevelagent" +extra_libs=`mktemp -d "/tmp/.bootmanager.XXXXXX"` +mkdir $extra_libs/source +cp -p $(rpm -ql $required_rpms | grep -v '\.py[co]$') $extra_libs/source + # Embed the uuencoded tarball in the script -tar -cj -C $srcdir source/ | uuencode -m - >> $DEST_SCRIPT +tar -cj -C $srcdir source/ -C $extra_libs source/ | uuencode -m - >> $DEST_SCRIPT + +# Remove temp directory +rm -fr $extra_libs echo '_EOF_' >> $DEST_SCRIPT echo 'cd /tmp/source' >> $DEST_SCRIPT