# SliTaz package receipt.

PACKAGE="virtualbox-ose"
VERSION="4.1.8"
CATEGORY="misc"
SHORT_DESC="Powerful x86 virtualization for enterprise as well as home use (Open Source Edition)"
MAINTAINER="slaxemulator@gmail.com"
SOURCE="VirtualBox"
TARBALL="$SOURCE-$VERSION.tar.bz2"
WEB_SITE="http://virtualbox.org/"
WGET_URL="http://download.virtualbox.org/virtualbox/$VERSION/$TARBALL"
PROVIDE="virtualbox"

DEPENDS="libxml2 xorg-libXcursor libIDL xorg-libXinerama libsdl \
xorg-libXmu curl libvncserver libpng jpeg mesa libglu-mesa qt4 vde2"
BUILD_DEPENDS="bin86 dev86 iasl libIDL libsdl-dev mesa-dev libxslt-dev \
Qt4-dev libsdl-ttf-dev alsa-lib-dev hal-dev xorg-libXtst-dev \
xorg-libXrandr-dev python python-dev xalan-c curl-dev xalan-c-dev \
xerces-c-dev openssl-dev zlib-dev libcap-dev glib-dev libvncserver-dev \
pam pam-dev bzip2 linux-module-headers pkg-config tar wget vde2-dev"

# Rules to configure and make the package.
compile_rules()
{
	cd $src
	patch -Np1 -i "$stuff/virtualbox-4-makeself-check.patch"
	patch -Np1 -i "$stuff/virtualbox-4-mkisofs-check.patch"
	cp $stuff/LocalConfig.kmk .
	./configure \
		--disable-pulse \
		--disable-java \
		--disable-docs \
		--enable-webservice \
		--enable-vde \
		--with-linux=/usr/src/linux
	source ./env.sh
	kmk all

	# build modules. NOTE: we gor ERROR even if it build and cook will exit
	# sed ERROR to error.
	cd 
	KERN_DIR=/usr/src/linux make -C "$src/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src"
	# build guest additions modules
	KERN_DIR=/usr/src/linux make -C "$src/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src"
	KERN_DIR=/usr/src/linux make -C \
		"$src/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src/vboxvideo" \
		2>&1 | sed s'/ERROR/error/'
}

