X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.sh;h=9fe81cda495999b181b6685d4ea1a959a9ab0704;hb=refs%2Fheads%2Fmodular_build;hp=2334f2a0734559144f072cdd8a3ae79e1f418e72;hpb=2c02d23b234503e709b804cde1534dcf7cbad0b6;p=bootmanager.git diff --git a/build.sh b/build.sh index 2334f2a..9fe81cd 100755 --- a/build.sh +++ b/build.sh @@ -1,9 +1,96 @@ #!/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. +# +# 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 +# +# $Id: build.sh,v 1.5 2006/04/03 19:40:55 mlhuang Exp $ +# -rm -f *.fo *.pdf pdn-titlepage.xsl +# Source PLC configuration +if [ -f /etc/planetlab/plc_config ] ; then + . /etc/planetlab/plc_config +else + PLC_BOOT_HOST=boot.planet-lab.org + PLC_API_HOST=www.planet-lab.org + PLC_API_PATH=PLCAPI +fi -#xsltproc -output pdn-titlepage.xsl \ -# /usr/share/sgml/docbook/xsl-stylesheets/template/titlepage.xsl \ -# pdn-titlepage.xml +# Do not tolerate errors +set -e -xmlto -x pdn-pdf-style.xsl pdf boot-manager-pdn.xml +# Change to our source directory +srcdir=$(cd $(dirname $0) && pwd -P) + +# Source bootmanager configuration +. $srcdir/source/configuration + +# Write boot script. plc_www/boot/index.php writes this script out +# after a nonce check. + +DEST_SCRIPT=bootmanager.sh + +cat > $DEST_SCRIPT < \$UUDECODE + chmod +x \$UUDECODE +fi + +EOF + +echo '($UUDECODE | /bin/tar -C /tmp -xj) << _EOF_' >> $DEST_SCRIPT + +# XXX Currently, the value of PLC_API_PORT is set to 80 by default, so +# that the portions of the web site that still use oldapi can continue +# to work. However, the Boot Manager supports HTTPS access, which we +# want to remain the default, so hard code 443 here. +sed -i -e "s@^BOOT_API_SERVER.*@BOOT_API_SERVER=https://$PLC_API_HOST:443/$PLC_API_PATH/@" \ + $srcdir/source/configuration + +# 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 + +# Embed the uuencoded tarball in the script +tar -cj -C $srcdir source/ | uuencode -m - >> $DEST_SCRIPT + +echo '_EOF_' >> $DEST_SCRIPT +echo 'cd /tmp/source' >> $DEST_SCRIPT +echo 'chmod +x BootManager.py && ./BootManager.py' >> $DEST_SCRIPT + +# Sign the whole script, if the keyring is on this machine. +if [ -f "$PLC_ROOT_GPG_KEY" -a -f "$PLC_ROOT_GPG_KEY_PUB" ] ; then + gpg --homedir=/root \ + --no-default-keyring \ + --keyring "$PLC_ROOT_GPG_KEY_PUB" \ + --secret-keyring "$PLC_ROOT_GPG_KEY" \ + --yes --sign --output $DEST_SCRIPT.sgn \ + $DEST_SCRIPT +else + echo "Warning: Remember to sign $PWD/$DEST_SCRIPT!" >&2 +fi