qemu/debian/qemu-guest-agent.preinst

63 lines
2.1 KiB
Bash

#!/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