summaryrefslogtreecommitdiff
path: root/community/virtualbox
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-12-29 02:13:48 -0800
committerroot <root@rshg054.dnsready.net>2012-12-29 02:13:48 -0800
commit5dd7ed82e788ebad2e920e0f2db7468cc6547cfe (patch)
treef467412e09912ababcd8fe6c05193d829f514dcd /community/virtualbox
parent3009e8addb4a894329bf8ab3e8fb763361833978 (diff)
Sat Dec 29 02:10:20 PST 2012
Diffstat (limited to 'community/virtualbox')
-rw-r--r--community/virtualbox/001-vboxdrv-reference.patch57
-rw-r--r--community/virtualbox/002-change_default_driver_dir.patch18
-rw-r--r--community/virtualbox/10-vboxdrv.rules5
-rw-r--r--community/virtualbox/60-vboxguest.rules2
-rw-r--r--community/virtualbox/LocalConfig.kmk20
-rw-r--r--community/virtualbox/PKGBUILD305
-rw-r--r--community/virtualbox/vboxservice.conf2
-rw-r--r--community/virtualbox/vboxservice.rc39
-rw-r--r--community/virtualbox/vboxservice.service9
-rw-r--r--community/virtualbox/vboxweb.conf11
-rw-r--r--community/virtualbox/vboxweb.rc86
-rw-r--r--community/virtualbox/vboxweb.service11
-rw-r--r--community/virtualbox/virtualbox-ext-vnc.install25
-rw-r--r--community/virtualbox/virtualbox-guest-dkms.install30
-rw-r--r--community/virtualbox/virtualbox-guest-utils.install31
-rw-r--r--community/virtualbox/virtualbox-host-dkms.install30
-rw-r--r--community/virtualbox/virtualbox.install45
17 files changed, 726 insertions, 0 deletions
diff --git a/community/virtualbox/001-vboxdrv-reference.patch b/community/virtualbox/001-vboxdrv-reference.patch
new file mode 100644
index 000000000..00faa35cb
--- /dev/null
+++ b/community/virtualbox/001-vboxdrv-reference.patch
@@ -0,0 +1,57 @@
+diff -Nur VirtualBox-4.1.6_OSE.orig/src/VBox/Frontends/VirtualBox/src/main.cpp VirtualBox-4.1.6_OSE/src/VBox/Frontends/VirtualBox/src/main.cpp
+--- VirtualBox-4.1.6_OSE.orig/src/VBox/Frontends/VirtualBox/src/main.cpp 2011-11-04 17:22:13.636083176 +0000
++++ VirtualBox-4.1.6_OSE/src/VBox/Frontends/VirtualBox/src/main.cpp 2011-11-04 17:48:58.915541368 +0000
+@@ -75,10 +75,9 @@
+ "The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or "
+ "there is a permission problem with /dev/vboxdrv. Please reinstall the kernel "
+ "module by executing<br/><br/>"
+- " <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>"
+- "as root. If it is available in your distribution, you should install the "
+- "DKMS package first. This package keeps track of Linux kernel changes and "
+- "recompiles the vboxdrv kernel module if necessary."
++ " <font color=blue>'pacman -S virtualbox-host-modules'</font><br/><br/>"
++ "as root. If you don't use our stock kernel, install virtualbox-host-source and "
++ "execute dkms autoinstall ."
+ );
+
+ QString g_QStrHintOtherWrongDriverVersion = QApplication::tr(
+@@ -90,11 +89,8 @@
+
+ QString g_QStrHintLinuxWrongDriverVersion = QApplication::tr(
+ "The VirtualBox kernel modules do not match this version of "
+- "VirtualBox. The installation of VirtualBox was apparently not "
+- "successful. Executing<br/><br/>"
+- " <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>"
+- "may correct this. Make sure that you do not mix the "
+- "OSE version and the PUEL version of VirtualBox."
++ "VirtualBox. Reload the modules or if you don't use our stock kernel execute<br/><br/> "
++ " <font color=blue>'dkms autoinstall'</font><br/><br/>"
+ );
+
+ QString g_QStrHintOtherNoDriver = QApplication::tr(
+diff -Nur VirtualBox-4.1.6_OSE.orig/src/VBox/Installer/linux/VBox.sh VirtualBox-4.1.6_OSE/src/VBox/Installer/linux/VBox.sh
+--- VirtualBox-4.1.6_OSE.orig/src/VBox/Installer/linux/VBox.sh 2011-11-04 17:22:13.549415814 +0000
++++ VirtualBox-4.1.6_OSE/src/VBox/Installer/linux/VBox.sh 2011-11-04 17:56:50.735874087 +0000
+@@ -32,17 +32,18 @@
+ cat << EOF
+ WARNING: The vboxdrv kernel module is not loaded. Either there is no module
+ available for the current kernel (`uname -r`) or it failed to
+- load. Please recompile the kernel module and install it by
++ load. Please reinstall the kernel module virtualbox-host-modules or
++ if you don't use our stock kernel compile the modules with
+
+- sudo /etc/init.d/vboxdrv setup
++ sudo dkms autoinstall
+
+ You will not be able to start VMs until this problem is fixed.
+ EOF
+ elif [ ! -c /dev/vboxdrv ]; then
+ cat << EOF
+-WARNING: The character device /dev/vboxdrv does not exist. Try
++WARNING: The character device /dev/vboxdrv does not exist. Try to load the module
+
+- sudo /etc/init.d/vboxdrv restart
++ sudo modprobe vboxdrv
+
+ and if that is not successful, try to re-install the package.
+
diff --git a/community/virtualbox/002-change_default_driver_dir.patch b/community/virtualbox/002-change_default_driver_dir.patch
new file mode 100644
index 000000000..d8531499d
--- /dev/null
+++ b/community/virtualbox/002-change_default_driver_dir.patch
@@ -0,0 +1,18 @@
+diff -Nur VirtualBox-4.1.0_OSE.orig/src/VBox/Additions/common/crOpenGL/fakedri_drv.c VirtualBox-4.1.0_OSE/src/VBox/Additions/common/crOpenGL/fakedri_drv.c
+--- VirtualBox-4.1.0_OSE.orig/src/VBox/Additions/common/crOpenGL/fakedri_drv.c 2011-07-19 15:11:37.903456612 +0000
++++ VirtualBox-4.1.0_OSE/src/VBox/Additions/common/crOpenGL/fakedri_drv.c 2011-07-19 15:12:41.024021274 +0000
+@@ -36,13 +36,8 @@
+ //#define DEBUG_DRI_CALLS
+
+ //@todo this could be different...
+-#ifdef RT_ARCH_AMD64
+-# define DRI_DEFAULT_DRIVER_DIR "/usr/lib64/dri:/usr/lib/dri:/usr/lib/x86_64-linux-gnu/dri"
++# define DRI_DEFAULT_DRIVER_DIR "/usr/lib/xorg/modules/dri"
+ # define DRI_XORG_DRV_DIR "/usr/lib/xorg/modules/drivers/"
+-#else
+-# define DRI_DEFAULT_DRIVER_DIR "/usr/lib/dri:/usr/lib/i386-linux-gnu/dri"
+-# define DRI_XORG_DRV_DIR "/usr/lib/xorg/modules/drivers/"
+-#endif
+
+ #ifdef DEBUG_DRI_CALLS
+ #define SWDRI_SHOWNAME(pext, func) \
diff --git a/community/virtualbox/10-vboxdrv.rules b/community/virtualbox/10-vboxdrv.rules
new file mode 100644
index 000000000..37403ae2f
--- /dev/null
+++ b/community/virtualbox/10-vboxdrv.rules
@@ -0,0 +1,5 @@
+KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="root", MODE="0600" ENV{ACL_MANAGE}="1"
+SUBSYSTEM=="usb_device", ACTION=="add", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers"
+SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers"
+SUBSYSTEM=="usb_device", ACTION=="remove", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
+SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
diff --git a/community/virtualbox/60-vboxguest.rules b/community/virtualbox/60-vboxguest.rules
new file mode 100644
index 000000000..6285f7249
--- /dev/null
+++ b/community/virtualbox/60-vboxguest.rules
@@ -0,0 +1,2 @@
+ACTION=="add", KERNEL=="vboxguest", SUBSYSTEM=="misc", OWNER="root", MODE="0600"
+ACTION=="add", KERNEL=="vboxuser", SUBSYSTEM=="misc", OWNER="root", MODE="0666"
diff --git a/community/virtualbox/LocalConfig.kmk b/community/virtualbox/LocalConfig.kmk
new file mode 100644
index 000000000..6eca06d9b
--- /dev/null
+++ b/community/virtualbox/LocalConfig.kmk
@@ -0,0 +1,20 @@
+VBOX_WITH_ADDITION_DRIVERS =
+VBOX_WITH_INSTALLER = 1
+VBOX_WITH_LINUX_ADDITIONS = 1
+VBOX_WITH_X11_ADDITIONS = 1
+VBOX_WITH_TESTCASES =
+VBOX_WITH_TESTSUITE =
+VBOX_WITH_ORIGIN :=
+VBOX_PATH_APP_PRIVATE_ARCH := /usr/lib/virtualbox
+VBOX_PATH_SHARED_LIBS := $(VBOX_PATH_APP_PRIVATE_ARCH)
+VBOX_WITH_RUNPATH := $(VBOX_PATH_APP_PRIVATE_ARCH)
+VBOX_PATH_APP_PRIVATE := /usr/share/virtualbox
+VBOX_PATH_APP_DOCS := /usr/share/virtualbox
+VBOX_PATH_PACKAGE_DOCS := $(VBOX_PATH_APP_DOCS)
+VBOX_WITH_REGISTRATION_REQUEST =
+VBOX_WITH_UPDATE_REQUEST =
+VBOX_WITH_VNC := 1
+VBOX_BLD_PYTHON = python2
+VBOX_JAVA_HOME = /usr/lib/jvm/java-7-openjdk
+VBOX_GCC_WERR =
+VBOX_GCC_WARN =
diff --git a/community/virtualbox/PKGBUILD b/community/virtualbox/PKGBUILD
new file mode 100644
index 000000000..bba389c0c
--- /dev/null
+++ b/community/virtualbox/PKGBUILD
@@ -0,0 +1,305 @@
+# $Id: PKGBUILD 81600 2012-12-24 17:28:55Z seblu $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Maintainer: Sébastien Luttringer <seblu@aur.archlinux.org>
+
+pkgbase=virtualbox
+pkgname=('virtualbox'
+ 'virtualbox-host-dkms'
+ 'virtualbox-guest-dkms'
+ 'virtualbox-sdk'
+ 'virtualbox-guest-utils'
+ 'virtualbox-ext-vnc')
+pkgver=4.2.6
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://virtualbox.org'
+license=('GPL' 'custom')
+makedepends=('alsa-lib'
+ 'bin86'
+ 'cdrkit'
+ 'curl'
+ 'dev86'
+ 'gsoap'
+ 'iasl'
+ 'jdk7-openjdk'
+ 'libidl2'
+ 'libpulse'
+ 'libstdc++5'
+ 'libvncserver'
+ 'libxcursor'
+ 'libxinerama'
+ 'libxml2'
+ 'libxmu'
+ 'libxrandr'
+ 'libxslt'
+ 'libxtst'
+ 'linux-headers'
+ 'mesa'
+ 'glu'
+ 'python2'
+ 'qt'
+ 'sdl'
+ 'sdl_ttf'
+ 'vde2'
+ 'xalan-c')
+[[ $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'
+ '60-vboxguest.rules'
+ 'LocalConfig.kmk'
+ 'vboxservice.conf'
+ 'vboxservice.rc'
+ 'vboxservice.service'
+ 'vboxweb.conf'
+ 'vboxweb.rc'
+ 'vboxweb.service'
+ '001-vboxdrv-reference.patch'
+ '002-change_default_driver_dir.patch')
+md5sums=('d680aeb3b4379b8281527aeb012b2df5'
+ '5cdffabb7ffacfd49dcc93d747ede762'
+ '5f85710e0b8606de967716ded7b2d351'
+ 'ed1341881437455d9735875ddf455fbe'
+ '58d6e5bb4b4c1c6f3f0b3daa6aaeed03'
+ '3c08ad30b89add47d3f45121200a5360'
+ '7d9823507206de9b8528a72af2f18d74'
+ '07c5f6d86c4b7839d719c8ee0c53653b'
+ '7e9483b1069a54f181546083ac7e5469'
+ 'c159d683ba1947290fc2ad2c64194150'
+ 'bc9efed88e0469cd7fc460d5a5cd7b4b'
+ '6dbd16b9d1530fc42ff6904cd80be91d'
+ '97e193f050574dd272a38e5ee5ebe62b')
+
+build() {
+ cd "VirtualBox-$pkgver"
+
+ # Apply patches
+ for _p in "$srcdir"/*.patch; do
+ [[ -e $_p ]] || continue
+ msg2 "Appy patch ${_p##*/}"
+ patch -Np1 -i "$_p"
+ done
+
+ cp "$srcdir/LocalConfig.kmk" .
+
+ # fake makeself binary to compile without nofatal
+ ln -s /bin/echo makeself
+ export PATH="$CWD:$PATH"
+
+ ./configure --disable-docs \
+ --enable-webservice \
+ --enable-vde \
+ --enable-vnc \
+ --disable-kmods
+ source ./env.sh
+ kmk all
+
+ # fix python2
+ sed -i 's_^#!.*/usr/bin/python_#!/usr/bin/python2_' "out/linux.$BUILD_PLATFORM_ARCH/release/bin/vboxshell.py"
+
+ # build rdesktop-vrdp (broken from LocalConfig.kmk)
+ pushd src/VBox/RDP/client
+ cp "$srcdir/LocalConfig.kmk" .
+ # fix keymap path FS#32548
+ sed -i 's:/opt/VirtualBox:/usr/share/virtualbox:' Makefile.kmk
+ kmk all
+ popd
+
+ # build VNC pack
+ pushd src/VBox/ExtPacks/VNC
+ kmk packing
+ popd
+}
+
+package_virtualbox() {
+ pkgdesc='Powerful x86 virtualization for enterprise as well as home use'
+ depends=('curl'
+ 'libpng'
+ 'libxcursor'
+ 'libxinerama'
+ 'libxml2'
+ 'libxmu'
+ 'sdl'
+ 'shared-mime-info'
+ 'virtualbox-host-modules')
+ optdepends=('qt: VirtualBox GUI support'
+ 'vde2: Virtual Distributed Ethernet support'
+ 'virtualbox-sdk: Developer kit'
+ 'virtualbox-host-dkms: Host kernel source modules for non-stock kernels'
+ 'net-tools: Host-only or bridged networking support')
+ backup=('etc/vbox/vbox.cfg' 'etc/conf.d/vboxweb')
+ replaces=('virtualbox-ose')
+ conflicts=('virtualbox-ose')
+ install=virtualbox.install
+
+ source "VirtualBox-$pkgver/env.sh"
+ cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin"
+ install -dm755 "$pkgdir"/usr/{bin,lib/virtualbox/components,lib/virtualbox/ExtensionPacks,share/virtualbox/nls,share/virtualbox/rdesktop-vrdp-keymaps}
+
+ #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 VBoxManage VBoxSDL VirtualBox vboxwebsrv VBoxBalloonCtrl; do
+ ln -sf VBox "$pkgdir/usr/bin/$i"
+ ln -sf VBox "$pkgdir/usr/bin/${i,,}"
+ done
+ install -m 0755 VBoxTunctl "$pkgdir/usr/bin"
+ install -m 0755 rdesktop-vrdp "$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"
+
+ #rdesktop keymaps
+ install -m 0644 rdesktop-vrdp-keymaps/* "$pkgdir/usr/share/virtualbox/rdesktop-vrdp-keymaps"
+
+ #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-sdk() {
+ pkgdesc='VirtualBox Software Developer Kit (SDK)'
+ depends=('python2')
+
+ install -dm755 "$pkgdir/usr/lib/virtualbox"
+
+ source "VirtualBox-$pkgver/env.sh"
+ cd "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-host-dkms() {
+ pkgdesc='VirtualBox Host kernel modules sources'
+ depends=('dkms' 'gcc' 'make')
+ provides=('virtualbox-host-modules')
+ replaces=('virtualbox-source' 'virtualbox-host-source')
+ conflicts=('virtualbox-source' 'virtualbox-host-source')
+ optdepends=('linux-headers'
+ 'linux-lts-headers')
+ install=virtualbox-host-dkms.install
+
+ install -dm755 "$pkgdir/usr/src"
+ source "VirtualBox-$pkgver/env.sh"
+ cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin"
+ cp -r src "$pkgdir/usr/src/vboxhost-$pkgver"
+}
+
+package_virtualbox-guest-dkms() {
+ pkgdesc='VirtualBox Guest kernel modules sources'
+ depends=('dkms' 'gcc' 'make')
+ provides=('virtualbox-guest-modules')
+ replaces=('virtualbox-archlinux-source' 'virtualbox-guest-source')
+ conflicts=('virtualbox-archlinux-source' 'virtualbox-guest-source')
+ optdepends=('linux-headers'
+ 'linux-lts-headers')
+ install=virtualbox-guest-dkms.install
+
+ install -dm755 "$pkgdir/usr/src"
+ source "VirtualBox-$pkgver/env.sh"
+ cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions"
+ cp -r src "$pkgdir/usr/src/vboxguest-$pkgver"
+}
+
+package_virtualbox-guest-utils() {
+ pkgdesc='VirtualBox Guest userspace utilities'
+ depends=('virtualbox-guest-modules' 'gcc-libs' 'libxmu' 'xorg-xrandr' 'libxfixes')
+ optdepends=('virtualbox-guest-dkms: Guest kernel source modules for non-stock kernels')
+ replaces=('virtualbox-archlinux-additions' 'virtualbox-guest-additions')
+ conflicts=('virtualbox-archlinux-additions' 'virtualbox-guest-additions')
+ backup=('etc/conf.d/vboxservice')
+ install=virtualbox-guest-utils.install
+
+ source "VirtualBox-$pkgver/env.sh"
+ pushd "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_113.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"
+ popd
+ # install udev rules
+ install -D -m 0644 60-vboxguest.rules \
+ "$pkgdir/usr/lib/udev/rules.d/60-vboxguest.rules"
+ # install rc.d script
+ install -D -m755 vboxservice.rc "$pkgdir/etc/rc.d/vboxservice"
+ # install sample config
+ install -D -m644 vboxservice.conf "$pkgdir/etc/conf.d/vboxservice"
+ # install systemd service file
+ install -D -m644 vboxservice.service \
+ "$pkgdir/usr/lib/systemd/system/vboxservice.service"
+}
+
+package_virtualbox-ext-vnc() {
+ pkgdesc='VirtualBox VNC extension pack'
+ depends=('virtualbox' 'libvncserver')
+ optdepends=('vncviewver: vnc client')
+ install=virtualbox-ext-vnc.install
+
+ source "VirtualBox-$pkgver/env.sh"
+ cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/packages"
+ install -Dm644 VNC-*.vbox-extpack "$pkgdir/usr/share/virtualbox/extensions/VNC-${pkgver}.vbox-extpack"
+}
+
+# vim:set ts=4 sw=4 et:
diff --git a/community/virtualbox/vboxservice.conf b/community/virtualbox/vboxservice.conf
new file mode 100644
index 000000000..9d4ec629f
--- /dev/null
+++ b/community/virtualbox/vboxservice.conf
@@ -0,0 +1,2 @@
+# VBoxService -h
+VBOX_SERVICE_OPTION=""
diff --git a/community/virtualbox/vboxservice.rc b/community/virtualbox/vboxservice.rc
new file mode 100644
index 000000000..5a62d69a3
--- /dev/null
+++ b/community/virtualbox/vboxservice.rc
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/${0##*/}
+
+name=VBoxService
+PID=$(pidof -o %PPID $name)
+
+case "$1" in
+ start)
+ stat_busy 'Starting VirtualBox Guest Service'
+ [[ -z "$PID" ]] && ${name} $VBOX_SERVICE_OPTION &>/dev/null \
+ && { add_daemon ${0##*/}; stat_done; } \
+ || { stat_fail; exit 1; }
+ ;;
+ stop)
+ stat_busy 'Stopping VirtualBox Guest Service'
+ [[ -n "$PID" ]] && kill $PID &>/dev/null \
+ && { rm_daemon ${0##*/}; stat_done; } \
+ || { stat_fail; exit 1; }
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ status)
+ stat_busy 'Checking VirtualBox Guest Service status'
+ ck_status ${0##*/}
+ ;;
+ *)
+ echo "usage: ${0##*/} {start|stop|restart|status}" >&2
+ exit 1
+esac
+
+exit 0
+
+# vim:set ts=2 sw=2 ft=sh et:
diff --git a/community/virtualbox/vboxservice.service b/community/virtualbox/vboxservice.service
new file mode 100644
index 000000000..bbd61617d
--- /dev/null
+++ b/community/virtualbox/vboxservice.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=VirtualBox Guest Service
+ConditionVirtualization=oracle
+
+[Service]
+ExecStart=/usr/bin/VBoxService -f
+
+[Install]
+WantedBy=multi-user.target
diff --git a/community/virtualbox/vboxweb.conf b/community/virtualbox/vboxweb.conf
new file mode 100644
index 000000000..c36f6a143
--- /dev/null
+++ b/community/virtualbox/vboxweb.conf
@@ -0,0 +1,11 @@
+# WebService Mandatory Variables
+#VBOXWEB_USER=
+
+# WebService Variables
+#VBOXWEB_LOGFILE=
+#VBOXWEB_HOST=
+#VBOXWEB_PORT=
+#VBOXWEB_TIMEOUT=
+#VBOXWEB_CHECK_INTERVAL=
+#VBOXWEB_THREADS=
+#VBOXWEB_KEEPALIVE=
diff --git a/community/virtualbox/vboxweb.rc b/community/virtualbox/vboxweb.rc
new file mode 100644
index 000000000..97273e3c7
--- /dev/null
+++ b/community/virtualbox/vboxweb.rc
@@ -0,0 +1,86 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/vbox/vbox.cfg
+. /etc/conf.d/vboxweb
+
+BINARY="$INSTALL_DIR/vboxwebsrv"
+
+start() {
+ stat_busy "Starting VirtualBox Web Service";
+ if ! pidof -o %PPID $BINARY >/dev/null; then
+ [[ "$VBOXWEB_USER" ]] || stat_die
+ lsmod | grep -q "vboxdrv[^_-]" || stat_die
+ PARAMS="--background"
+ [[ "$VBOXWEB_HOST" ]] && PARAMS+=" -H $VBOXWEB_HOST"
+ [[ "$VBOXWEB_PORT" ]] && PARAMS+=" -p $VBOXWEB_PORT"
+ [[ "$VBOXWEB_TIMEOUT" ]] && PARAMS+=" -t $VBOXWEB_TIMEOUT"
+ [[ "$VBOXWEB_CHECK_INTERVAL" ]] && PARAMS+=" -i $VBOXWEB_CHECK_INTERVAL"
+ [[ "$VBOXWEB_THREADS" ]] && PARAMS+=" -T $VBOXWEB_THREADS"
+ [[ "$VBOXWEB_KEEPALIVE" ]] && PARAMS+=" -k $VBOXWEB_KEEPALIVE"
+ [[ "$VBOXWEB_LOGFILE" ]] && PARAMS+=" -F $VBOXWEB_LOGFILE"
+ # prevent inheriting this setting to VBoxSVC
+ unset VBOX_RELEASE_LOG_DEST
+ su - $VBOXWEB_USER -c "$BINARY $PARAMS" &>/dev/null
+ # ugly: wait until the final process has forked
+ sleep .2
+ if pidof -o %PPID $BINARY >/dev/null; then
+ add_daemon vboxweb
+ stat_done
+ else
+ stat_die
+ fi
+ else
+ stat_die
+ fi
+}
+
+stop() {
+ stat_busy "Stopping VirtualBox Web Service"
+ PID=$(pidof -o %PPID $BINARY)
+ [[ $PID ]] && kill $PID &>/dev/null
+ if ! pidof -o %PPID $BINARY >/dev/null; then
+ rm_daemon vboxweb
+ stat_done
+ else
+ stat_die
+ fi
+}
+
+restart() {
+ stop && start
+}
+
+status() {
+ stat_busy "Checking for VirtualBox Web Service"
+ if pidof -o %PPID $BINARY >/dev/null; then
+ stat_done
+ else
+ stat_fail
+ false
+ fi
+}
+
+case "$1" in
+start)
+ start
+ ;;
+stop)
+ stop
+ ;;
+restart)
+ restart
+ ;;
+force-reload)
+ restart
+ ;;
+status)
+ status
+ ;;
+*)
+ echo "Usage: $0 {start|stop|restart|status}"
+ exit 1
+esac
+
+# vim:set ts=2 sw=2 ft=sh et:
diff --git a/community/virtualbox/vboxweb.service b/community/virtualbox/vboxweb.service
new file mode 100644
index 000000000..303381597
--- /dev/null
+++ b/community/virtualbox/vboxweb.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=VirtualBox Web Service
+After=network.target
+
+[Service]
+Type=forking
+PIDFile=/run/vboxweb.pid
+ExecStart=/usr/bin/vboxwebsrv --pidfile /run/vboxweb.pid --background
+
+[Install]
+WantedBy=multi-user.target
diff --git a/community/virtualbox/virtualbox-ext-vnc.install b/community/virtualbox/virtualbox-ext-vnc.install
new file mode 100644
index 000000000..828a16a1d
--- /dev/null
+++ b/community/virtualbox/virtualbox-ext-vnc.install
@@ -0,0 +1,25 @@
+#/bin/sh
+
+# arg 1: the new package version
+post_install() {
+ VBoxManage extpack install "/usr/share/virtualbox/extensions/VNC-${1%%-*}.vbox-extpack" >/dev/null
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+pre_upgrade() {
+ pre_remove "$2"
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install "$1"
+}
+
+# arg 1: the old package version
+pre_remove() {
+ VBoxManage extpack uninstall 'VNC' >/dev/null
+}
+
+# vim:set ts=2 sw=2 ft=sh et:
diff --git a/community/virtualbox/virtualbox-guest-dkms.install b/community/virtualbox/virtualbox-guest-dkms.install
new file mode 100644
index 000000000..2d62eae43
--- /dev/null
+++ b/community/virtualbox/virtualbox-guest-dkms.install
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# arg 1: the new package version
+post_install() {
+ dkms add vboxguest/${1%-*}
+ cat << EOF
+==> To build and install your modules run dkms install vboxguest/${1%-*}
+==> To do this automatically at startup you can add dkms in your DAEMONS
+EOF
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+pre_upgrade() {
+ pre_remove "$2"
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install "$1"
+}
+
+# arg 1: the old package version
+pre_remove() {
+ # Remove modules using dkms
+ [ -n "${1%-*}" ] && dkms remove vboxguest/${1%-*} --all >/dev/null || true
+}
+
+# vim:set ts=2 sw=2 ft=sh et:
diff --git a/community/virtualbox/virtualbox-guest-utils.install b/community/virtualbox/virtualbox-guest-utils.install
new file mode 100644
index 000000000..38bbe807d
--- /dev/null
+++ b/community/virtualbox/virtualbox-guest-utils.install
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+# arg 1: the new package version
+post_install() {
+ getent group vboxsf > /dev/null || groupadd -g 109 vboxsf
+ true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install "$1"
+ # rename /etc/rc.d/vboxservice
+ if [ "`vercmp $2 4.1.18-3`" -lt 0 ]; then
+ cat << EOF
+==> rc.d vbox-service script was renamed to vboxservice.
+EOF
+ fi
+ # fix gid of vboxsf
+ if [ "`vercmp $2 4.1.18-4`" -lt 0 ]; then
+ groupmod -g 109 vboxsf
+ fi
+ true
+}
+
+# arg 1: the old package version
+post_remove() {
+ groupdel vboxsf >/dev/null 2>&1 || true
+}
+
+# vim:set ts=2 sw=2 ft=sh et:
diff --git a/community/virtualbox/virtualbox-host-dkms.install b/community/virtualbox/virtualbox-host-dkms.install
new file mode 100644
index 000000000..8028cb7e0
--- /dev/null
+++ b/community/virtualbox/virtualbox-host-dkms.install
@@ -0,0 +1,30 @@
+#/bin/sh
+
+# arg 1: the new package version
+post_install() {
+ dkms add vboxhost/${1%-*}
+ cat << EOF
+==> To build and install your modules run dkms install vboxhost/${1%-*}
+==> To do this automatically at startup you can add dkms in your DAEMONS
+EOF
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+pre_upgrade() {
+ pre_remove "$2"
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install "$1"
+}
+
+# arg 1: the old package version
+pre_remove() {
+ # Remove modules using dkms
+ [ -n "${1%-*}" ] && dkms remove vboxhost/${1%-*} --all >/dev/null || true
+}
+
+# vim:set ts=2 sw=2 ft=sh et:
diff --git a/community/virtualbox/virtualbox.install b/community/virtualbox/virtualbox.install
new file mode 100644
index 000000000..6913fe2ed
--- /dev/null
+++ b/community/virtualbox/virtualbox.install
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+utils() {
+ if [ -x usr/bin/update-mime-database ]; then
+ update-mime-database usr/share/mime > /dev/null 2>&1
+ fi
+
+ if [ -x usr/bin/xdg-icon-resource ]; then
+ xdg-icon-resource forceupdate --theme hicolor > /dev/null 2>&1
+ fi
+
+ if [ -x usr/bin/update-desktop-database ]; then
+ usr/bin/update-desktop-database -q
+ fi
+
+ if [ -x usr/bin/udevadm ]; then
+ usr/bin/udevadm control --reload
+ fi
+}
+
+# arg 1: the new package version
+post_install() {
+ getent group vboxusers >/dev/null || usr/sbin/groupadd -g 108 vboxusers
+ utils
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install "$1"
+ if [ "$(vercmp $2 4.1.6-1)" -lt 0 ]; then
+ cat << EOF
+===> Starting with virtualbox version 4.1.6-1, kernel modules handling is done by virtualbox-modules.
+===> Use virtualbox-source package if you don't use our stock linux package.
+EOF
+ fi
+}
+
+# arg 1: the old package version
+post_remove() {
+ groupdel vboxusers >/dev/null 2>&1 || true
+ utils
+}
+
+# vim:set ts=2 sw=2 ft=sh et: