diff options
Diffstat (limited to 'debian/qemu-guest-agent.preinst')
-rw-r--r-- | debian/qemu-guest-agent.preinst | 62 |
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 |