diff options
| author | Michael Biebl <biebl@debian.org> | 2010-11-29 00:48:02 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2010-11-29 00:48:02 +0100 |
| commit | e2123f8ef48519892659c90f64f588a7b24069ee (patch) | |
| tree | f87005bd6dc2a3edc6db3dd7b0ebdb05fdb17265 /debian/network-manager.preinst | |
| parent | 9fae01fa351805b2903e535736e06971bc0b925e (diff) | |
| parent | a38c18be91a727db6daf6055a2ed7996f148c8aa (diff) | |
Merge remote branch 'svn/master'
Diffstat (limited to 'debian/network-manager.preinst')
| -rw-r--r-- | debian/network-manager.preinst | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/debian/network-manager.preinst b/debian/network-manager.preinst new file mode 100644 index 00000000..c02aca66 --- /dev/null +++ b/debian/network-manager.preinst @@ -0,0 +1,102 @@ +#!/bin/sh + +set -e + +# This script can be called in the following ways: +# +# Before the package is installed: +# <new-preinst> install +# +# Before removed package is upgraded: +# <new-preinst> install <old-version> +# +# Before the package is upgraded: +# <new-preinst> upgrade <old-version> +# +# +# If postrm fails during upgrade or fails on failed upgrade: +# <old-preinst> abort-upgrade <new-version> + + +# Remove a no-longer used conffile +rm_conffile() +{ + local PKGNAME="$1" + local CONFFILE="$2" + + [ -e "$CONFFILE" ] || return 0 + + local md5sum="`md5sum \"$CONFFILE\" | sed -e \"s/ .*//\"`" + local old_md5sum="`dpkg-query -W -f='${Conffiles}' $PKGNAME | \ + sed -n -e \"\\\\' $CONFFILE'{s/ obsolete$//;s/.* //p}\"`" + if [ "$md5sum" != "$old_md5sum" ]; then + echo "Obsolete conffile $CONFFILE has been modified by you." + echo "Saving as $CONFFILE.dpkg-bak ..." + mv -f "$CONFFILE" "$CONFFILE".dpkg-bak + else + echo "Removing obsolete conffile $CONFFILE ..." + rm -f "$CONFFILE" + fi +} + +# Prepare to move a conffile without triggering a dpkg question +prep_mv_conffile() { + local PKGNAME="$1" + local CONFFILE="$2" + + [ -e "$CONFFILE" ] || return 0 + + local md5sum="$(md5sum $CONFFILE | sed -e 's/ .*//')" + local old_md5sum="$(dpkg-query -W -f='${Conffiles}' $PKGNAME | \ + sed -n -e "\' $CONFFILE ' { s/ obsolete$//; s/.* //; p }")" + if [ "$md5sum" = "$old_md5sum" ]; then + rm -f "$CONFFILE" + fi +} + +case "$1" in + install|upgrade) + # Upgrade from previous versions + if dpkg --compare-versions "$2" lt "0.6.4-8"; then + if [ -x "/etc/dbus-1/event.d/25NetworkManager" ]; then + /etc/dbus-1/event.d/25NetworkManager stop + fi + if [ -x "/etc/dbus-1/event.d/26NetworkManagerDispatcher" ]; then + /etc/dbus-1/event.d/26NetworkManagerDispatcher stop + fi + rm_conffile network-manager /etc/dbus-1/event.d/25NetworkManager + rm_conffile network-manager /etc/dbus-1/event.d/26NetworkManagerDispatcher + fi + if dpkg --compare-versions "$2" lt "0.7.0~svn3624-1"; then + if [ -x "/etc/init.d/network-manager-dispatcher" ]; then + invoke-rc.d network-manager-dispatcher stop + fi + rm_conffile network-manager /etc/init.d/network-manager-dispatcher + update-rc.d network-manager-dispatcher remove >/dev/null + fi + if dpkg --compare-versions "$2" lt "0.7.0.100-1"; then + rm_conffile network-manager /etc/udev/rules.d/77-nm-probe-modem-capabilities.rules + # Move old pid file to /var/run, so /var/run/NetworkManager can be removed + # cleanly on upgrades and the daemon can be stopped correctly in postinst + if [ -f /var/run/NetworkManager/NetworkManager.pid ]; then + mv /var/run/NetworkManager/NetworkManager.pid /var/run/ + fi + fi + if dpkg --compare-versions "$2" lt "0.7.999-1"; then + rm_conffile network-manager /etc/dbus-1/system.d/nm-system-settings.conf + fi + if dpkg --compare-versions "$2" lt "0.8.1-2"; then + prep_mv_conffile network-manager /etc/NetworkManager/nm-system-settings.conf + fi + ;; + + abort-upgrade) + ;; + + *) + echo "$0 called with unknown argument \`$1'" 1>&2 + exit 1 + ;; +esac + +#DEBHELPER# |