# $Id: PKGBUILD 74379 2012-07-26 02:34:06Z seblu $
#Maintainer: Ionut Biru <ibiru@archlinux.org>
pkgbase=virtualbox
pkgname=('virtualbox'
         'virtualbox-archlinux-additions'
         'virtualbox-sdk'
         'virtualbox-source'
         'virtualbox-archlinux-source')
pkgver=4.1.18
pkgrel=4
arch=('i686' 'x86_64')
url='http://virtualbox.org'
license=('GPL' 'custom')
makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libxcursor' 'qt' 'libidl2' 'sdl_ttf' 'alsa-lib' 'libpulse' 'libxtst'
'xalan-c' 'sdl' 'libxmu' 'curl' 'python2' 'linux-headers' 'mesa' 'libxrandr' 'libxinerama' 'libvncserver' 'jdk7-openjdk' 'gsoap' 'vde2')
#'xorg-server-devel' 'xf86driproto' 'libxcomposite')
[[ $CARCH == "x86_64" ]] && makedepends=("${makedepends[@]}" 'gcc-multilib' 'lib32-glibc')
source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}.tar.bz2
        UserManual-$pkgver.pdf::http://download.virtualbox.org/virtualbox/${pkgver}/UserManual.pdf
        10-vboxdrv.rules  vboxdrv-reference.patch  LocalConfig.kmk ipv6_vnc.patch
        change_default_driver_dir.patch vboxservice.conf vboxservice.rc vboxservice.service
        vboxweb.conf vboxweb.rc vboxweb.service)

_extramodules=extramodules-3.4-ARCH
_kernver="$(cat /usr/lib/modules/${_extramodules}/version)" || true

build() {
    cd "$srcdir/VirtualBox-${pkgver}"

    patch -Np1 -i "$srcdir/vboxdrv-reference.patch"
    patch -Np1 -i "$srcdir/change_default_driver_dir.patch"
    # FS#30401
    patch -Np2 -i  "$srcdir/ipv6_vnc.patch"

    cp "$srcdir/LocalConfig.kmk" .

    ./configure --disable-docs \
        --enable-webservice \
        --enable-vde \
        --enable-vnc \
        --nofatal \
        --with-linux=/usr/src/linux-${_kernver}
    source ./env.sh
    kmk all
    sed -i 's_^#!.*/usr/bin/python_#!/usr/bin/python2_' "out/linux.$BUILD_PLATFORM_ARCH/release/bin/vboxshell.py"
}

