VirtualBox.tmpl.spec revision 257927abbaa6d9774427049fcbea552cda362281
af062818b47340eef15700d2f0211576ba3506eevboxsync#
af062818b47340eef15700d2f0211576ba3506eevboxsync# Spec file for creating VirtualBox rpm packages
af062818b47340eef15700d2f0211576ba3506eevboxsync#
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#
af062818b47340eef15700d2f0211576ba3506eevboxsync# Copyright (C) 2006-2011 Oracle Corporation
af062818b47340eef15700d2f0211576ba3506eevboxsync#
af062818b47340eef15700d2f0211576ba3506eevboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
af062818b47340eef15700d2f0211576ba3506eevboxsync# available from http://www.virtualbox.org. This file is free software;
af062818b47340eef15700d2f0211576ba3506eevboxsync# you can redistribute it and/or modify it under the terms of the GNU
af062818b47340eef15700d2f0211576ba3506eevboxsync# General Public License as published by the Free Software Foundation,
af062818b47340eef15700d2f0211576ba3506eevboxsync# in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
af062818b47340eef15700d2f0211576ba3506eevboxsync# distribution. VirtualBox OSE is distributed in the hope that it will
af062818b47340eef15700d2f0211576ba3506eevboxsync# be useful, but WITHOUT ANY WARRANTY of any kind.
af062818b47340eef15700d2f0211576ba3506eevboxsync#
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync%define %SPEC% 1
af062818b47340eef15700d2f0211576ba3506eevboxsync%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncSummary: Oracle VM VirtualBox
af062818b47340eef15700d2f0211576ba3506eevboxsyncName: %NAME%
af062818b47340eef15700d2f0211576ba3506eevboxsyncVersion: %BUILDVER%_%BUILDREL%
af062818b47340eef15700d2f0211576ba3506eevboxsyncRelease: 1
af062818b47340eef15700d2f0211576ba3506eevboxsyncURL: http://www.virtualbox.org/
af062818b47340eef15700d2f0211576ba3506eevboxsyncSource: VirtualBox.tar.bz2
af062818b47340eef15700d2f0211576ba3506eevboxsyncLicense: GPLv2
af062818b47340eef15700d2f0211576ba3506eevboxsyncGroup: Applications/System
af062818b47340eef15700d2f0211576ba3506eevboxsyncVendor: Oracle Corporation
af062818b47340eef15700d2f0211576ba3506eevboxsyncBuildRoot: %BUILDROOT%
af062818b47340eef15700d2f0211576ba3506eevboxsyncRequires: %LIBASOUND%
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync%if %{?rpm_suse:1}%{!?rpm_suse:0}
af062818b47340eef15700d2f0211576ba3506eevboxsync%debug_package
af062818b47340eef15700d2f0211576ba3506eevboxsync%endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync%MACROSPYTHON%
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync%description
af062818b47340eef15700d2f0211576ba3506eevboxsyncVirtualBox is a powerful PC virtualization solution allowing
af062818b47340eef15700d2f0211576ba3506eevboxsyncyou to run a wide range of PC operating systems on your Linux
af062818b47340eef15700d2f0211576ba3506eevboxsyncsystem. This includes Windows, Linux, FreeBSD, DOS, OpenBSD
af062818b47340eef15700d2f0211576ba3506eevboxsyncand others. VirtualBox comes with a broad feature set and
af062818b47340eef15700d2f0211576ba3506eevboxsyncexcellent performance, making it the premier virtualization
af062818b47340eef15700d2f0211576ba3506eevboxsyncsoftware solution on the market.
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync%prep
af062818b47340eef15700d2f0211576ba3506eevboxsync%setup -q
af062818b47340eef15700d2f0211576ba3506eevboxsyncDESTDIR=""
af062818b47340eef15700d2f0211576ba3506eevboxsyncunset DESTDIR
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync%build
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync%install
af062818b47340eef15700d2f0211576ba3506eevboxsync# Mandriva: prevent replacing 'echo' by 'gprintf'
af062818b47340eef15700d2f0211576ba3506eevboxsyncexport DONT_GPRINTIFY=1
af062818b47340eef15700d2f0211576ba3506eevboxsyncrm -rf $RPM_BUILD_ROOT
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/sbin
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT%{_initrddir}
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/lib/modules
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/etc/vbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/bin
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/src
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/applications
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/pixmaps
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/icons/hicolor
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT%{_defaultdocdir}/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/lib/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/lib/virtualbox/ExtensionPacks
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -m 755 -d $RPM_BUILD_ROOT/usr/share/mime/packages
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv VBoxEFI32.fd $RPM_BUILD_ROOT/usr/lib/virtualbox || true
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv VBoxEFI64.fd $RPM_BUILD_ROOT/usr/lib/virtualbox || true
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv *.gc $RPM_BUILD_ROOT/usr/lib/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv *.r0 $RPM_BUILD_ROOT/usr/lib/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv *.rel $RPM_BUILD_ROOT/usr/lib/virtualbox || true
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv VBoxNetDHCP $RPM_BUILD_ROOT/usr/lib/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv VBoxNetAdpCtl $RPM_BUILD_ROOT/usr/lib/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv VBoxXPCOMIPCD $RPM_BUILD_ROOT/usr/lib/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv components $RPM_BUILD_ROOT/usr/lib/virtualbox/components
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv *.so $RPM_BUILD_ROOT/usr/lib/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv *.so.4 $RPM_BUILD_ROOT/usr/lib/virtualbox || true
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv VBoxTestOGL $RPM_BUILD_ROOT/usr/lib/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv vboxshell.py $RPM_BUILD_ROOT/usr/lib/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsync(export VBOX_INSTALL_PATH=/usr/lib/virtualbox && \
af062818b47340eef15700d2f0211576ba3506eevboxsync cd ./sdk/installer && \
af062818b47340eef15700d2f0211576ba3506eevboxsync %{__python} ./vboxapisetup.py install --prefix %{_prefix} --root $RPM_BUILD_ROOT)
af062818b47340eef15700d2f0211576ba3506eevboxsyncrm -rf sdk/installer
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv sdk $RPM_BUILD_ROOT/usr/lib/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv nls $RPM_BUILD_ROOT/usr/share/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsynccp -a src $RPM_BUILD_ROOT/usr/share/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv VBox.sh $RPM_BUILD_ROOT/usr/bin/VBox
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv VBoxSysInfo.sh $RPM_BUILD_ROOT/usr/share/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv VBoxCreateUSBNode.sh $RPM_BUILD_ROOT/usr/share/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsynccd icons
af062818b47340eef15700d2f0211576ba3506eevboxsync for i in *; do
af062818b47340eef15700d2f0211576ba3506eevboxsync if [ -f $i/virtualbox.png ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync install -d $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/apps
af062818b47340eef15700d2f0211576ba3506eevboxsync mv $i/virtualbox.png $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/apps
af062818b47340eef15700d2f0211576ba3506eevboxsync fi
af062818b47340eef15700d2f0211576ba3506eevboxsync install -d $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/mimetypes
af062818b47340eef15700d2f0211576ba3506eevboxsync mv $i/* $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/mimetypes || true
af062818b47340eef15700d2f0211576ba3506eevboxsync rmdir $i
af062818b47340eef15700d2f0211576ba3506eevboxsync done
af062818b47340eef15700d2f0211576ba3506eevboxsynccd -
af062818b47340eef15700d2f0211576ba3506eevboxsyncrmdir icons
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv virtualbox.xml $RPM_BUILD_ROOT/usr/share/mime/packages
af062818b47340eef15700d2f0211576ba3506eevboxsyncfor i in VBoxManage VBoxSVC VBoxSDL VirtualBox VBoxHeadless VBoxExtPackHelperApp VBoxBalloonCtrl vboxwebsrv webtest; do
af062818b47340eef15700d2f0211576ba3506eevboxsync mv $i $RPM_BUILD_ROOT/usr/lib/virtualbox; done
af062818b47340eef15700d2f0211576ba3506eevboxsyncfor i in VBoxSDL VirtualBox VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl; do
af062818b47340eef15700d2f0211576ba3506eevboxsync chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/$i; done
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv VBoxTunctl $RPM_BUILD_ROOT/usr/bin
af062818b47340eef15700d2f0211576ba3506eevboxsyncfor d in /lib/modules/*; do
af062818b47340eef15700d2f0211576ba3506eevboxsync if [ -L $d/build ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync rm -f /tmp/vboxdrv-Module.symvers
af062818b47340eef15700d2f0211576ba3506eevboxsync ./src/vboxhost/vboxdrv/build_in_tmp \
af062818b47340eef15700d2f0211576ba3506eevboxsync --save-module-symvers /tmp/vboxdrv-Module.symvers \
af062818b47340eef15700d2f0211576ba3506eevboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
af062818b47340eef15700d2f0211576ba3506eevboxsync %INSTMOD%
af062818b47340eef15700d2f0211576ba3506eevboxsync ./src/vboxhost/vboxnetflt/build_in_tmp \
af062818b47340eef15700d2f0211576ba3506eevboxsync --use-module-symvers /tmp/vboxdrv-Module.symvers \
af062818b47340eef15700d2f0211576ba3506eevboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
af062818b47340eef15700d2f0211576ba3506eevboxsync %INSTMOD%
af062818b47340eef15700d2f0211576ba3506eevboxsync ./src/vboxhost/vboxnetadp/build_in_tmp \
af062818b47340eef15700d2f0211576ba3506eevboxsync --use-module-symvers /tmp/vboxdrv-Module.symvers \
af062818b47340eef15700d2f0211576ba3506eevboxsync KBUILD_VERBOSE= KERN_DIR=$d/build MODULE_DIR=$RPM_BUILD_ROOT/$d/misc -j4 \
af062818b47340eef15700d2f0211576ba3506eevboxsync %INSTMOD%
af062818b47340eef15700d2f0211576ba3506eevboxsync fi
af062818b47340eef15700d2f0211576ba3506eevboxsyncdone
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv kchmviewer $RPM_BUILD_ROOT/usr/lib/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncfor i in rdesktop-vrdp.tar.gz rdesktop-vrdp-keymaps additions/VBoxGuestAdditions.iso; do
af062818b47340eef15700d2f0211576ba3506eevboxsync mv $i $RPM_BUILD_ROOT/usr/share/virtualbox; done
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ -d accessible ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync mv accessible $RPM_BUILD_ROOT/usr/lib/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncfi
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv rdesktop-vrdp $RPM_BUILD_ROOT/usr/bin
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -D -m 755 vboxdrv.init $RPM_BUILD_ROOT%{_initrddir}/vboxdrv
af062818b47340eef15700d2f0211576ba3506eevboxsync%if %{?rpm_suse:1}%{!?rpm_suse:0}
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -sf ../etc/init.d/vboxdrv $RPM_BUILD_ROOT/sbin/rcvboxdrv
af062818b47340eef15700d2f0211576ba3506eevboxsync%endif
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -D -m 755 vboxballoonctrl-service.init $RPM_BUILD_ROOT%{_initrddir}/vboxballoonctrl-service
af062818b47340eef15700d2f0211576ba3506eevboxsyncinstall -D -m 755 vboxweb-service.init $RPM_BUILD_ROOT%{_initrddir}/vboxweb-service
af062818b47340eef15700d2f0211576ba3506eevboxsync%if %{?rpm_suse:1}%{!?rpm_suse:0}
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -sf ../etc/init.d/vboxballoonctrl-service $RPM_BUILD_ROOT/sbin/rcvboxballoonctrl-service
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -sf ../etc/init.d/vboxweb-service $RPM_BUILD_ROOT/sbin/rcvboxweb-service
af062818b47340eef15700d2f0211576ba3506eevboxsync%endif
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s VBox $RPM_BUILD_ROOT/usr/bin/VirtualBox
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s VBox $RPM_BUILD_ROOT/usr/bin/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxManage
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxmanage
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxSDL
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxsdl
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxVRDP
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxHeadless
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxheadless
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxBalloonCtrl
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxballoonctrl
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxwebsrv
af062818b47340eef15700d2f0211576ba3506eevboxsyncln -s /usr/share/virtualbox/src/vboxhost $RPM_BUILD_ROOT/usr/src/vboxhost-%VER%
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv virtualbox.desktop $RPM_BUILD_ROOT/usr/share/applications/virtualbox.desktop
af062818b47340eef15700d2f0211576ba3506eevboxsyncmv VBox.png $RPM_BUILD_ROOT/usr/share/pixmaps/VBox.png
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync%pre
af062818b47340eef15700d2f0211576ba3506eevboxsync# defaults
af062818b47340eef15700d2f0211576ba3506eevboxsync[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync# check for active VMs of the installed (old) package
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOXSVC_PID=`pidof VBoxSVC 2>/dev/null || true`
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ -n "$VBOXSVC_PID" ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync # executed before the new package is installed!
af062818b47340eef15700d2f0211576ba3506eevboxsync if [ -f /etc/init.d/vboxballoonctrl-service ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync # try graceful termination; terminate the balloon control service first
af062818b47340eef15700d2f0211576ba3506eevboxsync /etc/init.d/vboxballoonctrl-service stop 2>/dev/null || true
af062818b47340eef15700d2f0211576ba3506eevboxsync fi
af062818b47340eef15700d2f0211576ba3506eevboxsync if [ -f /etc/init.d/vboxweb-service ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync # try graceful termination; terminate the webservice first
af062818b47340eef15700d2f0211576ba3506eevboxsync /etc/init.d/vboxweb-service stop 2>/dev/null || true
af062818b47340eef15700d2f0211576ba3506eevboxsync fi
af062818b47340eef15700d2f0211576ba3506eevboxsync # ask the daemon to terminate immediately
af062818b47340eef15700d2f0211576ba3506eevboxsync kill -USR1 $VBOXSVC_PID
af062818b47340eef15700d2f0211576ba3506eevboxsync sleep 1
af062818b47340eef15700d2f0211576ba3506eevboxsync if pidof VBoxSVC > /dev/null 2>&1; then
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "A copy of VirtualBox is currently running. Please close it and try again."
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "Please note that it can take up to ten seconds for VirtualBox (in particular"
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "the VBoxSVC daemon) to finish running."
af062818b47340eef15700d2f0211576ba3506eevboxsync exit 1
af062818b47340eef15700d2f0211576ba3506eevboxsync fi
af062818b47340eef15700d2f0211576ba3506eevboxsyncfi
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync# check for old installation
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ -r /etc/vbox/vbox.cfg ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync . /etc/vbox/vbox.cfg
af062818b47340eef15700d2f0211576ba3506eevboxsync if [ "x$INSTALL_DIR" != "x" -a -d "$INSTALL_DIR" ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "An old installation of VirtualBox was found. To install this package the"
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "old package has to be removed first. Have a look at /etc/vbox/vbox.cfg to"
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "determine the installation directory of the previous installation. After"
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "uninstalling the old package remove the file /etc/vbox/vbox.cfg."
af062818b47340eef15700d2f0211576ba3506eevboxsync exit 1
af062818b47340eef15700d2f0211576ba3506eevboxsync fi
af062818b47340eef15700d2f0211576ba3506eevboxsyncfi
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync# XXX remove old modules from previous versions (disable with INSTALL_NO_VBOXDRV=1 in /etc/default/virtualbox)
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ "$INSTALL_NO_VBOXDRV" != "1" ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync find /lib/modules -name "vboxdrv\.*" 2>/dev/null|xargs rm -f 2> /dev/null || true
af062818b47340eef15700d2f0211576ba3506eevboxsync find /lib/modules -name "vboxnetflt\.*" 2>/dev/null|xargs rm -f 2> /dev/null || true
af062818b47340eef15700d2f0211576ba3506eevboxsync find /lib/modules -name "vboxnetadp\.*" 2>/dev/null|xargs rm -f 2> /dev/null || true
af062818b47340eef15700d2f0211576ba3506eevboxsyncfi
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync%post
af062818b47340eef15700d2f0211576ba3506eevboxsyncLOG="/var/log/vbox-install.log"
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync# defaults
af062818b47340eef15700d2f0211576ba3506eevboxsync[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync# remove old cruft
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ -f /etc/init.d/vboxdrv.sh ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "Found old version of /etc/init.d/vboxdrv.sh, removing."
af062818b47340eef15700d2f0211576ba3506eevboxsync rm /etc/init.d/vboxdrv.sh
af062818b47340eef15700d2f0211576ba3506eevboxsyncfi
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ -f /etc/vbox/vbox.cfg ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "Found old version of /etc/vbox/vbox.cfg, removing."
af062818b47340eef15700d2f0211576ba3506eevboxsync rm /etc/vbox/vbox.cfg
af062818b47340eef15700d2f0211576ba3506eevboxsyncfi
af062818b47340eef15700d2f0211576ba3506eevboxsyncrm -f /etc/vbox/module_not_compiled
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync# install udev rule (disable with INSTALL_NO_UDEV=1 in /etc/default/virtualbox)
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ -d /etc/udev/rules.d -a "$INSTALL_NO_UDEV" != "1" ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync udev_call=""
af062818b47340eef15700d2f0211576ba3506eevboxsync udev_app=`which udevadm 2> /dev/null`
af062818b47340eef15700d2f0211576ba3506eevboxsync if [ $? -eq 0 ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync udev_call="${udev_app} version 2> /dev/null"
af062818b47340eef15700d2f0211576ba3506eevboxsync else
af062818b47340eef15700d2f0211576ba3506eevboxsync udev_app=`which udevinfo 2> /dev/null`
af062818b47340eef15700d2f0211576ba3506eevboxsync if [ $? -eq 0 ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync udev_call="${udev_app} -V 2> /dev/null"
af062818b47340eef15700d2f0211576ba3506eevboxsync fi
af062818b47340eef15700d2f0211576ba3506eevboxsync fi
af062818b47340eef15700d2f0211576ba3506eevboxsync udev_fix="="
af062818b47340eef15700d2f0211576ba3506eevboxsync if [ "${udev_call}" != "" ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync udev_out=`${udev_call}`
af062818b47340eef15700d2f0211576ba3506eevboxsync udev_ver=`expr "$udev_out" : '[^0-9]*\([0-9]*\)'`
af062818b47340eef15700d2f0211576ba3506eevboxsync if [ "$udev_ver" = "" -o "$udev_ver" -lt 55 ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync udev_fix=""
af062818b47340eef15700d2f0211576ba3506eevboxsync fi
af062818b47340eef15700d2f0211576ba3506eevboxsync fi
af062818b47340eef15700d2f0211576ba3506eevboxsync usb_createnode="/usr/share/virtualbox/VBoxCreateUSBNode.sh"
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "KERNEL=${udev_fix}\"vboxdrv\", NAME=\"vboxdrv\", OWNER=\"root\", GROUP=\"root\", MODE=\"0600\"" \
af062818b47340eef15700d2f0211576ba3506eevboxsync > /etc/udev/rules.d/10-vboxdrv.rules
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "SUBSYSTEM=${udev_fix}\"usb_device\", ACTION=${udev_fix}\"add\", RUN=\"${usb_createnode} \$major \$minor \$attr{bDeviceClass}\"" \
af062818b47340eef15700d2f0211576ba3506eevboxsync >> /etc/udev/rules.d/10-vboxdrv.rules
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "SUBSYSTEM=${udev_fix}\"usb\", ACTION=${udev_fix}\"add\", ENV{DEVTYPE}==\"usb_device\", RUN=\"${usb_createnode} \$major \$minor \$attr{bDeviceClass}\"" \
af062818b47340eef15700d2f0211576ba3506eevboxsync >> /etc/udev/rules.d/10-vboxdrv.rules
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "SUBSYSTEM=${udev_fix}\"usb_device\", ACTION=${udev_fix}\"remove\", RUN=\"${usb_createnode} --remove \$major \$minor\"" \
af062818b47340eef15700d2f0211576ba3506eevboxsync >> /etc/udev/rules.d/10-vboxdrv.rules
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "SUBSYSTEM=${udev_fix}\"usb\", ACTION=${udev_fix}\"remove\", ENV{DEVTYPE}==\"usb_device\", RUN=\"${usb_createnode} --remove \$major \$minor\"" \
af062818b47340eef15700d2f0211576ba3506eevboxsync >> /etc/udev/rules.d/10-vboxdrv.rules
af062818b47340eef15700d2f0211576ba3506eevboxsyncfi
af062818b47340eef15700d2f0211576ba3506eevboxsync# Remove old udev description file
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ -f /etc/udev/rules.d/60-vboxdrv.rules ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync rm -f /etc/udev/rules.d/60-vboxdrv.rules 2> /dev/null
af062818b47340eef15700d2f0211576ba3506eevboxsyncfi
af062818b47340eef15700d2f0211576ba3506eevboxsync# Build our device tree
af062818b47340eef15700d2f0211576ba3506eevboxsyncfor i in /sys/bus/usb/devices/*; do
af062818b47340eef15700d2f0211576ba3506eevboxsync if test -r "$i/dev"; then
af062818b47340eef15700d2f0211576ba3506eevboxsync dev="`cat "$i/dev" 2> /dev/null`"
af062818b47340eef15700d2f0211576ba3506eevboxsync major="`expr "$dev" : '\(.*\):' 2> /dev/null`"
af062818b47340eef15700d2f0211576ba3506eevboxsync minor="`expr "$dev" : '.*:\(.*\)' 2> /dev/null`"
af062818b47340eef15700d2f0211576ba3506eevboxsync class="`cat $i/bDeviceClass 2> /dev/null`"
af062818b47340eef15700d2f0211576ba3506eevboxsync sh ${usb_createnode} "$major" "$minor" "$class" ${usb_group} 2>/dev/null
af062818b47340eef15700d2f0211576ba3506eevboxsync fi
af062818b47340eef15700d2f0211576ba3506eevboxsyncdone
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync# XXX SELinux: allow text relocation entries
af062818b47340eef15700d2f0211576ba3506eevboxsync%if %{?rpm_redhat:1}%{!?rpm_redhat:0}
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ -x /usr/bin/chcon ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync chcon -t texrel_shlib_t /usr/lib/virtualbox/*VBox* > /dev/null 2>&1
af062818b47340eef15700d2f0211576ba3506eevboxsync chcon -t texrel_shlib_t /usr/lib/virtualbox/VirtualBox.so > /dev/null 2>&1
af062818b47340eef15700d2f0211576ba3506eevboxsync chcon -t texrel_shlib_t /usr/lib/virtualbox/VBoxAuth.so > /dev/null 2>&1
af062818b47340eef15700d2f0211576ba3506eevboxsync chcon -t texrel_shlib_t /usr/lib/virtualbox/components/VBox*.so > /dev/null 2>&1
af062818b47340eef15700d2f0211576ba3506eevboxsync chcon -t java_exec_t /usr/lib/virtualbox/VirtualBox > /dev/null 2>&1
af062818b47340eef15700d2f0211576ba3506eevboxsync chcon -t java_exec_t /usr/lib/virtualbox/VBoxSDL > /dev/null 2>&1
af062818b47340eef15700d2f0211576ba3506eevboxsync chcon -t java_exec_t /usr/lib/virtualbox/VBoxHeadless > /dev/null 2>&1
af062818b47340eef15700d2f0211576ba3506eevboxsync chcon -t java_exec_t /usr/lib/virtualbox/VBoxExtPackHelperApp > /dev/null 2>&1
af062818b47340eef15700d2f0211576ba3506eevboxsync chcon -t java_exec_t /usr/lib/virtualbox/VBoxBalloonCtrl > /dev/null 2>&1
af062818b47340eef15700d2f0211576ba3506eevboxsync chcon -t java_exec_t /usr/lib/virtualbox/vboxwebsrv > /dev/null 2>&1
af062818b47340eef15700d2f0211576ba3506eevboxsyncfi
af062818b47340eef15700d2f0211576ba3506eevboxsync%endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync# create users groups (disable with INSTALL_NO_GROUP=1 in /etc/default/virtualbox)
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ "$INSTALL_NO_GROUP" != "1" ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync echo
af062818b47340eef15700d2f0211576ba3506eevboxsync echo "Creating group 'vboxusers'. VM users must be member of that group!"
af062818b47340eef15700d2f0211576ba3506eevboxsync echo
af062818b47340eef15700d2f0211576ba3506eevboxsync groupadd -f vboxusers 2> /dev/null
af062818b47340eef15700d2f0211576ba3506eevboxsyncfi
af062818b47340eef15700d2f0211576ba3506eevboxsync%if %{?rpm_redhat:1}%{!?rpm_redhat:0}
af062818b47340eef15700d2f0211576ba3506eevboxsync/sbin/chkconfig --add vboxdrv
af062818b47340eef15700d2f0211576ba3506eevboxsync/sbin/chkconfig --add vboxballoonctrl-service
af062818b47340eef15700d2f0211576ba3506eevboxsync/sbin/chkconfig --add vboxweb-service
af062818b47340eef15700d2f0211576ba3506eevboxsync%endif
af062818b47340eef15700d2f0211576ba3506eevboxsync%if %{?rpm_suse:1}%{!?rpm_suse:0}
af062818b47340eef15700d2f0211576ba3506eevboxsync%{fillup_and_insserv -f -y -Y vboxdrv vboxballoonctrl-service vboxweb-service}
af062818b47340eef15700d2f0211576ba3506eevboxsync%endif
af062818b47340eef15700d2f0211576ba3506eevboxsync%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
af062818b47340eef15700d2f0211576ba3506eevboxsync/sbin/ldconfig
af062818b47340eef15700d2f0211576ba3506eevboxsync%_post_service vboxdrv
af062818b47340eef15700d2f0211576ba3506eevboxsync%_post_service vboxballoonctrl-service
af062818b47340eef15700d2f0211576ba3506eevboxsync%_post_service vboxweb-service
af062818b47340eef15700d2f0211576ba3506eevboxsync%update_menus
af062818b47340eef15700d2f0211576ba3506eevboxsync%endif
af062818b47340eef15700d2f0211576ba3506eevboxsyncupdate-mime-database /usr/share/mime &> /dev/null || :
af062818b47340eef15700d2f0211576ba3506eevboxsyncupdate-desktop-database -q > /dev/null 2>&1 || :
af062818b47340eef15700d2f0211576ba3506eevboxsynctouch --no-create /usr/share/icons/hicolor
af062818b47340eef15700d2f0211576ba3506eevboxsyncgtk-update-icon-cache -q /usr/share/icons/hicolor 2> /dev/null || :
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync# Disable module compilation with INSTALL_NO_VBOXDRV=1 in /etc/default/virtualbox
af062818b47340eef15700d2f0211576ba3506eevboxsyncBUILD_MODULES=0
af062818b47340eef15700d2f0211576ba3506eevboxsyncREGISTER_MODULES=1
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ ! -f /lib/modules/`uname -r`/misc/vboxdrv.ko ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync REGISTER_MODULES=0
af062818b47340eef15700d2f0211576ba3506eevboxsync if [ "$INSTALL_NO_VBOXDRV" != "1" ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync # compile problem
af062818b47340eef15700d2f0211576ba3506eevboxsync cat << EOF
af062818b47340eef15700d2f0211576ba3506eevboxsyncNo precompiled module for this kernel found -- trying to build one. Messages
af062818b47340eef15700d2f0211576ba3506eevboxsyncemitted during module compilation will be logged to $LOG.
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncEOF
af062818b47340eef15700d2f0211576ba3506eevboxsync BUILD_MODULES=1
af062818b47340eef15700d2f0211576ba3506eevboxsync fi
af062818b47340eef15700d2f0211576ba3506eevboxsyncfi
af062818b47340eef15700d2f0211576ba3506eevboxsync# if INSTALL_NO_VBOXDRV is set to 1, remove all shipped modules
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ "$INSTALL_NO_VBOXDRV" = "1" ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync rm -f /lib/modules/*/misc/vboxdrv.ko
af062818b47340eef15700d2f0211576ba3506eevboxsync rm -f /lib/modules/*/misc/vboxnetflt.ko
af062818b47340eef15700d2f0211576ba3506eevboxsync rm -f /lib/modules/*/misc/vboxnetadp.ko
af062818b47340eef15700d2f0211576ba3506eevboxsyncfi
af062818b47340eef15700d2f0211576ba3506eevboxsyncif [ $BUILD_MODULES -eq 1 ]; then
af062818b47340eef15700d2f0211576ba3506eevboxsync /etc/init.d/vboxdrv setup || true
af062818b47340eef15700d2f0211576ba3506eevboxsyncelse
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