* Add gnarly conffile renaming code.
authorJoey Hess <joey@kodama.kitenet.net>
Fri, 4 Jan 2008 02:36:13 +0000 (21:36 -0500)
committerJoey Hess <joey@kodama.kitenet.net>
Fri, 4 Jan 2008 02:36:13 +0000 (21:36 -0500)
debian/changelog
debian/postinst
debian/preinst [new file with mode: 0644]

index f8184721427e8d7f99cd31304e1604fb0c5185d2..c1c0ea065447d5492bf1569656687bcdab861e03 100644 (file)
@@ -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 <joeyh@debian.org>  Thu, 03 Jan 2008 20:43:23 -0500
 
index be4bf1fed32b8f003ac68b68a59550ceb3d07144..33891dd4b7b2c122e341b56ca81ecb036b79e111 100644 (file)
@@ -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 (file)
index 0000000..f4a086f
--- /dev/null
@@ -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