VirtualBox.tmpl.spec revision 88350256a6c78b8631aba5aa5ce249d90a8514a2
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Spec file for creating VirtualBox rpm packages
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Copyright (C) 2006-2010 Oracle Corporation
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# available from http://www.virtualbox.org. This file is free software;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# you can redistribute it and/or modify it under the terms of the GNU
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# General Public License as published by the Free Software Foundation,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# distribution. VirtualBox OSE is distributed in the hope that it will
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# be useful, but WITHOUT ANY WARRANTY of any kind.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%define %SPEC% 1
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncSummary: Oracle VM VirtualBox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncName: %NAME%
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncVersion: %BUILDVER%_%BUILDREL%
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncRelease: 1
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncURL: http://www.virtualbox.org/
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncSource: VirtualBox.tar.bz2
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncLicense: GPLv2
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncGroup: Applications/System
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncVendor: Oracle Corporation
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncBuildRoot: %BUILDROOT%
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncRequires: %LIBASOUND%
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%if %{?rpm_suse:1}%{!?rpm_suse:0}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%debug_package
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%endif
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%MACROSPYTHON%
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%description
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncVirtualBox is a powerful PC virtualization solution allowing
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncyou to run a wide range of PC operating systems on your Linux
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncsystem. This includes Windows, Linux, FreeBSD, DOS, OpenBSD
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncand others. VirtualBox comes with a broad feature set and
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncexcellent performance, making it the premier virtualization
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncsoftware solution on the market.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%prep
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%setup -q
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncDESTDIR=""
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncunset DESTDIR
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%build
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%install
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Mandriva: prevent replacing 'echo' by 'gprintf'
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncexport DONT_GPRINTIFY=1
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncrm -rf $RPM_BUILD_ROOT
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/sbin
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT%{_initrddir}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/lib/modules
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/etc/vbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/bin
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/src
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/applications
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/pixmaps
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/icons/hicolor
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT%{_defaultdocdir}/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/lib/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/lib/virtualbox/ExtensionPacks
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/mime/packages
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv VBoxEFI32.fd $RPM_BUILD_ROOT/usr/lib/virtualbox || true
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv VBoxEFI64.fd $RPM_BUILD_ROOT/usr/lib/virtualbox || true
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv *.gc $RPM_BUILD_ROOT/usr/lib/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv *.r0 $RPM_BUILD_ROOT/usr/lib/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv *.rel $RPM_BUILD_ROOT/usr/lib/virtualbox || true
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv VBoxNetDHCP $RPM_BUILD_ROOT/usr/lib/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv VBoxNetAdpCtl $RPM_BUILD_ROOT/usr/lib/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv VBoxXPCOMIPCD $RPM_BUILD_ROOT/usr/lib/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv components $RPM_BUILD_ROOT/usr/lib/virtualbox/components
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv *.so $RPM_BUILD_ROOT/usr/lib/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv *.so.4 $RPM_BUILD_ROOT/usr/lib/virtualbox || true
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv VBoxTestOGL $RPM_BUILD_ROOT/usr/lib/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv vboxshell.py $RPM_BUILD_ROOT/usr/lib/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync(export VBOX_INSTALL_PATH=/usr/lib/virtualbox && \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync cd ./sdk/installer && \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync %{__python} ./vboxapisetup.py install --prefix %{_prefix} --root $RPM_BUILD_ROOT)
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncrm -rf sdk/installer
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv sdk $RPM_BUILD_ROOT/usr/lib/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv nls $RPM_BUILD_ROOT/usr/share/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynccp -a src $RPM_BUILD_ROOT/usr/share/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv VBox.sh $RPM_BUILD_ROOT/usr/bin/VBox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv VBoxSysInfo.sh $RPM_BUILD_ROOT/usr/share/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv VBoxCreateUSBNode.sh $RPM_BUILD_ROOT/usr/share/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynccd icons
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync for i in *; do
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync install -d $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/mimetypes
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync mv $i/* $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/mimetypes
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync rmdir $i
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync done
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynccd -
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncrmdir icons
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv virtualbox.xml $RPM_BUILD_ROOT/usr/share/mime/packages
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncfor i in VBoxManage VBoxSVC VBoxSDL VirtualBox VBoxHeadless VBoxExtPackHelperApp vboxwebsrv webtest; do
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync mv $i $RPM_BUILD_ROOT/usr/lib/virtualbox; done
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncfor i in VBoxSDL VirtualBox VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl VBoxExtPackHelperApp; do
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/$i; done
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv VBoxTunctl $RPM_BUILD_ROOT/usr/bin
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncfor d in /lib/modules/*; do
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -L $d/build ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync rm -f /tmp/vboxdrv-Module.symvers
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync ./src/vboxhost/vboxdrv/build_in_tmp \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --save-module-symvers /tmp/vboxdrv-Module.symvers \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync %INSTMOD%
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync ./src/vboxhost/vboxnetflt/build_in_tmp \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --use-module-symvers /tmp/vboxdrv-Module.symvers \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync %INSTMOD%
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync ./src/vboxhost/vboxnetadp/build_in_tmp \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --use-module-symvers /tmp/vboxdrv-Module.symvers \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync %INSTMOD%
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdone
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv kchmviewer $RPM_BUILD_ROOT/usr/lib/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncfor i in rdesktop-vrdp.tar.gz rdesktop-vrdp-keymaps additions/VBoxGuestAdditions.iso; do
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync mv $i $RPM_BUILD_ROOT/usr/share/virtualbox; done
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncif [ -d accessible ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync mv accessible $RPM_BUILD_ROOT/usr/lib/virtualbox
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncfi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncmv rdesktop-vrdp $RPM_BUILD_ROOT/usr/bin
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -D -m 755 vboxdrv.init $RPM_BUILD_ROOT%{_initrddir}/vboxdrv
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%if %{?rpm_suse:1}%{!?rpm_suse:0}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncln -sf ../etc/init.d/vboxdrv $RPM_BUILD_ROOT/sbin/rcvboxdrv
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync%endif
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncinstall -D -m 755 vboxweb-service.init $RPM_BUILD_ROOT%{_initrddir}/vboxweb-service
%if %{?rpm_suse:1}%{!?rpm_suse:0}
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/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/vboxweb-service ]; then
# try graceful termination; terminate the webservice first
/etc/init.d/vboxweb-service stop 2>/dev/null || true
# ask the daemon to terminate immediately
kill -USR1 $VBOXSVC_PID
fi
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
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/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 vboxweb-service
%endif
%if %{?rpm_suse:1}%{!?rpm_suse:0}
%{fillup_and_insserv -f -y -Y vboxdrv vboxweb-service}
%endif
%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
/sbin/ldconfig
%_post_service vboxdrv
%_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
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/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 vboxweb-service
%endif
%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
%_preun_service vboxweb-service
%endif
%if %{?rpm_redhat:1}%{!?rpm_redhat:0}
if [ "$1" = 0 ]; then
/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 vboxweb-service restart > /dev/null 2>&1
fi
%endif
%if %{?rpm_suse:1}%{!?rpm_suse:0}
%restart_on_update vboxdrv 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 %LICENSE%
%doc UserManual*.pdf
%doc VirtualBox*.chm
%{_initrddir}/vboxdrv
%{_initrddir}/vboxweb-service
%{?rpm_suse: %{py_sitedir}/*}
%{!?rpm_suse: %{python_sitelib}/*}
%{?rpm_suse: /sbin/rcvboxdrv}
%{?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