package_virtualbox() {
    pkgdesc="Powerful x86 virtualization for enterprise as well as home use"
    depends=('virtualbox-modules' 'libxml2' 'libxcursor' 'libxinerama' 'sdl' 'libxmu' 'curl' 'libvncserver' 'libpng')
    optdepends=('qt: for VirtualBox GUI'
                'vde2: Virtual Distributed Ethernet support'
                'virtualbox-sdk: developer kit'
                'virtualbox-source: host kernel source modules for non-stock kernels'
                'net-tools: for host-only or bridged networking')

    backup=('etc/vbox/vbox.cfg')
    replaces=('virtualbox-ose')
    conflicts=('virtualbox-ose')
    install=virtualbox.install

    source "$srcdir/VirtualBox-${pkgver}/env.sh"

    cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin"
    install -dm755 "$pkgdir"/usr/{bin,lib/virtualbox/components,lib/virtualbox/ExtensionPacks,share/virtualbox/nls}

    #doc
    install -m 0644 "$srcdir/UserManual-$pkgver.pdf" "$pkgdir/usr/share/virtualbox/UserManual.pdf"

    #Binaries and Wrapper with Launchers
    install -m 0755 VBox.sh "$pkgdir/usr/bin/VBox"

    for i in VBoxHeadless vboxheadless VBoxManage vboxmanage VBoxSDL vboxsdl VirtualBox virtualbox vboxwebsrv VBoxBalloonCtrl vboxballoonctrl; do
        ln -sf VBox "$pkgdir/usr/bin/$i"
    done
    install -m 0755 VBoxTunctl "$pkgdir/usr/bin"

    #components
    install -m 0755 components/* -t "$pkgdir/usr/lib/virtualbox/components"

    #lib
    install -m 0755 *.so "$pkgdir/usr/lib/virtualbox"
    install -m 0644 *.gc *.r0  VBoxEFI*.fd "$pkgdir/usr/lib/virtualbox"

    #setuid root binaries
    install -m 4755 VBoxSDL VirtualBox VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl -t "$pkgdir/usr/lib/virtualbox"
    #other binaries
    install -m 0755 VBoxManage VBoxSVC VBoxExtPackHelperApp VBoxXPCOMIPCD VBoxTestOGL VBoxBalloonCtrl vboxwebsrv webtest -t "$pkgdir/usr/lib/virtualbox"

    #language
    install -m 0755 nls/*.qm -t "$pkgdir/usr/share/virtualbox/nls"

    #useless scripts
    install -m 0755 VBoxCreateUSBNode.sh VBoxSysInfo.sh -t "$pkgdir/usr/share/virtualbox"

    #icons
    install -D -m 0644 VBox.png "$pkgdir/usr/share/pixmaps/VBox.png"

    pushd icons
    for i in *; do
        install -d "$pkgdir/usr/share/icons/hicolor/$i/mimetypes"
        cp $i/* "$pkgdir/usr/share/icons/hicolor/$i/mimetypes"
    done
    popd

    #desktop
    install -D -m 0644 virtualbox.desktop "$pkgdir/usr/share/applications/virtualbox.desktop"
    install -D -m 0644 virtualbox.xml "$pkgdir/usr/share/mime/packages/virtualbox.xml"

    #install configuration
    mkdir -p "$pkgdir/etc/vbox"
    echo 'INSTALL_DIR=/usr/lib/virtualbox' > "$pkgdir/etc/vbox/vbox.cfg"

    #udev and licence
    install -D -m 0644 "$srcdir/VirtualBox-${pkgver}/COPYING" \
        "$pkgdir/usr/share/licenses/virtualbox/LICENSE"
    install -D -m 0644 "$srcdir/10-vboxdrv.rules" \
        "$pkgdir/usr/lib/udev/rules.d/10-vboxdrv.rules"

    # install rc.d script
    install -D -m755 "$srcdir/vboxweb.rc" "$pkgdir/etc/rc.d/vboxweb"
    # install systemd service
    install -D -m644 "$srcdir/vboxweb.service" \
        "$pkgdir/usr/lib/systemd/system/vboxweb.service"
    # install sample config
    install -D -m644 "$srcdir/vboxweb.conf" "$pkgdir/etc/conf.d/vboxweb"

}

package_virtualbox-source() {
    pkgdesc="VirtualBox kernel modules source"
    depends=(dkms gcc make)
    provides=(virtualbox-modules)
    optdepends=('linux-headers'
                'linux-lts-headers')
    install=virtualbox-source.install

    install -dm755 "$pkgdir/var/lib/dkms/vboxhost/$pkgver"
    source "$srcdir/VirtualBox-${pkgver}/env.sh"
    cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin"
    cp -r src "$pkgdir/var/lib/dkms/vboxhost/$pkgver/source"
}

package_virtualbox-sdk() {
    pkgdesc="VirtualBox Software Developer Kit (SDK)"
    depends=('python2')

    install -dm755 "$pkgdir/usr/lib/virtualbox"

    source "$srcdir/VirtualBox-${pkgver}/env.sh"
    cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin"

    install -D -m 0755 vboxshell.py "$pkgdir/usr/lib/virtualbox/vboxshell.py"
    #python sdk
    pushd sdk/installer
    VBOX_INSTALL_PATH="/usr/lib/virtualbox" python2 vboxapisetup.py install --root "${pkgdir}"
    popd
    rm -rf sdk/installer
    mv sdk "$pkgdir/usr/lib/virtualbox"
}

package_virtualbox-archlinux-additions(){
    pkgdesc="Additions only for Arch Linux guests (userspace tools)"
    depends=('virtualbox-archlinux-modules' 'gcc-libs' 'libxmu' 'xorg-xrandr' 'libxfixes')
    replaces=('virtualbox-guest-additions')
    conflicts=('virtualbox-guest-additions')
    backup=('etc/conf.d/vboxservice')
    install=virtualbox-archlinux-additions.install

    source "$srcdir/VirtualBox-${pkgver}/env.sh"

    cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions"

    install -d "$pkgdir"/{usr/bin,sbin}
    install -m755 VBoxClient VBoxControl VBoxService "$pkgdir/usr/bin"
    install -m755 mount.vboxsf "$pkgdir/sbin"

    install -m755 -D "$srcdir"/VirtualBox-${pkgver}/src/VBox/Additions/x11/Installer/98vboxadd-xclient \
        "$pkgdir"/usr/bin/VBoxClient-all
    install -m755 -D "$srcdir"/VirtualBox-${pkgver}/src/VBox/Additions/x11/Installer/vboxclient.desktop \
        "$pkgdir"/etc/xdg/autostart/vboxclient.desktop
    install -D vboxvideo_drv_112.so \
        "$pkgdir/usr/lib/xorg/modules/drivers/vboxvideo.so"
    install -d "$pkgdir/usr/lib/xorg/modules/dri"
    install -m755 VBoxOGL*.so "$pkgdir/usr/lib"
    ln -s /usr/lib/VBoxOGL.so "$pkgdir/usr/lib/xorg/modules/dri/vboxvideo_dri.so"
    install -m755 -D pam_vbox.so "$pkgdir/usr/lib/security/pam_vbox.so"

    # install rc.d script
    install -D -m755 "$srcdir/vboxservice.rc" "$pkgdir/etc/rc.d/vboxservice"

    # install sample config
    install -D -m644 "$srcdir/vboxservice.conf" "$pkgdir/etc/conf.d/vboxservice"

    # install systemd service file
    install -D -m644 "$srcdir/vboxservice.service" \
        "$pkgdir/usr/lib/systemd/system/vboxservice.service"
}

package_virtualbox-archlinux-source() {
    pkgdesc='VirtualBox Additions kernel modules source'
    depends=(dkms gcc make)
    provides=(virtualbox-archlinux-modules)
    optdepends=('linux-headers'
                'linux-lts-headers')
    install=virtualbox-archlinux-source.install

    install -dm755 "$pkgdir/var/lib/dkms/vboxguest/$pkgver"
    source "$srcdir/VirtualBox-${pkgver}/env.sh"
    cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions"
    cp -r src "$pkgdir/var/lib/dkms/vboxguest/$pkgver/source"
}

md5sums=('38db0a87cba659b484af868b0c2bd3ac'
         'e16f5999b53656d23828d9f2d63bd633'
         '5f85710e0b8606de967716ded7b2d351'
         '6ab2455c391d8cc005e2f4461ae26a3b'
         'a1ff1d1b4423556887e48a32978226a6'
         '4ff559f2bea335d59c4012048983ca91'
         '97e193f050574dd272a38e5ee5ebe62b'
         '3c08ad30b89add47d3f45121200a5360'
         '7d9823507206de9b8528a72af2f18d74'
         '07c5f6d86c4b7839d719c8ee0c53653b'
         '3ac185709bfe688bb753c46e170d0546'
         'c159d683ba1947290fc2ad2c64194150'
         'bc9efed88e0469cd7fc460d5a5cd7b4b')
