cosmetic, remove unused vars.
[myplc.git] / build.functions
index c99941e..a96e295 100644 (file)
@@ -6,7 +6,7 @@
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2006 The Trustees of Princeton University
 #
-# $Id: build.functions,v 1.7 2007/08/24 06:46:39 mef Exp $
+# $Id$
 #
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
@@ -24,129 +24,59 @@ fi
 
 export PATH
 
-# Release and architecture to install
-PLC_DEVEL_FEDORA_RELEASE=$([ -f "/etc/fedora-release" ] && awk ' { if ($3=="Core") print $4; else print $3 } ' /etc/fedora-release || echo 4)
-PLC_DEVEL_FEDORA_ARCH=$(uname -i)
-# Fedora Core mirror from which to install filesystems
-# xxx don't set URL... mkfedora will pick up the right thing
-#PLC_DEVEL_FEDORA_URL=file:///data/fedora
-PLC_DEVEL_FEDORA_URL=
+. 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
 
 # Be verbose
 set -x
 
-# Make a basic chroot at the specified location given the specified
-# configuration.
-make_chroot() {
-    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
-    if [ ! -z "$PLC_DEVEL_FEDORA_URL" ] ; then
-       eval mkfedora -v -l $PLC_DEVEL_FEDORA_URL -r $PLC_DEVEL_FEDORA_RELEASE -a $PLC_DEVEL_FEDORA_ARCH $packages $groups $root
+# this is fragile, as the actual layout may vary from one mirror to the other
+# however this should be in line with the layouts obtained 
+# when running build/vbuild-fedora-mirror.sh
+
+function yum_conf_to_build_host () {
+    build_dir=$1; shift
+    BUILD_HOST=$(hostname)
+
+    cat <<EOF
+[main]
+cachedir=/var/cache/yum
+debuglevel=2
+logfile=/var/log/yum.log
+pkgpolicy=newest
+distroverpkg=redhat-release
+tolerant=1
+exactarch=1
+retries=10
+obsoletes=1
+gpgcheck=0
+# Prevent yum-2.4 from loading additional repository definitions
+# (e.g., from /etc/yum.repos.d/)
+reposdir=/dev/null
+
+EOF
+
+    template=$build_dir/mirroring/${pl_DISTRO_NAME}/yum.repos.d/building.repo.in
+    if [ ! -f $template ] ; then
+       echo "# MyPLC/$0: cannot find template $template"
     else
-       eval mkfedora -v -r $PLC_DEVEL_FEDORA_RELEASE -a $PLC_DEVEL_FEDORA_ARCH $packages $groups $root
+       sed -e s,@MIRRORURL@,http://${BUILD_HOST}/mirror/, $template
     fi
-
-    # 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
 }
 
-# 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
-}
-
-# 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
-}