X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.sh;h=068e381231d3dd34a63fe2fb299152db87ebf07d;hb=8404a0f3da559c3f32b8078fbf5ea317d40785f8;hp=7ecf15a9fafba3f99f19a0918580b94331d7282c;hpb=bcf330467280e1ce306062b92565199721e57cff;p=bootstrapfs.git diff --git a/build.sh b/build.sh index 7ecf15a..068e381 100755 --- a/build.sh +++ b/build.sh @@ -1,7 +1,6 @@ #!/bin/bash # -# Build PlanetLab-Bootstrap.tar.bz2, the reference image for PlanetLab -# nodes. +# Build bootstrapfs-*.tar.bz2, the reference image(s) for PlanetLab nodes. # # Mark Huang # Marc E. Fiuczynski @@ -12,7 +11,7 @@ # -# This will build the Planetlab-Bootstrap.tar.bz2, which comprises +# This will build the bootstrafs-*.tar.bz2 images, which comprises # the base root image on the node, then create the ${NAME} bootstrap image # which is made up of just the additional files needed for a ${NAME} nodegroup # node. @@ -20,14 +19,13 @@ PATH=/sbin:/bin:/usr/sbin:/usr/bin -# In both a normal CVS environment and a PlanetLab RPM -# build environment, all of our dependencies are checked out into -# directories at the same level as us. +# in the PlanetLab build environment, our dependencies are checked out +# into directories at the same level as us. if [ -d ../build ] ; then PATH=$PATH:../build srcdir=../ else - echo "Error: Could not find $(cd ../.. && pwd -P)/build/" + echo "Error: Could not find ../build in $(pwd)" exit 1 fi @@ -39,9 +37,9 @@ pl_process_fedora_options $@ shiftcount=$? shift $shiftcount -# pldistro expected as $1 - defaults to planetlab -pldistro=planetlab -[ -n "$@" ] && pldistro=$1 +# expecting fcdistro and pldistro on the command line +fcdistro=$1; shift +pldistro=$1; shift # Do not tolerate errors set -e @@ -53,7 +51,7 @@ export PL_BOOTCD=1 echo "+++++++++++++pkgsfile=$pkgsfile (and -k)" -# Populate a minimal /dev and then the files for the base PlanetLab-Bootstrap content +# Populate a minimal /dev and then the files for the base bootstrapfs content vref=${PWD}/base install -d -m 755 ${vref} pl_root_makedevs $vref @@ -62,12 +60,19 @@ pkgsfile=$(pl_locateDistroFile ../build/ ${pldistro} bootstrapfs.pkgs) # -k = exclude kernel* packages pl_root_mkfedora -k -f $pkgsfile ${vref} +# optionally invoke a post processing script after packages from +# $pkgsfile have been installed +pkgsdir=$(dirname $pkgsfile) +pkgsname=$(basename $pkgsfile .pkgs) +postfile="${pkgsdir}/${pkgsname}.post" +[ -f $postfile ] && /bin/bash $postfile ${vref} || : + # for distros that do not define bootstrapfs variants -shopt -s nullglob -for pkgs in ../build/config.${pldistro}/bootstrapfs-*.pkgs ; do +pkgs_count=$(ls ../build/config.${pldistro}/bootstrapfs-*.pkgs 2> /dev/null | wc -l) +[ $pkgs_count -gt 0 ] && for pkgs in $(ls ../build/config.${pldistro}/bootstrapfs-*.pkgs); do NAME=$(basename $pkgs .pkgs | sed -e s,bootstrapfs-,,) - echo "--------START BUILDING PlanetLab-Bootstrap-${NAME}: $(date)" + echo "--------START BUILDING bootstrapfs-${NAME}: $(date)" # "Parse" out the packages and groups for yum packages=$(pl_getPackages ${pl_DISTRO_NAME} $pkgs) @@ -92,17 +97,13 @@ for pkgs in ../build/config.${pldistro}/bootstrapfs-*.pkgs ; do umount ${vdir}/proc fi - # Remove unneeded services - for service in util-vserver vprocunhide vservers-default; do - chroot ${vdir} /sbin/chkconfig $service off - done - - # Disable splaying of cron. - # At this step, vdir is base, and vref is the set of changes that end up in the nodegroup - echo > ${vdir}/etc/sysconfig/crontab + # optionally invoke a post processing script after packages from + # $pkgs have been installed + pkgsdir=$(dirname $pkgs) + pkgsname=$(basename $pkgs .pkgs) + postfile="${pkgsdir}/${pkgsname}.post" + [ -f $postfile ] && /bin/bash $postfile ${vdir} || : - # Add site_admin account - chroot ${vdir} /usr/sbin/useradd -p "" -u 502 -m site_admin # Create a copy of the ${NAME} bootstrap filesystem w/o the base # bootstrap filesystem and make it smaller. This is a three step @@ -132,17 +133,18 @@ for pkgs in ../build/config.${pldistro}/bootstrapfs-*.pkgs ; do rm -f ${vdir}.changes mv ${vdir}-tmp ${vdir} - echo "--------STARTING tar'ing PlanetLab-Bootstrap-${NAME}.tar.bz2: $(date)" - tar -cpjf ${pldistro}-filesystems/PlanetLab-Bootstrap-${NAME}.tar.bz2 -C ${vdir} . - echo "--------FINISHED tar'ing PlanetLab-Bootstrap-${NAME}.tar.bz2: $(date)" - echo "--------DONE BUILDING PlanetLab-Bootstrap-${NAME}: $(date)" + echo "--------STARTING tar'ing bootstrapfs-${NAME}-${pl_DISTRO_ARCH}.tar.bz2: $(date)" + tar -cpjf ${pldistro}-filesystems/bootstrapfs-${NAME}-${pl_DISTRO_ARCH}.tar.bz2 -C ${vdir} . + echo "--------FINISHED tar'ing bootstrapfs-${NAME}-${pl_DISTRO_ARCH}.tar.bz2: $(date)" + echo "--------DONE BUILDING bootstrapfs-${NAME}-${pl_DISTRO_ARCH}: $(date)" done # Build the base Bootstrap filesystem # clean out yum cache to reduce space requirements -yum -c ${vref}/etc/yum.conf --installroot=${vdir} -y clean all -echo "--------STARTING tar'ing PlanetLab-Bootstrap.tar.bz2: $(date)" -tar -cpjf PlanetLab-Bootstrap.tar.bz2 -C ${vref} . -echo "--------FINISHED tar'ing PlanetLab-Bootstrap.tar.bz2: $(date)" +yum -c ${vref}/etc/yum.conf --installroot=${vref} -y clean all + +echo "--------STARTING tar'ing bootstrapfs-${pldistro}-${pl_DISTRO_ARCH}.tar.bz2: $(date)" +tar -cpjf bootstrapfs-${pldistro}-${pl_DISTRO_ARCH}.tar.bz2 -C ${vref} . +echo "--------FINISHED tar'ing bootstrapfs-${pldistro}-${pl_DISTRO_ARCH}.tar.bz2: $(date)" exit 0