# Building the Rumprun Platform

if [ ! -f StackRumpXenUnikernelConfig.st ] ; then
    echo Error: Missing file StackRumpXenUnikernelConfig.st
    exit
fi

BASEDIR=`pwd`/cogunikernel
mkdir -p $BASEDIR

cd $BASEDIR
git clone http://repo.rumpkernel.org/rumprun
cd rumprun
git submodule update --init
CC=cc ./build-rr.sh xen
#>> toolchain tuple: i486-rumprun-netbsdelf
#>> cc wrapper: i486-rumprun-netbsdelf-gcc
#>> installed to "/home/ben/Repos/cogunikernel/rumprun/./rumprun"

export PATH=$PATH:$BASEDIR/rumprun/rumprun/bin

cd $BASEDIR
git clone https://github.com/pharo-project/pharo-vm.git
cd pharo-vm/image
./newImage.sh
./pharo generator.image eval --save "FileStream fileIn:  '../../../StackRumpXenUnikernelConfig.st' " 
./pharo generator.image eval 'StackRumpXenUnikernelConfig new generateSources; generate'


cd $BASEDIR/pharo-vm/build
bash build.sh

cd $BASEDIR/pharo-vm/results
rumprun-bake xen_pv StackVM.unikernel StackVM 

echo -e '\nBUILD FINISHED!'
echo -e '\nNOW RUN THE UNIKERNEL...'
echo -e '    export PATH=$PATH:'$BASEDIR'/rumprun/rumprun/bin'
echo -e '    cd '$BASEDIR'/pharo-vm/results'
echo -e '    rumprun xen -i StackVM.unikernel'


echo -e '\nTHEN KILL IT FROM ANOTHER TERMINAL...'
echo -e '    xl list'
echo -e '    xl destroy rumprun-StackVM.unikernel\n'

