summaryrefslogtreecommitdiff
path: root/debian/preinst
blob: 11647a1f2a7b0bd3d752612498aab8367cd51f28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/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

	# delete files the prerm stashes away to handle purging
	rm -rf /var/cache/etckeeper/stash
esac