#!/bin/bash

TOPDIR=$PWD
LOGFILE=$PWD/vbox_svn.log
SVNPATH=$PWD/vbox-svn
BUILDPATH=$PWD/vbox-build
BINPATH=$PWD/vbox-bin
DEBPATH=$PWD/vbox-deb
PACKAGENAME=virtualbox-svn.deb

cleanDirs()
{
	echo -n Cleaning old builds... 
	rm -rf $BUILDPATH $BINPATH $DEBPATH > $LOGFILE 2>&1 
	mkdir $BUILDPATH $BINPATH >> $LOGFILE 2>&1  
	tar zxpf vbox-deb.tar.gz
	echo DONE
}

getSvn()
{
	echo -n Downloading current version from SVN... 
	svn co http://virtualbox.org/svn/vbox/trunk $SVNPATH >> $LOGFILE 2>&1  
	SVNVERSION=$(svnversion $SVNPATH)
	echo DONE
	if [ -n "$SVNVERSION" ]; then
		echo Downloaded version $SVNVERSION
		PACKAGENAME=$(echo virtualbox-svn-$SVNVERSION.deb)
		sed -i s/1.3.99_Ubuntu_edgy/1.3.99-$(echo $SVNVERSION)_Ubuntu_edgy/g $DEBPATH/DEBIAN/control
	fi
}

build()
{
	echo -n Building current release at $BINPATH...
	cp -r $SVNPATH/* $BUILDPATH >> $LOGFILE 2>&1  
	cd $BUILDPATH >> $LOGFILE 2>&1  
	./configure >> $LOGFILE 2>&1  
	source env.sh >> $LOGFILE 2>&1  
	export PATH_OUT=$BINPATH
	kmk VBOX_WITH_TESTCASES= all >> $LOGFILE 2>&1  
	echo DONE
}

installModules()
{
	echo -n Building system modules...
	cd $BINPATH/src
	make >> $LOGFILE 2>&1  
	sudo make install >> $LOGFILE 2>&1  
	echo DONE
}

buildDebian(){
	echo -n Copying files to tree structure...
	INDIR=$BINPATH/bin
	cd $INDIR

	#/opt/VirtualBox1.3.99
	#VBox.sh must already exist
	OPTDIR=$DEBPATH/opt/VirtualBox-1.3.99 
	OPTFILES='tstVMM VBoxManage VBoxSDL VBoxSVC VBoxXPCOMIPCD VirtualBox vditool'
	cp $OPTFILES $OPTDIR

	#/opt/VirtualBox-1.3.99/additions

	#/opt/VirtualBox1.3.99/components
	#COMPONENTSDIR=$OPTDIR/components
	COMPONENTSDIR=$OPTDIR
	COMPONENTSFILES='VBoxC.so  VBoxSVCM.so VBoxXPCOMBase.xpt  VBoxXPCOMIPCC.so  VirtualBox_XPCOM.xpt'
	cp $COMPONENTSFILES $COMPONENTSDIR
	cp -r components $OPTDIR

	#/opt/VirtualBox1.3.99/sdk
	cp -r sdk $OPTDIR

	#/opt/VirtualBox1.3.99/src
	cp -r src $OPTDIR

	#/opt/VirtualBox1.3.99/nls
	cp -r nls $OPTDIR
	
	#/usr
	USRDIR=$DEBPATH/usr

	#/usr/lib
	#USRLIBDIR=$USRDIR/lib
	USRLIBDIR=$OPTDIR
	USRLIBFILES='VBoxDD2.so VBoxDD.so VBoxDDU.so VBoxREM.so VBoxREMImp.so VBoxRT.so VBoxVMM.so VBoxXML.so VBoxXPCOM.so'
	cp $USRLIBFILES $USRLIBDIR

	#/usr/lib/virtualbox
	#USRLIBVBDIR=$USRLIBDIR/virtualbox
	USRLIBVBDIR=$OPTDIR
	USRLIBVBFILES='VBoxDD2GC.gc VBoxDD2R0.r0 VBoxDDGC.gc VBoxDDR0.r0 VMMGC.gc VMMR0.r0'
	cp $USRLIBVBFILES $USRLIBVBDIR
	echo DONE

	echo -n Building $PACKAGENAME ...
   cd $TOPDIR
	dpkg-deb -b $DEBPATH $PACKAGENAME >> $LOGFILE 2>&1
	echo DONE
}

cleanDirs
getSvn
build
buildDebian
