#!/bin/sh
[ `id -u` = 0 ] || { echo "must be root"; exit 1; }

###
### An attempt to build VBox + GAs from script
### BEWARE: this build needs approx 1GB RAM and 1GB free HD space
###

export CFLAGS="-march=i486 -mtune=i686 -pipe"
export CXXFLAGS="-march=i486 -mtune=i686 -pipe -fexceptions -frtti"
export CPPFLAGS="-I/usr/local/include"
export LDFLAGS="-L/usr/local/lib"
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

VERSION="3.0.12"
BUILDTYPE="release"
TODAY=`date +%Y/%m/%d`
TCUSER=`cat /etc/sysconfig/tcuser`
KERNVER=`uname -r`
THISDIR=`pwd`
INCLUDEDIR="${THISDIR}/include"
EXTDIR="${THISDIR}/pkg"
LOGDIR="${EXTDIR}/logs"
HOSTUTILDIR="${EXTDIR}/vboxhost-util"
HOSTMODDIR="${EXTDIR}/vboxhost-mod"
HOSTUTILNAME="VBox-OSE"
HOSTMODNAME="${HOSTUTILNAME}-modules-${KERNVER}"
GAUTILDIR="${EXTDIR}/vboxga-util"
GAX11DIR="${EXTDIR}/vboxga-x11"
GAMODDIR="${EXTDIR}/vboxga-mod"
GAUTILNAME="VBox-OSE-additions"
GAX11NAME="${GAUTILNAME}-x11"
GAMODNAME="${GAUTILNAME}-modules-${KERNVER}"

VBOXMIRROR="http://download.virtualbox.org/virtualbox/${VERSION}/"
VBOXDOWNLOAD="VirtualBox-${VERSION}-OSE.tar.bz2"
VBOXSRCDIR="${THISDIR}/VirtualBox-${VERSION}_OSE"
VBOXOUTDIR="${VBOXSRCDIR}/out/linux.x86/${BUILDTYPE}"

HOMEPAGE="http://www.virtualbox.org"
AUTHOR="Sun Microsystems"
LICENSE="GPL2"
ME="Kingdomcome"
COMPILEFLAGS="--disable-pulse --disable-hardening"
if [ "${BUILDTYPE}" == "debug" ]; then
   COMPILEFLAGS="--build-debug ${COMPILEFLAGS}"
elif [ "${BUILDTYPE}" == "profile" ]; then
   COMPILEFLAGS="--build-profile ${COMPILEFLAGS}"
fi

