VirtualBox.tmpl.spec revision 9704f1d0180960069e2c4eb8fe2ddee350910e5d
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# Spec file for creating VirtualBox rpm packages
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# Copyright (C) 2006-2011 Oracle Corporation
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# available from http://www.virtualbox.org. This file is free software;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# you can redistribute it and/or modify it under the terms of the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# General Public License as published by the Free Software Foundation,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# distribution. VirtualBox OSE is distributed in the hope that it will
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# be useful, but WITHOUT ANY WARRANTY of any kind.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync%define %SPEC% 1
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsyncSummary: Oracle VM VirtualBox
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsyncName: %NAME%
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsyncVersion: %BUILDVER%_%BUILDREL%
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsyncRelease: 1
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsyncURL: http://www.virtualbox.org/
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsyncSource: VirtualBox.tar.bz2
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsyncLicense: GPLv2
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsyncGroup: Applications/System
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncVendor: Oracle Corporation
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncBuildRoot: %BUILDROOT%
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncRequires: %LIBASOUND%
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync%if %{?rpm_suse:1}%{!?rpm_suse:0}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync%debug_package
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync%endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync%MACROSPYTHON%
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync%description
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncVirtualBox is a powerful PC virtualization solution allowing
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncyou to run a wide range of PC operating systems on your Linux
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncsystem. This includes Windows, Linux, FreeBSD, DOS, OpenBSD
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncand others. VirtualBox comes with a broad feature set and
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncexcellent performance, making it the premier virtualization
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncsoftware solution on the market.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync%prep
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync%setup -q
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDESTDIR=""
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncunset DESTDIR
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync%build
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync%install
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# Mandriva: prevent replacing 'echo' by 'gprintf'
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncexport DONT_GPRINTIFY=1
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncrm -rf $RPM_BUILD_ROOT
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/sbin
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT%{_initrddir}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/lib/modules
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/etc/vbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/bin
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/src
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/applications
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/pixmaps
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/icons/hicolor
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT%{_defaultdocdir}/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/lib/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/lib/virtualbox/ExtensionPacks
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/mime/packages
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv VBoxEFI32.fd $RPM_BUILD_ROOT/usr/lib/virtualbox || true
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv VBoxEFI64.fd $RPM_BUILD_ROOT/usr/lib/virtualbox || true
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv *.gc $RPM_BUILD_ROOT/usr/lib/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv *.r0 $RPM_BUILD_ROOT/usr/lib/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv *.rel $RPM_BUILD_ROOT/usr/lib/virtualbox || true
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv VBoxNetDHCP $RPM_BUILD_ROOT/usr/lib/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv VBoxNetAdpCtl $RPM_BUILD_ROOT/usr/lib/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv VBoxXPCOMIPCD $RPM_BUILD_ROOT/usr/lib/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv components $RPM_BUILD_ROOT/usr/lib/virtualbox/components
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv *.so $RPM_BUILD_ROOT/usr/lib/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv *.so.4 $RPM_BUILD_ROOT/usr/lib/virtualbox || true
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv VBoxTestOGL $RPM_BUILD_ROOT/usr/lib/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv vboxshell.py $RPM_BUILD_ROOT/usr/lib/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync(export VBOX_INSTALL_PATH=/usr/lib/virtualbox && \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync cd ./sdk/installer && \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync %{__python} ./vboxapisetup.py install --prefix %{_prefix} --root $RPM_BUILD_ROOT)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncrm -rf sdk/installer
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv sdk $RPM_BUILD_ROOT/usr/lib/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv nls $RPM_BUILD_ROOT/usr/share/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccp -a src $RPM_BUILD_ROOT/usr/share/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv VBox.sh $RPM_BUILD_ROOT/usr/bin/VBox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv VBoxSysInfo.sh $RPM_BUILD_ROOT/usr/share/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv VBoxCreateUSBNode.sh $RPM_BUILD_ROOT/usr/share/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccp icons/128x128/virtualbox.png $RPM_BUILD_ROOT/usr/share/pixmaps/virtualbox.png
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccd icons
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync for i in *; do
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if [ -f $i/virtualbox.png ]; then
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync install -d $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/apps
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync mv $i/virtualbox.png $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/apps
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync fi
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync install -d $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/mimetypes
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync mv $i/* $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/mimetypes || true
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync rmdir $i
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync done
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccd -
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncrmdir icons
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv virtualbox.xml $RPM_BUILD_ROOT/usr/share/mime/packages
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncfor i in VBoxManage VBoxSVC VBoxSDL VirtualBox VBoxHeadless VBoxExtPackHelperApp VBoxBalloonCtrl vboxwebsrv webtest; do
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync mv $i $RPM_BUILD_ROOT/usr/lib/virtualbox; done
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncfor i in VBoxSDL VirtualBox VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl; do
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/$i; done
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv VBoxTunctl $RPM_BUILD_ROOT/usr/bin
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncfor d in /lib/modules/*; do
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if [ -L $d/build ]; then
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync rm -f /tmp/vboxdrv-Module.symvers
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ./src/vboxhost/vboxdrv/build_in_tmp \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync --save-module-symvers /tmp/vboxdrv-Module.symvers \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync %INSTMOD%
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ./src/vboxhost/vboxnetflt/build_in_tmp \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync --use-module-symvers /tmp/vboxdrv-Module.symvers \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync %INSTMOD%
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ./src/vboxhost/vboxnetadp/build_in_tmp \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync --use-module-symvers /tmp/vboxdrv-Module.symvers \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync %INSTMOD%
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ./src/vboxhost/vboxpci/build_in_tmp \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync --use-module-symvers /tmp/vboxdrv-Module.symvers \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync %INSTMOD%
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync fi
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncdone
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncmv kchmviewer $RPM_BUILD_ROOT/usr/lib/virtualbox
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncfor i in rdesktop-vrdp.tar.gz rdesktop-vrdp-keymaps additions/VBoxGuestAdditions.iso; do
mv $i $RPM_BUILD_ROOT/usr/share/virtualbox; done
if [ -d accessible ]; then
mv accessible $RPM_BUILD_ROOT/usr/lib/virtualbox
fi
mv rdesktop-vrdp $RPM_BUILD_ROOT/usr/bin
install -D -m 755 vboxdrv.init $RPM_BUILD_ROOT%{_initrddir}/vboxdrv
%if %{?rpm_suse:1}%{!?rpm_suse:0}
ln -sf ../etc/init.d/vboxdrv $RPM_BUILD_ROOT/sbin/rcvboxdrv
%endif
install -D -m 755 vboxballoonctrl-service.init $RPM_BUILD_ROOT%{_initrddir}/vboxballoonctrl-service
install -D -m 755 vboxweb-service.init $RPM_BUILD_ROOT%{_initrddir}/vboxweb-service
%if %{?rpm_suse:1}%{!?rpm_suse:0}
ln -sf ../etc/init.d/vboxballoonctrl-service $RPM_BUILD_ROOT/sbin/rcvboxballoonctrl-service
ln -sf ../etc/init.d/vboxweb-service $RPM_BUILD_ROOT/sbin/rcvboxweb-service
%endif
ln -s VBox $RPM_BUILD_ROOT/usr/bin/VirtualBox
ln -s VBox $RPM_BUILD_ROOT/usr/bin/virtualbox
ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxManage
ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxmanage
ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxSDL
ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxsdl
ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxVRDP
ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxHeadless
ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxheadless
ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxBalloonCtrl
ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxballoonctrl
ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxwebsrv
ln -s /usr/share/virtualbox/src/vboxhost $RPM_BUILD_ROOT/usr/src/vboxhost-%VER%
mv virtualbox.desktop $RPM_BUILD_ROOT/usr/share/applications/virtualbox.desktop
mv VBox.png $RPM_BUILD_ROOT/usr/share/pixmaps/VBox.png
%pre
# defaults
[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
# check for active VMs of the installed (old) package
VBOXSVC_PID=`pidof VBoxSVC 2>/dev/null || true`
if [ -n "$VBOXSVC_PID" ]; then
# executed before the new package is installed!
if [ -f /etc/init.d/vboxballoonctrl-service ]; then
# try graceful termination; terminate the balloon control service first
/etc/init.d/vboxballoonctrl-service stop 2>/dev/null || true
fi
if [ -f /etc/init.d/vboxweb-service ]; then
# try graceful termination; terminate the webservice first
/etc/init.d/vboxweb-service stop 2>/dev/null || true
fi
# ask the daemon to terminate immediately
kill -USR1 $VBOXSVC_PID
sleep 1
if pidof VBoxSVC > /dev/null 2>&1; then
echo "A copy of VirtualBox is currently running. Please close it and try again."
echo "Please note that it can take up to ten seconds for VirtualBox (in particular"
echo "the VBoxSVC daemon) to finish running."
exit 1
fi
fi
# check for old installation
if [ -r /etc/vbox/vbox.cfg ]; then
. /etc/vbox/vbox.cfg
if [ "x$INSTALL_DIR" != "x" -a -d "$INSTALL_DIR" ]; then
echo "An old installation of VirtualBox was found. To install this package the"
echo "old package has to be removed first. Have a look at /etc/vbox/vbox.cfg to"
echo "determine the installation directory of the previous installation. After"
echo "uninstalling the old package remove the file /etc/vbox/vbox.cfg."
exit 1
fi
fi
# XXX remove old modules from previous versions (disable with INSTALL_NO_VBOXDRV=1 in /etc/default/virtualbox)
if [ "$INSTALL_NO_VBOXDRV" != "1" ]; then
find /lib/modules -name "vboxdrv\.*" 2>/dev/null|xargs rm -f 2> /dev/null || true
find /lib/modules -name "vboxnetflt\.*" 2>/dev/null|xargs rm -f 2> /dev/null || true
find /lib/modules -name "vboxnetadp\.*" 2>/dev/null|xargs rm -f 2> /dev/null || true
find /lib/modules -name "vboxpci\.*" 2>/dev/null|xargs rm -f 2> /dev/null || true
fi
%post
LOG="/var/log/vbox-install.log"
# defaults
[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
# remove old cruft
if [ -f /etc/init.d/vboxdrv.sh ]; then
echo "Found old version of /etc/init.d/vboxdrv.sh, removing."
rm /etc/init.d/vboxdrv.sh
fi
if [ -f /etc/vbox/vbox.cfg ]; then
echo "Found old version of /etc/vbox/vbox.cfg, removing."
rm /etc/vbox/vbox.cfg
fi
rm -f /etc/vbox/module_not_compiled
# install udev rule (disable with INSTALL_NO_UDEV=1 in /etc/default/virtualbox)
if [ -d /etc/udev/rules.d -a "$INSTALL_NO_UDEV" != "1" ]; then
udev_call=""
udev_app=`which udevadm 2> /dev/null`
if [ $? -eq 0 ]; then
udev_call="${udev_app} version 2> /dev/null"
else
udev_app=`which udevinfo 2> /dev/null`
if [ $? -eq 0 ]; then
udev_call="${udev_app} -V 2> /dev/null"
fi
fi
udev_fix="="
if [ "${udev_call}" != "" ]; then
udev_out=`${udev_call}`
udev_ver=`expr "$udev_out" : '[^0-9]*\([0-9]*\)'`
if [ "$udev_ver" = "" -o "$udev_ver" -lt 55 ]; then
udev_fix=""
fi
fi
usb_createnode="/usr/share/virtualbox/VBoxCreateUSBNode.sh"
echo "KERNEL=${udev_fix}\"vboxdrv\", NAME=\"vboxdrv\", OWNER=\"root\", GROUP=\"root\", MODE=\"0600\"" \
> /etc/udev/rules.d/10-vboxdrv.rules
echo "SUBSYSTEM=${udev_fix}\"usb_device\", ACTION=${udev_fix}\"add\", RUN=\"${usb_createnode} \$major \$minor \$attr{bDeviceClass}\"" \
>> /etc/udev/rules.d/10-vboxdrv.rules
echo "SUBSYSTEM=${udev_fix}\"usb\", ACTION=${udev_fix}\"add\", ENV{DEVTYPE}==\"usb_device\", RUN=\"${usb_createnode} \$major \$minor \$attr{bDeviceClass}\"" \
>> /etc/udev/rules.d/10-vboxdrv.rules
echo "SUBSYSTEM=${udev_fix}\"usb_device\", ACTION=${udev_fix}\"remove\", RUN=\"${usb_createnode} --remove \$major \$minor\"" \
>> /etc/udev/rules.d/10-vboxdrv.rules
echo "SUBSYSTEM=${udev_fix}\"usb\", ACTION=${udev_fix}\"remove\", ENV{DEVTYPE}==\"usb_device\", RUN=\"${usb_createnode} --remove \$major \$minor\"" \
>> /etc/udev/rules.d/10-vboxdrv.rules
fi
# Remove old udev description file
if [ -f /etc/udev/rules.d/60-vboxdrv.rules ]; then
rm -f /etc/udev/rules.d/60-vboxdrv.rules 2> /dev/null
fi
# Build our device tree
for i in /sys/bus/usb/devices/*; do
if test -r "$i/dev"; then
dev="`cat "$i/dev" 2> /dev/null`"
major="`expr "$dev" : '\(.*\):' 2> /dev/null`"
minor="`expr "$dev" : '.*:\(.*\)' 2> /dev/null`"
class="`cat $i/bDeviceClass 2> /dev/null`"
sh ${usb_createnode} "$major" "$minor" "$class" ${usb_group} 2>/dev/null
fi
done
# XXX SELinux: allow text relocation entries
%if %{?rpm_redhat:1}%{!?rpm_redhat:0}
if [ -x /usr/bin/chcon ]; then
chcon -t texrel_shlib_t /usr/lib/virtualbox/*VBox* > /dev/null 2>&1
chcon -t texrel_shlib_t /usr/lib/virtualbox/VirtualBox.so > /dev/null 2>&1
chcon -t texrel_shlib_t /usr/lib/virtualbox/VBoxAuth.so > /dev/null 2>&1
chcon -t texrel_shlib_t /usr/lib/virtualbox/components/VBox*.so > /dev/null 2>&1
chcon -t java_exec_t /usr/lib/virtualbox/VirtualBox > /dev/null 2>&1
chcon -t java_exec_t /usr/lib/virtualbox/VBoxSDL > /dev/null 2>&1
chcon -t java_exec_t /usr/lib/virtualbox/VBoxHeadless > /dev/null 2>&1
chcon -t java_exec_t /usr/lib/virtualbox/VBoxExtPackHelperApp > /dev/null 2>&1
chcon -t java_exec_t /usr/lib/virtualbox/VBoxBalloonCtrl > /dev/null 2>&1
chcon -t java_exec_t /usr/lib/virtualbox/vboxwebsrv > /dev/null 2>&1
fi
%endif
# create users groups (disable with INSTALL_NO_GROUP=1 in /etc/default/virtualbox)
if [ "$INSTALL_NO_GROUP" != "1" ]; then
echo
echo "Creating group 'vboxusers'. VM users must be member of that group!"
echo
groupadd -f vboxusers 2> /dev/null
fi
%if %{?rpm_redhat:1}%{!?rpm_redhat:0}
/sbin/chkconfig --add vboxdrv
/sbin/chkconfig --add vboxballoonctrl-service
/sbin/chkconfig --add vboxweb-service
%endif
%if %{?rpm_suse:1}%{!?rpm_suse:0}
%{fillup_and_insserv -f -y -Y vboxdrv vboxballoonctrl-service vboxweb-service}
%endif
%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
/sbin/ldconfig
%_post_service vboxdrv
%_post_service vboxballoonctrl-service
%_post_service vboxweb-service
%update_menus
%endif
update-mime-database /usr/share/mime &> /dev/null || :
update-desktop-database -q > /dev/null 2>&1 || :
touch --no-create /usr/share/icons/hicolor
gtk-update-icon-cache -q /usr/share/icons/hicolor 2> /dev/null || :
# Disable module compilation with INSTALL_NO_VBOXDRV=1 in /etc/default/virtualbox
BUILD_MODULES=0
REGISTER_MODULES=1
if [ ! -f /lib/modules/`uname -r`/misc/vboxdrv.ko ]; then
REGISTER_MODULES=0
if [ "$INSTALL_NO_VBOXDRV" != "1" ]; then
# compile problem
cat << EOF
No precompiled module for this kernel found -- trying to build one. Messages
emitted during module compilation will be logged to $LOG.
EOF
BUILD_MODULES=1
fi
fi
# if INSTALL_NO_VBOXDRV is set to 1, remove all shipped modules
if [ "$INSTALL_NO_VBOXDRV" = "1" ]; then
rm -f /lib/modules/*/misc/vboxdrv.ko
rm -f /lib/modules/*/misc/vboxnetflt.ko
rm -f /lib/modules/*/misc/vboxnetadp.ko
rm -f /lib/modules/*/misc/vboxpci.ko
fi
if [ $BUILD_MODULES -eq 1 ]; then
/etc/init.d/vboxdrv setup || true
else
if lsmod | grep -q "vboxdrv[^_-]"; then
/etc/init.d/vboxdrv stop || true
fi
if [ $REGISTER_MODULES -eq 1 ]; then
DKMS=`which dkms 2>/dev/null`
if [ -n "$DKMS" ]; then
$DKMS remove -m vboxhost -v %VER% --all > /dev/null 2>&1 || true
fi
fi
/etc/init.d/vboxdrv start > /dev/null
fi
/etc/init.d/vboxballoonctrl-service start > /dev/null
/etc/init.d/vboxweb-service start > /dev/null
%preun
# $1==0: remove the last version of the package
# $1==1: install the first time
# $1>=2: upgrade
%if %{?rpm_suse:1}%{!?rpm_suse:0}
%stop_on_removal vboxballoonctrl-service
%stop_on_removal vboxweb-service
%endif
%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
%_preun_service vboxballoonctrl-service
%_preun_service vboxweb-service
%endif
%if %{?rpm_redhat:1}%{!?rpm_redhat:0}
if [ "$1" = 0 ]; then
/sbin/service vboxballoonctrl-service stop > /dev/null
/sbin/chkconfig --del vboxballoonctrl-service
/sbin/service vboxweb-service stop > /dev/null
/sbin/chkconfig --del vboxweb-service
fi
%endif
if [ "$1" = 0 ]; then
# check for active VMs
VBOXSVC_PID=`pidof VBoxSVC 2>/dev/null || true`
if [ -n "$VBOXSVC_PID" ]; then
kill -USR1 $VBOXSVC_PID
sleep 1
if pidof VBoxSVC > /dev/null 2>&1; then
echo "A copy of VirtualBox is currently running. Please close it and try again."
echo "Please note that it can take up to ten seconds for VirtualBox (in particular"
echo "the VBoxSVC daemon) to finish running."
exit 1
fi
fi
fi
%if %{?rpm_suse:1}%{!?rpm_suse:0}
%stop_on_removal vboxdrv
%endif
%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
%_preun_service vboxdrv
%endif
if [ "$1" = 0 ]; then
%if %{?rpm_redhat:1}%{!?rpm_redhat:0}
/sbin/service vboxdrv stop > /dev/null
/sbin/chkconfig --del vboxdrv
%endif
rm -f /etc/udev/rules.d/10-vboxdrv.rules
rm -f /etc/vbox/license_agreed
rm -f /etc/vbox/module_not_compiled
# remove our USB device tree
rm -rf /dev/vboxusb 2> /dev/null
fi
DKMS=`which dkms 2>/dev/null`
if [ -n "$DKMS" ]; then
$DKMS remove -m vboxhost -v %VER% --all > /dev/null 2>&1 || true
fi
%postun
%if %{?rpm_redhat:1}%{!?rpm_redhat:0}
if [ "$1" -ge 1 ]; then
/sbin/service vboxdrv restart > /dev/null 2>&1
/sbin/service vboxballoonctrl-service restart > /dev/null 2>&1
/sbin/service vboxweb-service restart > /dev/null 2>&1
fi
%endif
%if %{?rpm_suse:1}%{!?rpm_suse:0}
%restart_on_update vboxdrv vboxballoonctrl-service vboxweb-service
%insserv_cleanup
%endif
%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
/sbin/ldconfig
%{clean_desktop_database}
%clean_menus
%endif
update-mime-database /usr/share/mime &> /dev/null || :
update-desktop-database -q > /dev/null 2>&1 || :
touch --no-create /usr/share/icons/hicolor
gtk-update-icon-cache -q /usr/share/icons/hicolor 2> /dev/null || :
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc LICENSE
%doc UserManual*.pdf
%doc VirtualBox*.chm
%{_initrddir}/vboxdrv
%{_initrddir}/vboxballoonctrl-service
%{_initrddir}/vboxweb-service
%{?rpm_suse: %{py_sitedir}/*}
%{!?rpm_suse: %{python_sitelib}/*}
%{?rpm_suse: /sbin/rcvboxdrv}
%{?rpm_suse: /sbin/rcvboxballoonctrl-service}
%{?rpm_suse: /sbin/rcvboxweb-service}
/lib/modules
/etc/vbox
/usr/bin
/usr/src/vbox*
/usr/lib/virtualbox
/usr/share/applications
/usr/share/icons
/usr/share/mime/packages
/usr/share/pixmaps
/usr/share/virtualbox