#!/bin/sh

IMG=$1
PKGLISTFILE=$2

RETCODE=0

: ${DIST=fc14}

if ! [ $# -eq 2 ]; then
echo "usage $0 <img_file_name> <package_list>"
exit
fi

if [ "$VERBOSE" == "1" ]; then
    YUM_OPTS="$YUM_OPTS -q"
fi

if [ -f $IMG ]; then
        echo "-> Image file already exists, assuming *update*..."
        mount -o loop $IMG mnt || exit 1
        INSTALLDIR=`pwd`/mnt/
else

        echo "-> Preparing instalation of $DIST template..."
        rm -f keys base_rpms
        ln -sf keys_$DIST keys
        ln -sf base_rpms_$DIST base_rpms

        echo "-> Initializing empty image..."
        truncate -s 10G $IMG || exit 1

        echo "-> Creating filesystem..."
        mkfs.ext4 -q -F $IMG || exit 1

        mkdir -p mnt
        mount -o loop $IMG mnt || exit 1

        INSTALLDIR=`pwd`/mnt/

        echo "-> Initializing RPM database..."
        rpm --initdb --root=$INSTALLDIR
        rpm --import --root=$INSTALLDIR keys/*

        echo "-> Installing core RPM packages..."
        rpm -i --root=$INSTALLDIR base_rpms/*.rpm || exit 1

        cp clean_images/network $INSTALLDIR/etc/sysconfig
        cp clean_images/resolv.conf $INSTALLDIR/etc
        cp -a /dev/null /dev/zero /dev/random /dev/urandom $INSTALLDIR/dev/

fi

mount -t proc proc mnt/proc
PKGGROUPS=$(cat $PKGLISTFILE)
export YUM0=$PWD/yum_repo_qubes
echo "-> Installing package groups..."
yum clean all -c $PWD/yum.conf $YUM_OPTS -y --installroot=$PWD/mnt
yum install -c $PWD/yum.conf $YUM_OPTS -y --installroot=$INSTALLDIR $PKGGROUPS || RETCODE=1
yum update -c $PWD/yum.conf $YUM_OPTS -y --installroot=$INSTALLDIR || RETCODE=1

umount mnt/proc mnt

exit $RETCODE