summaryrefslogtreecommitdiff
path: root/debian/preinst
diff options
context:
space:
mode:
Diffstat (limited to 'debian/preinst')
-rw-r--r--debian/preinst83
1 files changed, 83 insertions, 0 deletions
diff --git a/debian/preinst b/debian/preinst
new file mode 100644
index 0000000..4dda427
--- /dev/null
+++ b/debian/preinst
@@ -0,0 +1,83 @@
+#!/bin/sh
+set -e
+
+#DEBHELPER#
+
+# Prepare to move a conffile without triggering a dpkg question
+prep_mv_conffile() {
+ PKGNAME="$1"
+ CONFFILE="$2"
+
+ if [ -e "$CONFFILE" ]; then
+ md5sum="`md5sum \"$CONFFILE\" | sed -e \"s/ .*//\"`"
+ old_md5sum="`dpkg-query -W -f='${Conffiles}' $PKGNAME | sed -n -e \"\\\\' $CONFFILE'{s/ obsolete$//;s/.* //p}\"`"
+ if [ "$md5sum" = "$old_md5sum" ]; then
+ rm -f "$CONFFILE"
+ fi
+ fi
+}
+
+# Remove a no-longer used conffile
+rm_conffile() {
+ PKGNAME="$1"
+ CONFFILE="$2"
+
+ if [ -e "$CONFFILE" ]; then
+ md5sum="`md5sum \"$CONFFILE\" | sed -e \"s/ .*//\"`"
+ old_md5sum="`dpkg-query -W -f='${Conffiles}' $PKGNAME | sed -n -e \"\\\\' $CONFFILE'{s/ obsolete$//;s/.* //p}\"`"
+ if [ "$md5sum" != "$old_md5sum" ]; then
+ echo "Obsolete conffile $CONFFILE has been modified by you."
+ echo "Saving as $CONFFILE.dpkg-bak ..."
+ mv -f "$CONFFILE" "$CONFFILE".dpkg-bak
+ else
+ echo "Removing obsolete conffile $CONFFILE ..."
+ 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 etckeeper "/etc/etckeeper/pre-apt.d/$c"
+ done
+ for c in README 10git-test 30git-add 40git-rm 50git-commit; do
+ prep_mv_conffile etckeeper "/etc/etckeeper/post-apt.d/$c"
+ done
+ for c in 40git-init 50git-ignore 50git-perm \
+ 50git-pre-commit-hook 70git-add; do
+ prep_mv_conffile etckeeper "/etc/etckeeper/init.d/$c"
+ done
+ fi
+ if dpkg --compare-versions "$2" le "0.10"; then
+ for c in 10vcs-test 30git-add 30hg-addremove 40git-rm; do
+ prep_mv_conffile etckeeper "/etc/etckeeper/post-install.d/$c"
+
+ done
+ fi
+ if dpkg --compare-versions "$2" le "0.13"; then
+ for c in 20store-empty-directory 40rm-old-metadata; do
+ rm_conffile etckeeper "/etc/etckeeper/pre-commit.d/$c"
+ done
+ for c in 10restore-etckeeper 20restore-metadata; do
+ prep_mv_conffile etckeeper "/etc/etckeeper/init.d/$c"
+ done
+ fi
+ if dpkg --compare-versions "$2" le "0.15"; then
+ for c in 40bzr-rm 45bzr-precommit; do
+ rm_conffile etckeeper "/etc/etckeeper/commit.d/$c"
+ done
+ fi
+ if dpkg --compare-versions "$2" le "0.50"; then
+ for c in 20warn-hardlinks 20warn-special-file; do
+ rm_conffile etckeeper "/etc/etckeeper/pre-commit.d/$c"
+ done
+ fi
+ if dpkg --compare-versions "$2" le "0.61"; then
+ rm_conffile etckeeper "/etc/etckeeper/commit.d/40git-rm"
+ fi
+
+ # delete files the prerm stashes away to handle purging
+ rm -rf /var/cache/etckeeper/stash
+esac