summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-01-03 21:36:13 -0500
committerJoey Hess <joey@kodama.kitenet.net>2008-01-03 21:36:13 -0500
commit00b7b8c2cb6979af84116abf731e7023aa526497 (patch)
treea07719caeee3db0a3a49b04ff5c4649504995ac7
parentef70e3d7e62671d0cadb2731e6965768f73ca290 (diff)
* Add gnarly conffile renaming code.
-rw-r--r--debian/changelog1
-rw-r--r--debian/postinst30
-rw-r--r--debian/preinst29
3 files changed, 60 insertions, 0 deletions
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 <joeyh@debian.org> 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