From 00b7b8c2cb6979af84116abf731e7023aa526497 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 3 Jan 2008 21:36:13 -0500 Subject: * Add gnarly conffile renaming code. --- debian/changelog | 1 + debian/postinst | 30 ++++++++++++++++++++++++++++++ debian/preinst | 29 +++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 debian/preinst diff --git a/debian/changelog b/debian/changelog index f818472..c1c0ea0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,7 @@ etckeeper (0.7) UNRELEASED; urgency=low * Rename pre/post-apt.d to pre/post-install.d to allow the same directories to be used for other package managers. * Use the name of the highlevel package manager in commit messages. + * Add gnarly conffile renaming code. -- Joey Hess Thu, 03 Jan 2008 20:43:23 -0500 diff --git a/debian/postinst b/debian/postinst index be4bf1f..33891dd 100644 --- a/debian/postinst +++ b/debian/postinst @@ -5,3 +5,33 @@ set -e . /usr/share/debconf/confmodule #DEBHELPER# + +# Move a conffile without triggering a dpkg question +mv_conffile() { + OLDCONFFILE="$1" + NEWCONFFILE="$2" + + if [ -e "$OLDCONFFILE" ]; then + echo "Preserving user changes to $NEWCONFFILE ..." + mv -f "$NEWCONFFILE" "$NEWCONFFILE".dpkg-new + mv -f "$OLDCONFFILE" "$NEWCONFFILE" + fi +} + +case "$1" in +configure) + if dpkg --compare-versions "$2" le "0.7"; then + if [ -d /etc/etckeeper/pre-apt.d ]; then + for c in README 50uncommitted-changes; do + mv_conffile "/etc/etckeeper/pre-apt.d/$c" "/etc/etckeeper/pre-install.d/$c" + done + rmdir --ignore-fail-on-non-empty /etc/etckeeper/pre-apt.d + fi + if [ -d /etc/etckeeper/post-apt.d ]; then + for c in README 10git-test 30git-add 40git-rm 50git-commit; do + mv_conffile "/etc/etckeeper/post-apt.d/$c" "/etc/etckeeper/post-install.d/$c" + done + rmdir --ignore-fail-on-non-empty /etc/etckeeper/post-apt.d + fi + fi +esac diff --git a/debian/preinst b/debian/preinst new file mode 100644 index 0000000..f4a086f --- /dev/null +++ b/debian/preinst @@ -0,0 +1,29 @@ +#!/bin/sh +set -e + +#DEBHELPER# + +# Prepare to move a conffile without triggering a dpkg question +prep_mv_conffile() { + CONFFILE="$1" + + if [ -e "$CONFFILE" ]; then + md5sum="`md5sum \"$CONFFILE\" | sed -e \"s/ .*//\"`" + old_md5sum="`sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' $CONFFILE'{s/.* //;p}}\" /var/lib/dpkg/status`" + if [ "$md5sum" = "$old_md5sum" ]; then + rm -f "$CONFFILE" + fi + fi +} + +case "$1" in +install|upgrade) + if dpkg --compare-versions "$2" le "0.7"; then + for c in README 50uncommitted-changes; do + prep_mv_conffile "/etc/etckeeper/pre-apt.d/$c" + done + for c in README 10git-test 30git-add 40git-rm 50git-commit; do + prep_mv_conffile "/etc/etckeeper/post-apt.d/$c" + done + fi +esac -- cgit v1.2.3