summaryrefslogtreecommitdiffstats
path: root/debian/qemu-guest-agent.preinst
diff options
context:
space:
mode:
Diffstat (limited to 'debian/qemu-guest-agent.preinst')
-rw-r--r--debian/qemu-guest-agent.preinst62
1 files changed, 62 insertions, 0 deletions
diff --git a/debian/qemu-guest-agent.preinst b/debian/qemu-guest-agent.preinst
new file mode 100644
index 00000000..f5b4cc7d
--- /dev/null
+++ b/debian/qemu-guest-agent.preinst
@@ -0,0 +1,62 @@
+#!/bin/sh
+# preinst script for qemu-guest-agent
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <new-preinst> `install'
+# * <new-preinst> `install' <old-version>
+# * <new-preinst> `upgrade' <old-version>
+# * <old-preinst> `abort-upgrade' <new-version>
+# for details, see https://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+# Normal mv_conffile alone would fail due to the new path being a DIR in the old package version (LP: 1820291)
+case "$1" in
+ install|upgrade)
+ # From /usr/bin/dpkg-maintscript-helper modified to be able to cope with this edge case
+ if [ -n "$2" ] && dpkg --compare-versions -- "$2" le-nl "1:3.1+dfsg-7~"; then
+ TMPCONFFILE="/etc/qemu/fsfreeze-hook.old"
+ NEWCONFFILE="/etc/qemu/fsfreeze-hook"
+ ORIGCONFFILE="/etc/qemu/fsfreeze-hook/fsfreeze-hook"
+ if [ -f "$ORIGCONFFILE" ]; then
+ disk_md5sum="$(md5sum "$ORIGCONFFILE" | sed -e 's/ .*//')"
+ pkg_md5sum="$(dpkg-query -W -f='${Conffiles}' "qemu-guest-agent" | \
+ sed -n -e "\'^ $ORIGCONFFILE ' { s/ obsolete$//; s/.* //; p }")"
+ if [ "$disk_md5sum" = "$pkg_md5sum" ]; then
+ # mark as having no custom content
+ mv -f "$ORIGCONFFILE" "${TMPCONFFILE}.dpkg-remove"
+ else
+ # keep the "old" name to reflect there is content to be preserved
+ mv -f "$ORIGCONFFILE" "$TMPCONFFILE"
+ fi
+ # In any case the old directory blocking the new conffile
+ # has to be removed before unpack happens
+ rmdir "$NEWCONFFILE" || echo "failed to remove $NEWCONFFILE"
+ fi
+ fi
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0