VirtualBox.tmpl.spec revision 9704f1d0180960069e2c4eb8fe2ddee350910e5d
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync#
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync# Spec file for creating VirtualBox rpm packages
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync#
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync#
e64031e20c39650a7bc902a3e1aba613b9415deevboxsync# Copyright (C) 2006-2011 Oracle Corporation
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync#
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync# available from http://www.virtualbox.org. This file is free software;
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync# you can redistribute it and/or modify it under the terms of the GNU
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync# General Public License as published by the Free Software Foundation,
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync# in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync# distribution. VirtualBox OSE is distributed in the hope that it will
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync# be useful, but WITHOUT ANY WARRANTY of any kind.
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync#
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync%define %SPEC% 1
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncSummary: Oracle VM VirtualBox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncName: %NAME%
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncVersion: %BUILDVER%_%BUILDREL%
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncRelease: 1
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncURL: http://www.virtualbox.org/
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncSource: VirtualBox.tar.bz2
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncLicense: GPLv2
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncGroup: Applications/System
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncVendor: Oracle Corporation
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncBuildRoot: %BUILDROOT%
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncRequires: %LIBASOUND%
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsync
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync%if %{?rpm_suse:1}%{!?rpm_suse:0}
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync%debug_package
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync%endif
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync%MACROSPYTHON%
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync%description
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncVirtualBox is a powerful PC virtualization solution allowing
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncyou to run a wide range of PC operating systems on your Linux
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncsystem. This includes Windows, Linux, FreeBSD, DOS, OpenBSD
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsyncand others. VirtualBox comes with a broad feature set and
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncexcellent performance, making it the premier virtualization
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncsoftware solution on the market.
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync%prep
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync%setup -q
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncDESTDIR=""
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncunset DESTDIR
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync%build
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync%install
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync# Mandriva: prevent replacing 'echo' by 'gprintf'
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncexport DONT_GPRINTIFY=1
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncrm -rf $RPM_BUILD_ROOT
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/sbin
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT%{_initrddir}
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/lib/modules
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/etc/vbox
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/bin
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/src
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/applications
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/pixmaps
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/icons/hicolor
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT%{_defaultdocdir}/virtualbox
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/lib/virtualbox
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/lib/virtualbox/ExtensionPacks
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/virtualbox
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/mime/packages
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncmv VBoxEFI32.fd $RPM_BUILD_ROOT/usr/lib/virtualbox || true
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncmv VBoxEFI64.fd $RPM_BUILD_ROOT/usr/lib/virtualbox || true
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncmv *.gc $RPM_BUILD_ROOT/usr/lib/virtualbox
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncmv *.r0 $RPM_BUILD_ROOT/usr/lib/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv *.rel $RPM_BUILD_ROOT/usr/lib/virtualbox || true
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv VBoxNetDHCP $RPM_BUILD_ROOT/usr/lib/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv VBoxNetAdpCtl $RPM_BUILD_ROOT/usr/lib/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv VBoxXPCOMIPCD $RPM_BUILD_ROOT/usr/lib/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv components $RPM_BUILD_ROOT/usr/lib/virtualbox/components
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv *.so $RPM_BUILD_ROOT/usr/lib/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv *.so.4 $RPM_BUILD_ROOT/usr/lib/virtualbox || true
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv VBoxTestOGL $RPM_BUILD_ROOT/usr/lib/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv vboxshell.py $RPM_BUILD_ROOT/usr/lib/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync(export VBOX_INSTALL_PATH=/usr/lib/virtualbox && \
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync cd ./sdk/installer && \
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync %{__python} ./vboxapisetup.py install --prefix %{_prefix} --root $RPM_BUILD_ROOT)
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncrm -rf sdk/installer
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv sdk $RPM_BUILD_ROOT/usr/lib/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv nls $RPM_BUILD_ROOT/usr/share/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsynccp -a src $RPM_BUILD_ROOT/usr/share/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv VBox.sh $RPM_BUILD_ROOT/usr/bin/VBox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv VBoxSysInfo.sh $RPM_BUILD_ROOT/usr/share/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv VBoxCreateUSBNode.sh $RPM_BUILD_ROOT/usr/share/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsynccp icons/128x128/virtualbox.png $RPM_BUILD_ROOT/usr/share/pixmaps/virtualbox.png
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsynccd icons
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync for i in *; do
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync if [ -f $i/virtualbox.png ]; then
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync install -d $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/apps
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync mv $i/virtualbox.png $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/apps
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync fi
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync install -d $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/mimetypes
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsync mv $i/* $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/mimetypes || true
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsync rmdir $i
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsync done
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsynccd -
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncrmdir icons
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncmv virtualbox.xml $RPM_BUILD_ROOT/usr/share/mime/packages
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncfor i in VBoxManage VBoxSVC VBoxSDL VirtualBox VBoxHeadless VBoxExtPackHelperApp VBoxBalloonCtrl vboxwebsrv webtest; do
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsync mv $i $RPM_BUILD_ROOT/usr/lib/virtualbox; done
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncfor i in VBoxSDL VirtualBox VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl; do
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsync chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/$i; done
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncmv VBoxTunctl $RPM_BUILD_ROOT/usr/bin
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsyncfor d in /lib/modules/*; do
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync if [ -L $d/build ]; then
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync rm -f /tmp/vboxdrv-Module.symvers
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync ./src/vboxhost/vboxdrv/build_in_tmp \
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync --save-module-symvers /tmp/vboxdrv-Module.symvers \
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync %INSTMOD%
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync ./src/vboxhost/vboxnetflt/build_in_tmp \
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync --use-module-symvers /tmp/vboxdrv-Module.symvers \
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync %INSTMOD%
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync ./src/vboxhost/vboxnetadp/build_in_tmp \
c285785ffc9f35513e0c6e7e2a05df3090dc919cvboxsync --use-module-symvers /tmp/vboxdrv-Module.symvers \
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
73e8df2e481cb3697372a3cf4acffd068a7f1296vboxsync %INSTMOD%
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync ./src/vboxhost/vboxpci/build_in_tmp \
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync --use-module-symvers /tmp/vboxdrv-Module.symvers \
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsync %INSTMOD%
8d974ced0dc3540dd1b3ec85f8663388e246461avboxsync fi
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncdone
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncmv kchmviewer $RPM_BUILD_ROOT/usr/lib/virtualbox
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncfor i in rdesktop-vrdp.tar.gz rdesktop-vrdp-keymaps additions/VBoxGuestAdditions.iso; do
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync mv $i $RPM_BUILD_ROOT/usr/share/virtualbox; done
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsyncif [ -d accessible ]; then
037f4c44a9ef4e458f46b264aebd12df049b0f0cvboxsync 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