environment(){
   cd ${THISDIR}
   deps="compiletc.tcz Xorg-7.4-dev.tcz qt-4.5-base.tcz qt-4.5-dev.tcz
         qt-4.5-xml.tcz SDL.tcz SDL-dev.tcz alsa.tcz alsa-dev.tcz
         curl.tcz curl-dev.tcz expat2.tcz hal.tcz libcap.tcz
         libIDL.tcz libxml2.tcz libxml2-dev.tcz libxslt.tcz
         linux-headers-${KERNVER}.tcz python.tcz python-dev.tcz iasl.tcz
         squashfs-tools-4.0.tcz glib2-dev.tcz Dev86.tcz procps.tcz
         hwmon-${KERNVER}.tcz hal-dev.tcz Xorg-7.4.tcz"
   
   for each in ${deps}; do sudo -u ${TCUSER} tce-load -w -i ${each}; done
   
   [ -f "${VBOXDOWNLOAD}" ] || wget ${VBOXMIRROR}${VBOXDOWNLOAD}
   
   if [ -d ${VBOXSRCDIR} ]; then
      echo "Removing VBox old source dir"
      rm -rf ${VBOXSRCDIR}
   fi
   echo "Unpacking new VBox source" && tar xjf ${VBOXDOWNLOAD}
   
   [ -d ${LOGDIR} ] && rm -rf ${LOGDIR}/* || mkdir -p ${LOGDIR}
}

buildbase(){
   cd ${VBOXSRCDIR}
   
   cp ${INCLUDEDIR}/LocalConfig.kmk .
   sed -i 's/python2.5/python2.6/g' configure
### disable updating
   patch -Np1 -i ${INCLUDEDIR}/16-no-update.dpatch
   patch -Np1 -i ${INCLUDEDIR}/u01-disable-update-action.dpatch
   ./configure ${COMPILEFLAGS} 2>&1 | tee ${LOGDIR}/config.log
   source ./env.sh
   kmk all 2>&1 | tee ${LOGDIR}/kmk.log
   
### build host kernel modules
   cd ${VBOXOUTDIR}/bin/src
   make 2>&1 | tee ${LOGDIR}/host-mods-make.log
   
### build guest kernel modules
   cd ${VBOXSRCDIR}/src/VBox/Additions/linux
   ./export_modules vboxmodules.tar.gz
   tar xzf vboxmodules.tar.gz
   cd vboxadd
   make 2>&1 | tee ${LOGDIR}/guest-mods-make.log
   cd ../vboxvfs
   make 2>&1 | tee -a ${LOGDIR}/guest-mods-make.log
   cd ../drm
   mv Makefile.module Makefile
   make 2>&1 | tee -a ${LOGDIR}/guest-mods-make.log
}

installhostutils(){
### clean up last build
   if [ -d ${HOSTUTILDIR} ]; then
      rm -rf ${HOSTUTILDIR}/*
      rm -f ${EXTDIR}/${HOSTUTILNAME}.*
   else
      mkdir -p ${HOSTUTILDIR}
   fi
   cd ${VBOXSRCDIR}
   
### license
   install -D -m 644 COPYING \
   ${HOSTUTILDIR}/usr/local/share/doc/License/${HOSTUTILNAME}.txt
   
### icon
   install -d -m 775 ${HOSTUTILDIR}/usr/local/tce.icons
   install -m 644 \
   src/VBox/Frontends/VirtualBox/images/OSE/VirtualBox_48px.png \
   ${HOSTUTILDIR}/usr/local/tce.icons/VBox.png
   
   cd ${VBOXOUTDIR}/bin
   rm -rf sdk tst* testcase SUPInstall SUPUninstall
   
### binaries, wrappers
   install -D -m 0755 VBox.sh ${HOSTUTILDIR}/usr/local/bin/VBox
   ln -sf VBox ${HOSTUTILDIR}/usr/local/bin/VBoxHeadless
   ln -sf VBox ${HOSTUTILDIR}/usr/local/bin/VBoxManage
   ln -sf VBox ${HOSTUTILDIR}/usr/local/bin/VBoxSDL
   ln -sf VBox ${HOSTUTILDIR}/usr/local/bin/VirtualBox
   
   install -m 0755 VBoxTunctl ${HOSTUTILDIR}/usr/local/bin
   
### components
   install -d ${HOSTUTILDIR}/usr/local/lib/virtualbox/components
   install -m 0755 components/* \
           ${HOSTUTILDIR}/usr/local/lib/virtualbox/components
   
### libs
   install -m 0755 *.so ${HOSTUTILDIR}/usr/local/lib/virtualbox
   install -m 0644 *.gc *.r0 ${HOSTUTILDIR}/usr/local/lib/virtualbox
   
### setuid binaries
   install -m 4755 VBoxHeadless VBoxSDL VBoxNetDHCP VBoxNetAdpCtl \
                   VirtualBox VBoxBFE \
           ${HOSTUTILDIR}/usr/local/lib/virtualbox
   
### binaries
   install -m 0755 VBoxManage VBoxSVC VBoxXPCOMIPCD VBoxSysInfo.sh \
                   xpidl VBoxTestOGL vboxshell.py \
           ${HOSTUTILDIR}/usr/local/lib/virtualbox
   
### language
   install -d ${HOSTUTILDIR}/usr/local/share/virtualbox/nls
   install -m 0755 nls/* ${HOSTUTILDIR}/usr/local/share/virtualbox/nls
   
### include udev rules
   install -D -m 0644 ${INCLUDEDIR}/60-vbox.rules \
           ${HOSTUTILDIR}/usr/local/etc/udev/rules.d/60-vbox.rules
   
### include init script
   install -D -m 0744 ${INCLUDEDIR}/vboxdrv \
           ${HOSTUTILDIR}/usr/local/etc/init.d/vboxdrv
   
### include freedesktop item
   install -D -m 0644 ${INCLUDEDIR}/virtualbox.desktop \
   ${HOSTUTILDIR}/usr/local/share/applications/virtualbox.desktop
}

installhostmods(){
### clean up last build
   if [ -d ${HOSTMODDIR} ]; then
      rm -rf ${HOSTMODDIR}/*
      rm -f ${EXTDIR}/${HOSTMODNAME}.*
   else
      mkdir -p ${HOSTMODDIR}
   fi
   
### kernel modules
   cd ${VBOXOUTDIR}/bin/src
   install -d ${HOSTMODDIR}/usr/local/lib/modules/${KERNVER}/kernel/misc
   install -m 0644 vboxdrv.ko vboxnetflt.ko vboxnetadp.ko \
           ${HOSTMODDIR}/usr/local/lib/modules/${KERNVER}/kernel/misc
}
   
installgautils(){
### clean up last build
   if [ -d ${GAUTILDIR} ]; then
      rm -rf ${GAUTILDIR}/*
      rm -f ${EXTDIR}/${GAUTILNAME}.*
   else
      mkdir -p ${GAUTILDIR}
   fi
   
### license
   cd ${VBOXSRCDIR}
   install -D -m 0644 COPYING \
           ${GAUTILDIR}/usr/local/share/doc/License/${GAUTILNAME}.txt
   
### shared folder mount
   cd ${VBOXOUTDIR}/bin/additions
   install -D -m 0755 mountvboxsf \
           ${GAUTILDIR}/usr/local/sbin/mount.vboxsf
}

installgax11(){
### clean up last build
   if [ -d ${GAX11DIR} ]; then
      rm -rf ${GAX11DIR}/*
      rm -f ${EXTDIR}/${GAX11NAME}.*
   else
      mkdir -p ${GAX11DIR}
   fi
   
   cd ${VBOXSRCDIR}
### license
   install -D -m 0644 COPYING \
           ${GAX11DIR}/usr/local/share/doc/License/${GAX11NAME}.txt
   
### RandR wrapper edited for some bugs
   install -D -m 0755 ${INCLUDEDIR}/VBoxRandR \
           ${GAX11DIR}/usr/local/bin/VBoxRandR
   
### wrapper to start all client services
   install -m 0755 ${INCLUDEDIR}/VBoxClient-all \
           ${GAX11DIR}/usr/local/bin
   
### binaries
   cd ${VBOXOUTDIR}/bin/additions
   install -m 0755 VBoxClient VBoxControl VBoxService \
           ${GAX11DIR}/usr/local/bin/
   
### libs
   install -d ${GAX11DIR}/usr/local/lib/dri
   install -m 0755 VBoxOGL*.so ${GAX11DIR}/usr/local/lib/
   ln -sf /usr/local/lib/VBoxOGL.so \
      ${GAX11DIR}/usr/local/lib/dri/vboxvideo_dri.so
   
### x11 drivers
   install -D -m 0755 vboxmouse_drv_16.so \
           ${GAX11DIR}/usr/local/lib/X11/modules/drivers/vboxmouse.so
   install -m 0755 vboxvideo_drv_16.so \
           ${GAX11DIR}/usr/local/lib/X11/modules/drivers/vboxvideo.so
   
### include xorg.conf
   install -D -m 0644 ${INCLUDEDIR}/xorg.conf \
           ${GAX11DIR}/usr/local/etc/X11/xorg.conf
}

installgamods(){
### clean up last build
   if [ -d ${GAMODDIR} ]; then
      rm -rf ${GAMODDIR}/*
      rm -f ${EXTDIR}/${GAMODNAME}.*
   else
      mkdir -p ${GAMODDIR}
   fi
### kernel modules
   cd ${VBOXSRCDIR}/src/VBox/Additions/linux
   install -d \
           ${GAMODDIR}/usr/local/lib/modules/${KERNVER}/kernel/misc
   install -m 0644 vboxadd/vboxadd.ko vboxvfs/vboxvfs.ko drm/vboxvideo.ko \
           ${GAMODDIR}/usr/local/lib/modules/${KERNVER}/kernel/misc
}

writehostextras(){
   cd ${HOSTUTILDIR}
### set path to TC default
   sed -i '/PATH/ {
   c PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"
   }' usr/local/bin/VBox
   
### set correct cfg location
   sed -i '/CONFIG=/ c CONFIG="/usr/local/etc/vbox/vbox.cfg"' usr/local/bin/VBox
   
### write cfg
   mkdir -p usr/local/etc/vbox
   echo 'INSTALL_DIR="/usr/local/lib/virtualbox"' > usr/local/etc/vbox/vbox.cfg
   
### write post-install script
   mkdir -pm 775 usr/local/tce.installed
cat <<EOF> usr/local/tce.installed/${HOSTUTILNAME}
#!/bin/sh

TCUSER=\$(cat /etc/sysconfig/tcuser)
addgroup vboxusers
addgroup \${TCUSER} vboxusers
ln -s /usr/local/etc/init.d/vboxdrv /etc/init.d
ln -s /usr/local/etc/udev/rules.d/60-vbox.rules /etc/udev/rules.d

/etc/init.d/vboxdrv start
EOF
   chmod 775 usr/local/tce.installed/${HOSTUTILNAME}
   
### write menu item
   mkdir -pm 775 usr/local/tce.menu
cat <<EOF> usr/local/tce.menu/${HOSTUTILNAME}
<JWM>
  <Program label="Virtual Box">VirtualBox</Program>
</JWM>
EOF
   chmod 644 usr/local/tce.menu/${HOSTUTILNAME}
   
### write icon item
cat <<EOF> usr/local/tce.icons/${HOSTUTILNAME}
i: /usr/local/tce.icons/VBox.png
t: Virtual Box
c: /usr/local/bin/VirtualBox
EOF
   chmod 644 usr/local/tce.icons/${HOSTUTILNAME}
   
### dont clobber tc setup
   chown -R root:staff usr/local/tce.*
}

writegax11extras(){
   cd ${GAX11DIR}
### post-install script
   mkdir -pm 775 usr/local/tce.installed
cat <<EOF> usr/local/tce.installed/${GAX11NAME}
#!/bin/sh

[ -f /etc/X11/xorg.conf ] && mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
busybox cp -p /usr/local/etc/X11/xorg.conf /etc/X11/xorg.conf

for code in \$(showbootcodes); do
   if [ "\$(echo \${code} | grep -i kmap)" ]; then
      KEYMAP=\$(echo \${code} | cut -d= -f2 | cut -d- -f1)
      [ "\${KEYMAP}" ] && sed -i "/XkbLayout/ s/us/\${KEYMAP}/" /etc/X11/xorg.conf
   fi
done
EOF
   chmod 775 usr/local/tce.installed/${GAX11NAME}
   
### menu item
   mkdir -pm 775 usr/local/tce.menu
cat <<EOF> usr/local/tce.menu/${GAX11NAME}
<JWM>
  <Program label="VirtualBox Guest Additions">VBoxClient-all</Program>
</JWM>
EOF
   chmod 644 usr/local/tce.menu/${GAX11NAME}
   
### dont clobber tc setup
   chown -R root:staff usr/local/tce.*
}

writegamodextras(){
   cd ${GAMODDIR}
### post-install script
   mkdir -pm 775 usr/local/tce.installed
cat <<EOF> usr/local/tce.installed/${GAMODNAME}
#!/bin/sh
addgroup daemon
adduser -SDH -G daemon -s /bin/sh vboxadd

chown vboxadd:daemon /dev/vbox*
chmod 666 /dev/vboxuser
EOF
   chmod 775 usr/local/tce.installed/${GAMODNAME}
   
### dont clobber tc setup
   chown -R root:staff usr/local/tce.*
}

stripit(){
   find usr/ | xargs file | grep "executable" | grep ELF | grep "not stripped" | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
   find usr/ | xargs file | grep "shared object" | grep ELF | grep "not stripped" | cut -f 1 -d : | xargs strip -g 2> /dev/null
}

packhostutils(){
   cd ${HOSTUTILDIR}
   stripit
   
   mksquashfs . ../${HOSTUTILNAME}.tcz
   
   find usr/ -not -type d | sort > ../${HOSTUTILNAME}.tcz.list
   
   cd ..
   md5sum ${HOSTUTILNAME}.tcz > ${HOSTUTILNAME}.tcz.md5.txt
   
cat <<EOF> ${HOSTUTILNAME}.tcz.dep
expat2.tcz
fontconfig.tcz
hwmon-${KERNVER}.tcz
input-${KERNVER}.tcz
alsa-modules-${KERNVER}.tcz
hal_support.tcz
libasound.tcz
libcap.tcz
libmad.tcz
libpci.tcz
libusb.tcz
libxml2.tcz
libxslt.tcz
glib2.tcz
libIDL.tcz
openssl-0.9.8m.tcz
pixman.tcz
SDL.tcz
curl.tcz
dbus.tcz
dbus-glib.tcz
pci-utils.tcz
usb-utils.tcz
udevadm.tcz
qt-4.5-base.tcz
qt-4.5-xml.tcz
sqlite3.tcz
tcl_tk.tcz
python.tcz
Xorg-7.4.tcz
bash.tcz
alsa.tcz
hal.tcz
procps.tcz
${HOSTMODNAME}.tcz
EOF
   
   hostutilsize=`du -h ${HOSTUTILNAME}.tcz | cut -f1`
   
cat <<EOF> ${HOSTUTILNAME}.tcz.info
Title:		${HOSTUTILNAME}.tcz
Description:	VirtualBox OSE    (TESTING)
Version:	${VERSION}
Author:		${AUTHOR}
Original-site:	${HOMEPAGE}
Copying-policy:	${LICENSE}
Size:		${hostutilsize}
Extension_by:	${ME}
Comments:	Powerful virtualization software.
		User manual:
		http://www.virtualbox.org/manual/UserManual.html
		
		Depends on Xorg, hal, QT-4.5, Alsa, glib2, python
		and ${HOSTMODNAME}
		
		This extension is PPI compatible
Change-log:	------
Current:	${TODAY} First Version
EOF
}

packhostmods(){
   cd ${HOSTMODDIR}
   mksquashfs . ../${HOSTMODNAME}.tcz
   
   find usr/ -not -type d | sort > ../${HOSTMODNAME}.tcz.list
   
   cd ..
   md5sum ${HOSTMODNAME}.tcz > ${HOSTMODNAME}.tcz.md5.txt
   
   hostmodsize=`du -h ${HOSTMODNAME}.tcz | cut -f 1`
   
cat <<EOF> ${HOSTMODNAME}.tcz.info
Title:		${HOSTMODNAME}.tcz
Description:	VirtualBox OSE modules for ${KERNVER}  (TESTING)
Version:	${VERSION}
Author:		${AUTHOR}
Original-site:	${HOMEPAGE}
Copying-policy:	${LICENSE}
Size:		${hostmodsize}
Extension_by:	${ME}
Comments:	Powerful virtualization software.
		
		This extension is PPI compatible
Change-log:	------
Current:	${TODAY} First Version
EOF
}

packgax11(){
   cd ${GAX11DIR}
   stripit
   
   mksquashfs . ../${GAX11NAME}.tcz
   
   find usr/ -not -type d | sort > ../${GAX11NAME}.tcz.list
   
   cd ..
   md5sum ${GAX11NAME}.tcz > ${GAX11NAME}.tcz.md5.txt
   
cat <<EOF> ${GAX11NAME}.tcz.dep
pixman.tcz
expat2.tcz
fontconfig.tcz
openssl-0.9.8m.tcz
Xorg-7.4.tcz
${GAMODNAME}.tcz
EOF
   
   gax11size=`du -h ${GAX11NAME}.tcz | cut -f 1`
   
cat <<EOF> ${GAX11NAME}.tcz.info
Title:		${GAX11NAME}.tcz
Description:	X11 Guest Additions for VirtualBox    (TESTING)
Version:	${VERSION}
Author:		${AUTHOR}
Original-site:	${HOMEPAGE}
Copying-policy:	${LICENSE}
Size:		${gax11size}
Extension_by:	${ME}
Comments:	The Guest Additions add functionality to guest OSes with
		seamless integration of display and mouse.
		A compatible xorg.conf will be placed in /etc/X11.
		Using the predescribed bootcode "kmap=" will cause xorg.conf
		to have the desired keymap.
		
		Services will start during boot. Userspace utils can be
		started from the menu OR automate  by adding the line
		"VBoxClient-all" to ~/.xsession.
		Xorg must be restarted for these work.
		
		Requires Xorg-7.4.tcz and
		${GAMODNAME}.tcz
		
		This extension is PPI compatible
Change-log:	2009/08/29 First Version
		2009/09/02 Reworded info
			   Made xorg.conf writable
			   Added code to post-install in attempt
			   to set xkeymap
			   Added workaround in VBoxRandR for
			   tint2 bug in openbox
		2009/09/08 Fixed bug in post-install script
			   Reworded info
Current:	${TODAY} Bumped to 3.0.12
			   Split x11 and shared folder parts
EOF
}
# 2009/08/29 First Version
# 2009/09/02 Reworded info, Made xorg writable, xkeymap, tint2bug
# 2009/09/08 Fixed bug in post-install, reworded info
# ?????????? Bumped to 3.0.12, split x11 and shared

packgautils(){
   cd ${GAUTILDIR}
   stripit
   
   mksquashfs . ../${GAUTILNAME}.tcz
   
   find usr/ -not -type d | sort > ../${GAUTILNAME}.tcz.list
   
   cd ..
   md5sum ${GAUTILNAME}.tcz > ${GAUTILNAME}.tcz.md5.txt
   
cat <<EOF> ${GAUTILNAME}.tcz.dep
${GAMODNAME}.tcz
EOF
   
   gautilsize=`du -h ${GAUTILNAME}.tcz | cut -f 1`
   
cat <<EOF> ${GAUTILNAME}.tcz.info
Title:		${GAUTILNAME}.tcz
Description:	Shared folder support for VirtualBox    (TESTING)
Version:	${VERSION}
Author:		${AUTHOR}
Original-site:	${HOMEPAGE}
Copying-policy:	${LICENSE}
Size:		${gautilsize}
Extension_by:	${ME}
Comments:	This is only the shared folder support for running TC/MC
		inside VirtualBox. Insert kernel module and then use
		mount.vboxsf to mount folders shared through VirtualBox
		
		sudo modprobe vboxvfs
		sudo mount.vboxsf <sharename> <mountpoint>
		
		Depends on ${GAMODNAME}.tcz
		
		This extension is PPI compatible
Change-log:	2009/08/29 First Version
		2009/09/02 Reworded info
			   Made xorg.conf writable
			   Added code to post-install in attempt
			   to set xkeymap
			   Added workaround in VBoxRandR for
			   tint2 bug in openbox
		2009/09/08 Fixed bug in post-install script
			   Reworded info
Current:	${TODAY} Bumped to 3.0.12
			   Split x11 and shared folder parts
EOF
}

# 2009/08/29 First Version
# 2009/09/02 Reworded info, Made xorg writable, xkeymap, tint2bug
# 2009/09/08 Fixed bug in post-install, reworded info
# ?????????? Bumped to 3.0.12, split x11 and shared

packgamods(){
   cd ${GAMODDIR}
   mksquashfs . ../${GAMODNAME}.tcz
   
   find usr/ -not -type d | sort > ../${GAMODNAME}.tcz.list
   
   cd ..
   md5sum ${GAMODNAME}.tcz > ${GAMODNAME}.tcz.md5.txt
   
   gamodsize=`du -h ${GAMODNAME}.tcz | cut -f 1`
   
cat <<EOF> ${GAMODNAME}.tcz.info
Title:		${GAMODNAME}.tcz
Description:	Guest Additions modules for ${KERNVER}    (TESTING)
Version:	${VERSION}
Author:		${AUTHOR}
Original-site:	${HOMEPAGE}
Copying-policy:	${LICENSE}
Size:		${gamodsize}
Extension_by:	${ME}
Comments:	The Guest Additions add functionality to guest OSes with
		seamless integration of display, mouse and file sharing.
		
		This extension is PPI compatible
Change-log:	2009/09/12 First Version
		2010/03/07 Bumped to 3.0.12
Current:	${TODAY} Fixed device perms
EOF
}
# 2009/08/29 First Version
# 2010/03/07 Bumped to 3.0.12
# 2010/03/09 Fixed device perms

cleanup(){
   cd ${THISDIR}
   echo "$(echo -e '\033[1;31m')Would you like to remove the large"
   echo -n "VBox source dir?$(echo -e '\033[0;39m') "
   read -t 120 answera
   case $answera in
      y|Y|yes|YES) echo "Removing VBox sources...."
      rm -rf ${VBOXSRCDIR}
      echo "Done. Remove VBox download too? "
      read -t 120 answerb
      case $answerb in
         y|Y|yes|YES) echo "Removing VBox download...."
         rm -f ${VBOXDOWNLOAD}
         echo "Done!";;
         *) echo "Ok";;
      esac;;
      *) echo "Clean it up yourself";;
   esac
   echo "Congrats. Extensions should be in ${THISDIR}/pkg"
}

##Here we go

environment
buildbase
#installhostutils
#installhostmods
#installgax11
#installgautils
installgamods
#writehostextras
#writegax11extras
writegamodextras
#packhostutils
#packhostmods
#packgax11
#packgautils
packgamods
cleanup

