X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.functions;h=15277e40f8aad6418d9c4bbffc5927f01f110784;hb=effaa2138be88157b2322de42fe9395694918acf;hp=8281801fafe7651f8f2917ecc8cca9c59d383947;hpb=1dc466186b2ba51649ffc000429fe9496ca467bb;p=myplc.git diff --git a/build.functions b/build.functions index 8281801..15277e4 100644 --- a/build.functions +++ b/build.functions @@ -6,7 +6,7 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id: functions,v 1.6 2006/07/10 21:05:37 mlhuang Exp $ +# $Id$ # PATH=/sbin:/bin:/usr/sbin:/usr/bin @@ -24,51 +24,22 @@ fi export PATH -# Release and architecture to install -PLC_DEVEL_FEDORA_RELEASE=4 -PLC_DEVEL_FEDORA_ARCH=i386 +. build.common -# Fedora Core mirror from which to install filesystems -PLC_DEVEL_FEDORA_URL=file:///usr/share/mirrors/fedora - -# Build myplc inside myplc-devel -PLC_DEVEL_BOOTSTRAP=true +pl_process_fedora_options $@ +shiftcount=$? +shift $shiftcount +# XXX Backwards compatibility with old myplc-devel environment # We may be running inside a myplc-devel environment, which can -# override these defaults. Specifically, whether to build myplc inside -# myplc-devel (PLC_DEVEL_BOOTSTRAP). +# override these defaults. if [ -f /etc/planetlab/plc_config ] ; then . /etc/planetlab/plc_config + [ ! -z "$PLC_DEVEL_FEDORA_RELEASE" ] && pl_FEDORA_RELEASE=$PLC_DEVEL_FEDORA_RELEASE + [ ! -z "$PLC_DEVEL_FEDORA_ARCH" ] && pl_FEDORA_ARCH=$PLC_DEVEL_FEDORA_ARCH + [ ! -z "$PLC_DEVEL_FEDORA_URL" ] && pl_FEDORA_URL=$PLC_DEVEL_FEDORA_URL fi -usage() -{ - echo "Usage: build.sh [OPTION]..." - echo " -l url Fedora mirror location (default: $PLC_DEVEL_FEDORA_URL)" - echo " -r release Fedora release number (default: $PLC_DEVEL_FEDORA_RELEASE)" - echo " -a arch Fedora architecture (default: $PLC_DEVEL_FEDORA_ARCH)" - echo " -h This message" - exit 1 -} - -# Get options -while getopts "l:r:a:h" opt ; do - case $opt in - l) - PLC_DEVEL_FEDORA_URL=$OPTARG - ;; - r) - PLC_DEVEL_FEDORA_RELEASE=$OPTARG - ;; - a) - PLC_DEVEL_FEDORA_ARCH=$OPTARG - ;; - h|*) - usage - ;; - esac -done - # Do not tolerate errors set -e @@ -77,75 +48,117 @@ set -x # Make a basic chroot at the specified location given the specified # configuration. -make_chroot() { +make_chroot_from_lst() { root=$1 - config=$2 - - # Get group list - groups= - while read group ; do - groups="$groups -g \"$group\"" - done < <(./plc-config --groups $config) - - # Get package list - packages= - while read package ; do - packages="$packages -p \"$package\"" - done < <(./plc-config --packages $config) - - # Install base system - eval mkfedora -v -l $PLC_DEVEL_FEDORA_URL -r $PLC_DEVEL_FEDORA_RELEASE -a $PLC_DEVEL_FEDORA_ARCH $packages $groups $root - - # Disable all services in reference image - chroot $root sh -c "/sbin/chkconfig --list | awk '{ print \$1 }' | xargs -i /sbin/chkconfig {} off" - - # FC2 minilogd starts up during shutdown and makes unmounting - # impossible. Just get rid of it. - rm -f $root/sbin/minilogd - ln -nsf /bin/true $root/sbin/minilogd + lst=$2 + + packages=$(pl_getPackagesOptions $lst) + groups=$(pl_getGroupsOptions $lst) + + pl_setup_chroot $root $packages $groups } # Move specified directories out of the chroot and into a "data" # directory that will be bind mounted on /data inside the chroot. -move_datadirs() { - root=$1 - data=$2 - shift 2 - - mkdir -p $root/data - for datadir in "$@" ; do - mkdir -p ${data}$datadir - if [ -d $root/$datadir -a ! -h $root/$datadir ] ; then - (cd $root && find ./$datadir | cpio -p -d -u ../$data/) - fi - rm -rf $root/$datadir - mkdir -p $(dirname $root/$datadir) - ln -nsf /data$datadir $root/$datadir - done -} +#move_datadirs() { +# root=$1 +# data=$2 +# shift 2 +# pl_move_dirs $root $data /data "$@" +#} # Make loopback filesystem from specified location -make_image() { - root=$1 - image=$2 - - # Leave about 100 MB free space and allow for about 20% inode overhead - bytes=$((($(du -sb $root | cut -f1) + 100000000) * 120 / 100)) - bs=4096 - blocks=$(($bytes / $bs)) - dd bs=$bs count=$blocks if=/dev/zero of=$image - mkfs.ext3 -b $bs -j -F $image - - # Temporarily mount it - tmp=$(mktemp -d tmp.XXXXXX) - mount -o loop $image $tmp - trap "umount $tmp; rmdir $tmp" ERR INT - - # Move files to it - (cd $root && tar cpf - .) | (cd $tmp && tar xpf -) - - # Unmount it - umount $tmp - rmdir $tmp - trap - ERR INT +#make_image() { +# root=$1 +# image=$2 +# pl_make_image $root $image 100000000 +#} + +function yum_conf_to_build_host () { + BUILD_HOST=$(hostname) + cat < $php + +

Build-time error - could not locate documentation $html

+__header_no_doc__ + else + # insert header, makes sure we have a trailing eol + (cat << __header_doc__ ; cat $html ) > $php + +__header_doc__ + # ignore ed return status + set +e + # cuts off around the + # preserves the 4 first lines that we just added as a header + ed -s $php << __ed_script__ +/BODY/ +/>/ +s,><,<, +5,-d +$ +?/BODY? +s,><.*,>, ++ +;d +w +q +__ed_script__ + set -e + fi +}