# Rules to gen a SliTaz package suitable for Tazpkg.
genpkg_rules()
{
	fs=$WOK/$PACKAGE/taz/$PACKAGE-$VERSION/fs

	source $src/env.sh
	cd $src/out/linux.$BUILD_PLATFORM_ARCH/release/bin
	mkdir -p $fs/usr/bin $fs/usr/lib/virtualbox/components \
			$fs/usr/share/virtualbox/nls \
			$fs/usr/lib/virtualbox/ExtensionPacks
	install -m 0755 VBox.sh $fs/usr/bin/VBox
	sed -i 's/ps -U/ps | grep/' $fs/usr/bin/VBox
	ln -sf VBox $fs/usr/bin/VBoxHeadless
	ln -sf VBox $fs/usr/bin/vboxheadless
	ln -sf VBox $fs/usr/bin/VBoxManage
	ln -sf VBox $fs/usr/bin/vboxmanage
	ln -sf VBox $fs/usr/bin/VBoxSDL
	ln -sf VBox $fs/usr/bin/vboxsdl
	ln -sf VBox $fs/usr/bin/VirtualBox
	ln -sf VBox $fs/usr/bin/virtualbox
	ln -sf VBox $fs/usr/bin/vboxwebsrv

	install -m 0755 VBoxTunctl "$fs/usr/bin"

	# components
	install -D -m 0755 components/* $fs/usr/lib/virtualbox/components

	# lib
	install -m 0755 *.so "$fs/usr/lib/virtualbox"
	install -m 0644 *.gc *.r0  VBoxEFI*.fd "$fs/usr/lib/virtualbox"
	
	#setuid root binaries
	install -m 4755 VBoxSDL VirtualBox VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl  "$fs/usr/lib/virtualbox"
	
	#other binaries
	#install -m 0755 VBoxManage VBoxSVC VBoxExtPackHelperApp VBoxXPCOMIPCD VBoxTestOGL vboxwebsrv webtest "$fs/usr/lib/virtualbox"
	install -m 0755 VBoxManage VBoxSVC VBoxExtPackHelperApp VBoxXPCOMIPCD VBoxTestOGL "$fs/usr/lib/virtualbox"

	#language
	install -m 0755 nls/*.qm "$fs/usr/share/virtualbox/nls"
	
	#useless scripts
	install -m 0755 VBoxCreateUSBNode.sh VBoxSysInfo.sh "$fs/usr/share/virtualbox"

	#icon
	install -D -m 0644 VBox.png "$fs/usr/share/pixmaps/virtualbox.png"

	#desktop
	install -D -m 0644 virtualbox.desktop "$fs/usr/share/applications/virtualbox.desktop"
	sed -i "s|VBox.png|virtualbox|" \
		$fs/usr/share/applications/virtualbox.desktop
	install -D -m 0644 virtualbox.xml "$fs/usr/share/mime/packages/virtualbox.xml"

	#install configuration
	mkdir -p "$fs/etc/vbox"
	echo 'lsmod | grep -q vboxdrv || modprobe vboxdrv' > "$fs/etc/vbox/vbox.cfg"
	echo 'INSTALL_DIR=/usr/lib/virtualbox' >> "$fs/etc/vbox/vbox.cfg"

	#udev
	install -D -m 0644 "$stuff/60-virtualbox.rules" \
	"$fs/etc/udev/rules.d/60-virtualbox.rules"

	mkdir -p $fs/usr/lib/virtualbox/sdk/bindings/xpcom/python/
	cd sdk/installer
	VBOX_INSTALL_PATH="/usr/lib/virtualbox" python vboxapisetup.py install --root "$fs"
	cd $src/out/linux.$BUILD_PLATFORM_ARCH/release/bin
	cd sdk/bindings/xpcom/python
	cp -r xpcom $fs/usr/lib/virtualbox/sdk/bindings/xpcom/python/
	chmod 644 $fs/usr/lib/virtualbox/sdk/bindings/xpcom/python/xpcom/*.py
	chmod 644 $fs/usr/lib/virtualbox/sdk/bindings/xpcom/python/xpcom/server/*.py
	chmod 644 $fs/usr/lib/virtualbox/sdk/bindings/xpcom/python/xpcom/client/*.py
	cd $src/out/linux.$BUILD_PLATFORM_ARCH/release/bin

	# virtualbox-modules
	KERNEL_VERSION=`grep  ^VERSION= $WOK/linux/receipt | cut -d "=" -f2 | sed -e 's/"//g'`

	cd "$src/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src"
	install -D -m644 vboxdrv.ko "$fs/lib/modules/$KERNEL_VERSION-slitaz/misc/vboxdrv.ko"
	install -D -m644 vboxnetflt.ko "$fs/lib/modules/$KERNEL_VERSION-slitaz/misc/vboxnetflt.ko"
	install -D -m644 vboxnetadp.ko "$fs/lib/modules/$KERNEL_VERSION-slitaz/misc/vboxnetadp.ko"

	# virtualbox-ose-additions

	cd "$src/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions"
	mkdir -p $fs/usr/bin
	mkdir -p $fs/sbin
	mkdir -p $fs/etc/X11/xorg.conf.d

	install -m755 VBoxClient VBoxControl VBoxService "$fs/usr/bin"
	install -m755 mount.vboxsf "$fs/sbin"

	install -m644 $src/src/VBox/Additions/x11/Installer/50-vboxmouse.conf \
		$fs/etc/X11/xorg.conf.d/50-vboxmouse.conf

	install -m755 -D $src/src/VBox/Additions/x11/Installer/98vboxadd-xclient \
		$fs/usr/bin/VBoxClient-all
	install -m755 -D $src/src/VBox/Additions/x11/Installer/vboxclient.desktop \
		$fs/etc/xdg/autostart/vboxclient.desktop

	install -D vboxmouse_drv_19.so \
		"$fs/usr/lib/X11/modules/input/vboxmouse.so"
	install -D vboxvideo_drv_19.so \
		"$fs/usr/lib/X11/modules/drivers/vboxvideo.so"
	install -d "$fs/usr/lib/dri"
	install -m755 VBoxOGL*.so "$fs/usr/lib"
	ln -s /usr/lib/VBoxOGL.so "$fs/usr/lib/dri/vboxvideo_dri.so"
	install -m755 -D pam_vbox.so "$fs/lib/security/pam_vbox.so"

	# virtualbox-ose-additions-modules
	cd "$src/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src"

	cd vboxguest
	install -D -m644 vboxguest.ko \
		"$fs/lib/modules/$KERNEL_VERSION-slitaz/misc/vboxguest.ko"

	cd ../vboxsf
	install -D -m644 vboxsf.ko \
		"$fs/lib/modules/$KERNEL_VERSION-slitaz/misc/vboxsf.ko"

	cd ../vboxvideo
	install -D -m644 vboxvideo.ko \
		"$fs/lib/modules/$KERNEL_VERSION-slitaz/misc/vboxvideo.ko"

	install -D -m 0644 "$stuff/60-vboxguest.rules" \
		"$fs/etc/udev/rules.d/60-vboxguest.rules"
}

pre_remove()
{
    sed -i "s/vboxdrv vboxnetadp vboxnetflt //" $1/etc/rcS.conf
}

post_install()
{
	KERNEL_VERSION=`grep  ^VERSION= $1/var/lib/tazpkg/installed/linux/receipt | cut -d "=" -f2 | sed -e 's/"//g'`

	chroot "$1/" depmod -a $KERNEL_VERSION-slitaz
	grep -qs vboxdrv $1/etc/rcS.conf ||
	sed -i 's/LOAD_MODULES="/&vboxdrv vboxnetadp vboxnetflt /' $1/etc/rcS.conf
}