# Build the xCAT-genesis-base rpm on a host system.
# Option 1:  install the xCAT-genesis-builder rpm (that includes this file) on a system installed with
#            the distro you want to use to build xCAT-genesis-base.
# Option 2:  untar the root file system of the distro you want to use and then chroot into it and copy
#            this whole dir into it somewhere (like /tmp).
# Then run this script.  The optional 1st arg should be mcp if you are building against mcp.
HOSTOS="$1"
DIR=`dirname $0`
#DIR=`realpath $DIR`
DIR=`readlink -f $DIR`

# get the input files for dracut in the right place
DRACUTMODDIR=/usr/share/dracut/modules.d/97xcat
mkdir -p $DRACUTMODDIR
cp $DIR/* $DRACUTMODDIR
if [ "$HOSTOS" = "mcp" ]; then
	sed -i 's/mkfs.btrfs//' $DRACUTMODDIR/install
	sed -i 's/\/etc\/redhat-release/\/etc\/base-release \/etc\/system-release/' $DRACUTMODDIR/install
	sed -i 's/btrfs//' $DRACUTMODDIR/installkernel

	# these are needed for sysclone, but are not yet in mcp
	sed -i 's/ bc//' $DRACUTMODDIR/install
	sed -i 's/ mkdosfs//' $DRACUTMODDIR/install
	sed -i 's/ rsync//' $DRACUTMODDIR/install
	sed -i 's/ kexec//' $DRACUTMODDIR/install
	sed -i 's/ klogd//' $DRACUTMODDIR/install
	sed -i 's/ mdadm//' $DRACUTMODDIR/install
fi
mkdir -p /tmp/xcatgenesis.$$/opt/xcat/share/xcat/netboot/genesis/`uname -m`/fs 

# run dracut
if [ "$HOSTOS" = "mcp" ]; then
	KPATH=`/bin/ls -d /lib/modules/*.x86_64`
	KERNELVERSION=`basename $KPATH`
	echo Creating the initramfs in /tmp/xcatgenesis.$$.rfs using dracut and kernel $KERNELVERSION ...
else
	echo Creating the initramfs in /tmp/xcatgenesis.$$.rfs using dracut ...
fi
dracut -m "xcat base" -f /tmp/xcatgenesis.$$.rfs $KERNELVERSION

echo Expanding the initramfs into /tmp/xcatgenesis.$$/opt/xcat/share/xcat/netboot/genesis/`uname -m`/fs ...
cd /tmp/xcatgenesis.$$/opt/xcat/share/xcat/netboot/genesis/`uname -m`/fs 
zcat /tmp/xcatgenesis.$$.rfs|cpio -dumi

# add the kernel
if [ "$HOSTOS" = "mcp" ]; then
	echo Adding kernel /boot/vmlinuz-* ...
	cp /boot/vmlinuz-*.x86_64 /tmp/xcatgenesis.$$/opt/xcat/share/xcat/netboot/genesis/`uname -m`/kernel
else
	echo Adding kernel /boot/vmlinuz-`uname -r` ...
	cp /boot/vmlinuz-`uname -r` /tmp/xcatgenesis.$$/opt/xcat/share/xcat/netboot/genesis/`uname -m`/kernel
fi
cd -

# create tar file
echo Tarring /tmp/xcatgenesis.$$/opt into ~/rpmbuild/SOURCES/xCAT-genesis-base-`uname -m`.tar.bz2 ...
cd /tmp/xcatgenesis.$$
tar jcf ~/rpmbuild/SOURCES/xCAT-genesis-base-`uname -m`.tar.bz2 opt

# build the rpm
echo Building xCAT-genesis-base rpm from ~/rpmbuild/SOURCES/xCAT-genesis-base-`uname -m`.tar.bz2 and $DIR/xCAT-genesis-base.spec ...
rpmbuild -ba $DIR/xCAT-genesis-base.spec 
rm -rf $DRACUTMODDIR
