diff options
Diffstat (limited to 'community/virtualbox')
-rw-r--r-- | community/virtualbox/001-vboxdrv-reference.patch | 57 | ||||
-rw-r--r-- | community/virtualbox/002-change_default_driver_dir.patch | 18 | ||||
-rw-r--r-- | community/virtualbox/10-vboxdrv.rules | 5 | ||||
-rw-r--r-- | community/virtualbox/60-vboxguest.rules | 2 | ||||
-rw-r--r-- | community/virtualbox/LocalConfig.kmk | 20 | ||||
-rw-r--r-- | community/virtualbox/PKGBUILD | 305 | ||||
-rw-r--r-- | community/virtualbox/vboxservice.conf | 2 | ||||
-rw-r--r-- | community/virtualbox/vboxservice.rc | 39 | ||||
-rw-r--r-- | community/virtualbox/vboxservice.service | 9 | ||||
-rw-r--r-- | community/virtualbox/vboxweb.conf | 11 | ||||
-rw-r--r-- | community/virtualbox/vboxweb.rc | 86 | ||||
-rw-r--r-- | community/virtualbox/vboxweb.service | 11 | ||||
-rw-r--r-- | community/virtualbox/virtualbox-ext-vnc.install | 25 | ||||
-rw-r--r-- | community/virtualbox/virtualbox-guest-dkms.install | 30 | ||||
-rw-r--r-- | community/virtualbox/virtualbox-guest-utils.install | 31 | ||||
-rw-r--r-- | community/virtualbox/virtualbox-host-dkms.install | 30 | ||||
-rw-r--r-- | community/virtualbox/virtualbox.install | 45 |
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: |