X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.functions;h=c59e904a35845853c6733ac4d5e6bef75835d0a7;hb=15d95f31b67b970d93e94ad9745a5a911b2eee0e;hp=7b166f1c6275557daed4d4139bf771acee50acda;hpb=0c29c08d533af36663ed92ca9f187ae1cb27f2d8;p=myplc.git diff --git a/build.functions b/build.functions index 7b166f1..c59e904 100644 --- a/build.functions +++ b/build.functions @@ -6,7 +6,7 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id: build.functions,v 1.5 2007/01/20 04:04:25 mlhuang Exp $ +# $Id:$ # PATH=/sbin:/bin:/usr/sbin:/usr/bin @@ -24,46 +24,22 @@ fi export PATH -# Release and architecture to install -PLC_DEVEL_FEDORA_RELEASE=$([ -f "/etc/fedora-release" ] && awk ' { print $4 } ' /etc/fedora-release || echo 4) -PLC_DEVEL_FEDORA_ARCH=$(uname -i) -# Fedora Core mirror from which to install filesystems -PLC_DEVEL_FEDORA_URL=file:///data/fedora +. build.common +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. 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: $0 [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 @@ -88,16 +64,7 @@ make_chroot() { 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 + pl_setup_chroot $root $packages $groups } # Move specified directories out of the chroot and into a "data" @@ -106,41 +73,12 @@ 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 + 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 + pl_make_image $root $image 100000000 }