From 76b5704f46d3e59e41ed5883d23dd0d4aa818f4c Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Mon, 24 May 2010 22:02:28 +0200 Subject: updates Signed-off-by: Florian Pritz --- virtualbox_bin/10-vboxdrv.rules | 3 ++ virtualbox_bin/PKGBUILD | 104 ++++++++++++++++++++++++++++++++++++++ virtualbox_bin/vbox.install | 102 +++++++++++++++++++++++++++++++++++++ virtualbox_bin/vbox_build_module | 5 ++ virtualbox_bin/virtualbox.install | 100 ++++++++++++++++++++++++++++++++++++ 5 files changed, 314 insertions(+) create mode 100644 virtualbox_bin/10-vboxdrv.rules create mode 100644 virtualbox_bin/PKGBUILD create mode 100644 virtualbox_bin/vbox.install create mode 100644 virtualbox_bin/vbox_build_module create mode 100644 virtualbox_bin/virtualbox.install (limited to 'virtualbox_bin') diff --git a/virtualbox_bin/10-vboxdrv.rules b/virtualbox_bin/10-vboxdrv.rules new file mode 100644 index 0000000..59babea --- /dev/null +++ b/virtualbox_bin/10-vboxdrv.rules @@ -0,0 +1,3 @@ +KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660" +SUBSYSTEM=="usb_device", GROUP="vboxusers", MODE="0664" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="vboxusers", MODE="0664" diff --git a/virtualbox_bin/PKGBUILD b/virtualbox_bin/PKGBUILD new file mode 100644 index 0000000..605710a --- /dev/null +++ b/virtualbox_bin/PKGBUILD @@ -0,0 +1,104 @@ +# Maintainer: Lukas Fleischer +# Contributor: thotypous +# Contributor: xduugu +# Contributor: Peter 'piie' Feuerer +# Contributor: Sascha Pfau +# Contributor: iggy + +pkgname="virtualbox_bin" +pkgver="3.2.0" +_build="61806" +pkgrel=1 +pkgdesc="Powerful x86 virtualization (Personal Use Binaries Edition)." +arch=('i686' 'x86_64') +url="http://virtualbox.org" +license=('custom:PUEL') +depends=('libidl2' 'libxcursor' 'libxinerama' 'libxslt' 'curl' 'gcc' 'make' 'kernel26-headers') +optdepends=("qt: for VirtualBox GUI" + "sdl: for VBoxSDL and VirtualBox GUI" + "libgl: for shared OpenGL" + "libxt: for shared Clipboard" + "alsa-lib: for ALSA support" + "pulseaudio: for PulseAudio support") +provides=("virtualbox=${pkgver}") +conflicts=('virtualbox-ose' 'virtualbox-modules') +install='virtualbox.install' +_architect='x86' +[ "$CARCH" = "x86_64" ] && _architect='amd64' +source=("VirtualBox-${pkgver}-${_build}-Linux_${_architect}.run::http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}-${_build}-Linux_${_architect}.run" + '10-vboxdrv.rules' + 'vbox_build_module') +md5sums=('003c36b1704dda450b6b21e99afc2d85' + '98859bfca9ef2ebf2ea43eb9123316fc' + 'dcb2d165b25274f77426a895d6dc41af') +[ "$CARCH" = "x86_64" ] && md5sums[0]='6fc4475dc26af6aa64bd9fb37ea9ca6a' + +build() { + # Check and unpack the run package via sh(1) + sh "VirtualBox-${pkgver}-${_build}-Linux_${_architect}.run" --check || return 1 + echo yes | sh "VirtualBox-${pkgver}-${_build}-Linux_${_architect}.run" --target "$srcdir" \ + --nox11 --noexec &> /dev/null || return 1 + + # Unpack bundled files + mkdir -p "$pkgdir/opt/VirtualBox" || return 1 + cd "$pkgdir/opt/VirtualBox" + tar -xjf "$srcdir/VirtualBox.tar.bz2" || return 1 + + mkdir -p "$pkgdir/usr/"{bin,share/applications,share/pixmaps} || return 1 + + # Hardened build: Mark binaries suid root, create symlinks for working around + # unsupported $ORIGIN/.. in VBoxC.so and make sure the + # directory is only writable by the user (paranoid). + chmod 4511 VirtualBox VBox{SDL,Headless,NetDHCP} + for _lib in VBox{VMM,REM,RT,DDU,XPCOM}.so; do + ln -sf "/opt/VirtualBox/${_lib}" "components/${_lib}" + done + chmod go-w . + + # VBoxNetAdpCtl needs to be suid root in any case + chmod 4511 VBoxNetAdpCtl + + # Replace VirtualBox built-in Qt by system Qt libraries (disabled as of + # 2010-03-26, 3.1.6-1) + #for _lib in libQt{Core,Gui,Network,OpenGL}; do + # rm "${_lib}VBox.so.4" + # ln -s "/usr/lib/${_lib}.so.4" "${_lib}VBox.so.4" + #done + + # Install the SDK (disabled, since the extension expects an UCS4-compiled + # python, while Arch Linux has an UCS2-compiled python) + #cd "$pkgdir/opt/VirtualBox/sdk/installer" + #VBOX_INSTALL_PATH="/opt/VirtualBox" python vboxapisetup.py install --root "${pkgdir}" || return 1 + #rm -Rf build + #cd "$pkgdir/opt/VirtualBox" + rm -Rf sdk vboxshell.py VBoxPython* + + # Symlink the launchers + for _bin in VirtualBox VBox{Headless,Manage,SDL,SVC,Tunctl,NetAdpCtl} rdesktop-vrdp; do + ln -s "/opt/VirtualBox/${_bin}" "$pkgdir/usr/bin/${_bin}" + done + + # Symlink the desktop icon and ".desktop" files + ln -s "/opt/VirtualBox/VBox.png" "$pkgdir/usr/share/pixmaps/VBox.png" + ln -s "/opt/VirtualBox/virtualbox.desktop" "$pkgdir/usr/share/applications/VirtualBox.desktop" + + # Install vbox_build_module + install -Dm0744 "$srcdir/vbox_build_module" "$pkgdir/usr/bin/vbox_build_module" || return 1 + + # Replace some init scripts by simplified stuff + sed -i -e 's,sudo /etc/init.d/vboxdrv setup,/usr/bin/vbox_build_module,g' \ + "$pkgdir/opt/VirtualBox/VBox.sh" + sed -i -e 's,sudo /etc/init.d/vboxdrv restart,modprobe vboxdrv,g' \ + "$pkgdir/opt/VirtualBox/VBox.sh" + + # Install udev rules + install -Dm0644 "$srcdir/10-vboxdrv.rules" "$pkgdir/lib/udev/rules.d/10-vboxdrv.rules" || return 1 + + # Setup configuration + mkdir -p "$pkgdir/etc/vbox" || return 1 + echo 'INSTALL_DIR="/opt/VirtualBox"' > "$pkgdir/etc/vbox/vbox.cfg" + + # Symlink the license + mkdir -p "$pkgdir/usr/share/licenses/$pkgname" || return 1 + ln -s "/opt/VirtualBox/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/PUEL" +} diff --git a/virtualbox_bin/vbox.install b/virtualbox_bin/vbox.install new file mode 100644 index 0000000..c4615db --- /dev/null +++ b/virtualbox_bin/vbox.install @@ -0,0 +1,102 @@ +_install_notes() { + echo + echo '---------------------------------------------------------------------------' + echo ' IMPORTANT NOTES:' + echo + echo '- Run "vbox_build_module" as root every time your kernel is upgraded, to' + echo ' compile the module for the new kernel version.' + echo '- Add your user to the vboxusers group:' + echo ' gpasswd -a USERNAME vboxusers' + echo '- Add "vboxdrv" to the MODULES array in your "/etc/rc.conf"' + echo '- Add "vboxnetflt" to MODULES if you want Host Interface networking.' + echo '- Add "vboxnetadp" to MODULES if you want Host-Only networking.' + echo '- If USB does not work for you out-of-the-box, add the following line' + echo ' to "/etc/fstab":' + echo ' none /proc/bus/usb usbfs auto,busgid=108,busmode=0775,devgid=108,devmode=0664 0 0' + echo "---------------------------------------------------------------------------" +} + +# $1: The new package version +post_install() { + # Unload modules (if any). + for i in vboxdrv vboxnetadp vboxnetflt; do + modprobe -r $i &>/dev/null + done + + # Build new module + echo "Building VirtualBox modules..." + /usr/bin/vbox_build_module &>/dev/null + + # Add vboxusers group + # + # This GID is reserved (http://wiki.archlinux.org/index.php/UID_and_GID_list) + # But in some systems it may be being used. Please replace if needed. + groupadd -f -g 108 vboxusers + + # Create the directory below if it doesn't exist + mkdir -p /var/run/VirtualBox + + # Load new udev rule for module vboxdrv + udevadm control --reload-rules + + # Show the license + echo '---------------------------------------------------------------------------' >&2 + echo ' You must agree to the following license in order to use this program:' >&2 + echo >&2 + cat /opt/VirtualBox/LICENSE >&2 + echo >&2 + echo '---------------------------------------------------------------------------' >&2 + + # Load the new module + modprobe vboxdrv + + _install_notes +} + +# $1: The new package version +# $2: The old package version +post_upgrade() { + _NEWVERSION=`echo $1 | cut -f-1 -d '-'` + _OLDVERSION=`echo $2 | cut -f-1 -d '-'` + + # Unload modules (if any). + for i in vboxdrv vboxnetadp vboxnetflt; do + modprobe -r $i &>/dev/null + done + + # Remove any stuff (eg. module compilation files) from an + # old installation. Old versions used to use these directories. + if [ "$_NEWVERSION" != "$_OLDVERSION" ]; then + rm -Rf "/opt/VirtualBox-${_OLDVERSION}" &>/dev/null + fi + if [ "$1" != "$2" ]; then + rm -Rf "/opt/virtualbox" &>/dev/null + fi + + # Create the directory below if it doesn't exist + mkdir -p /var/run/VirtualBox + + # Build new module + echo "Building VirtualBox modules..." + /usr/bin/vbox_build_module &>/dev/null + + # Load the new module + modprobe vboxdrv + + _install_notes +} + +# $1: The old package version +pre_remove() { + # Unload modules (if any). + for i in vboxdrv vboxnetadp vboxnetflt; do + modprobe -r $i &>/dev/null + done + + # Remove the module files. + rm -f /lib/modules/`uname -r`/misc/{vboxdrv,vboxnetadp,vboxnetflt}.ko + + # Remove any stuff remaining from the module compilation. + rm -Rf "/opt/VirtualBox" +} + diff --git a/virtualbox_bin/vbox_build_module b/virtualbox_bin/vbox_build_module new file mode 100644 index 0000000..58e1e6b --- /dev/null +++ b/virtualbox_bin/vbox_build_module @@ -0,0 +1,5 @@ +#!/bin/bash + +echo "Building vboxdrv for `uname -sr`" +cd "/opt/VirtualBox/src" +make clean && make && make install diff --git a/virtualbox_bin/virtualbox.install b/virtualbox_bin/virtualbox.install new file mode 100644 index 0000000..6831b68 --- /dev/null +++ b/virtualbox_bin/virtualbox.install @@ -0,0 +1,100 @@ +_install_notes() { + echo + echo '---------------------------------------------------------------------------' + echo ' IMPORTANT NOTES:' + echo + echo '- Run "vbox_build_module" as root every time your kernel is upgraded, to' + echo ' compile the module for the new kernel version.' + echo '- Add your user to the vboxusers group:' + echo ' gpasswd -a USERNAME vboxusers' + echo '- Add "vboxdrv" to the MODULES array in your "/etc/rc.conf"' + echo '- Add "vboxnetflt" to MODULES if you want Host Interface networking.' + echo '- Add "vboxnetadp" to MODULES if you want Host-Only networking.' + echo '- If USB does not work for you out-of-the-box, add the following line' + echo ' to "/etc/fstab":' + echo ' none /proc/bus/usb usbfs auto,busgid=108,busmode=0775,devgid=108,devmode=0664 0 0' + echo "---------------------------------------------------------------------------" +} + +# $1: The new package version +post_install() { + # Unload modules (if any) + for _mod in vbox{drv,netadp,netflt}; do + modprobe -r $_mod &> /dev/null + done + + # Build new module + echo "Building VirtualBox modules..." + /usr/bin/vbox_build_module &> /dev/null + + # Add vboxusers group, GID 108 is reserved (http://wiki.archlinux.org/index.php/UID_and_GID_list), + # but in some systems it may be being used - please replace if needed. + groupadd -f -g 108 vboxusers + + # Create the directory below if it doesn't exist + mkdir -p "/var/run/VirtualBox" + + # Load new udev rule for module vboxdrv + udevadm control --reload-rules + + # Show the license + echo '---------------------------------------------------------------------------' >&2 + echo ' You must agree to the following license in order to use this program:' >&2 + echo >&2 + cat "/opt/VirtualBox/LICENSE" >&2 + echo >&2 + echo '---------------------------------------------------------------------------' >&2 + + # Load the new module + modprobe vboxdrv + + _install_notes +} + +# $1: The new package version +# $2: The old package version +post_upgrade() { + _NEWVERSION=`echo $1 | cut -f-1 -d '-'` + _OLDVERSION=`echo $2 | cut -f-1 -d '-'` + + # Unload modules (if any) + for _mod in vbox{drv,netadp,netflt}; do + modprobe -r $_mod &> /dev/null + done + + # Remove any stuff (e.g. module compilation files) from an old installation - old versions used + # to use these directories. + if [ "$_NEWVERSION" != "$_OLDVERSION" ]; then + rm -Rf "/opt/VirtualBox-${_OLDVERSION}" &> /dev/null + fi + if [ "$1" != "$2" ]; then + rm -Rf "/opt/virtualbox" &> /dev/null + fi + + # Create the directory below if it doesn't exist + mkdir -p "/var/run/VirtualBox" + + # Build new module + echo "Building VirtualBox modules..." + /usr/bin/vbox_build_module &> /dev/null + + # Load the new module + modprobe vboxdrv + + _install_notes +} + +# $1: The old package version +pre_remove() { + # Unload modules (if any) + for _mod in vbox{drv,netadp,netflt}; do + modprobe -r $_mod &> /dev/null + done + + # Remove the module files + rm -f "/lib/modules/`uname -r`/misc/"{vboxdrv,vboxnetadp,vboxnetflt}.ko + + # Remove any stuff remaining from the module compilation + rm -Rf "/opt/VirtualBox" +} + -- cgit v1.2.3-24-g4f1b