diff options
Diffstat (limited to 'debian/preinst.in')
-rwxr-xr-x | debian/preinst.in | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/debian/preinst.in b/debian/preinst.in new file mode 100755 index 00000000..10861b48 --- /dev/null +++ b/debian/preinst.in @@ -0,0 +1,98 @@ +#!/bin/bash +# +# Copyright (C) 2006-2011 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# we can be called with the following arguments (6.5 of Debian policy): +# install: (our version): install our version +# upgrade: (our version): upgrade to our version +# abort-upgrade: (old version): upgrade to a new version failed + +# defaults +[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox + +if [ "$1" = "install" -o "$1" = "upgrade" ]; then + + . /usr/share/debconf/confmodule + db_version 2.0 + db_capb backup + + # check for active VMs + VBOXSVC_PID=`pidof VBoxSVC 2> /dev/null || true` + if [ -n "$VBOXSVC_PID" ]; then + if [ -f /etc/init.d/vboxballoonctrl-service ]; then + # try graceful termination; terminate the ballon control service first + if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then + invoke-rc.d vboxballoonctrl-service stop || true + else + /etc/init.d/vboxballoonctrl-service stop || true + fi + fi + if [ -f /etc/init.d/vboxweb-service ]; then + # try graceful termination; terminate the webservice first + if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then + invoke-rc.d vboxweb-service stop || true + else + /etc/init.d/vboxweb-service stop || true + fi + fi + kill -USR1 $VBOXSVC_PID + sleep 1 + if pidof VBoxSVC > /dev/null 2>&1; then + db_fset virtualbox/old-running seen false || true + db_input critical virtualbox/old-running || true + db_go || true + 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 + db_fset virtualbox/old-installation-found seen false || true + db_input critical virtualbox/old-installation-found || true + db_go || true + exit 1 + fi + # we will remove that file in postinst + fi + + # check for old vboxdrv modules + if [ "$INSTALL_NO_VBOXDRV" != "1" ]; then + if find /lib/modules -name "vboxdrv\.*" 2>/dev/null|grep -q vboxdrv; then + # old modules found + db_get virtualbox/delete-old-modules || true + if [ "$RET" = "false" ]; then + cat << EOF +Old vboxdrv kernel modules found in +EOF + find /lib/modules -name "vboxdrv\.*" 2>/dev/null|sed "s+\(.*\)+ \1+g" + cat << EOF +Removing of these modules denied by debconf setting +EOF + else + db_input low virtualbox/delete-old-modules || true + db_go || true + db_get virtualbox/delete-old-modules || true + if [ "$RET" = "true" ]; then + find /lib/modules -name "vboxdrv\.*" 2>/dev/null|xargs rm -f 2>/dev/null + find /lib/modules -name "vboxnetflt\.*" 2>/dev/null|xargs rm -f 2>/dev/null + find /lib/modules -name "vboxnetadp\.*" 2>/dev/null|xargs rm -f 2>/dev/null + fi + fi + fi + fi + +fi # "$1" = "install" -o "$1" = "upgrade" + +#DEBHELPER# + |