Try to work around dpkg-divert issues with missing files
[grml-etc.git] / debian / preinst
1 #!/bin/sh
2 # Filename:      preinst
3 # Purpose:       preinst script for package grml-etc
4 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
5 # Bug-Reports:   see http://grml.org/bugs/
6 # License:       This file is licensed under the GPL v2.
7 # Latest change: Mon Feb 04 15:32:00 CET 2008 [mika]
8 ################################################################################
9
10 set -e
11
12 TO_DIVERT1="login.config mgetty.config"
13 TO_DIVERT2="ssh"
14 TO_DIVERT3="kismet.conf"
15 TO_DIVERT4="wlan-ng.conf"
16 TO_DIVERT5="windowlab.menurc"
17
18 divert_gen() {
19     DEXT=${3:-original}
20     dpkg-divert --add --rename --package grml-etc \
21         --divert $2/$1.$DEXT $2/$1 > /dev/null
22 }
23
24 # move files from package grml-etc to grml-etc-core
25 # and make sure we do not lose any files...
26 rm_conffile() {
27     CONFFILE="$1"
28
29     if [ -e "$CONFFILE" ]; then
30         md5sum="`md5sum \"$CONFFILE\" | sed -e \"s/ .*//\"`"
31         old_md5sum="`dpkg-query -W -f='${Conffiles}' grml-etc | sed -n -e \"\\\\' $CONFFILE'{s/ obsolete$//;s/.* //p}\"`"
32         if [ "$md5sum" != "$old_md5sum" ]; then
33             echo "Obsolete conffile $CONFFILE has been modified by you."
34             echo "Saving as $CONFFILE.dpkg-bak ..."
35             mv -f "$CONFFILE" "$CONFFILE".dpkg-bak
36         fi
37     fi
38 }
39
40 case "$1" in
41    install|upgrade)
42         if [ -r /etc/mgetty/login.config ] ; then
43            for cmd in $TO_DIVERT1; do
44                divert_gen $cmd /etc/mgetty
45            done
46         fi
47         for cmd in $TO_DIVERT2; do
48             divert_gen $cmd /etc/init.d
49         done
50         if [ -d /etc/kismet ] ; then
51            for cmd in $TO_DIVERT3; do
52                divert_gen $cmd /etc/kismet
53            done
54         fi
55         if [ -d /etc/pcmcia ] ; then
56            for cmd in $TO_DIVERT4; do
57                divert_gen $cmd /etc/pcmcia
58            done
59         fi
60         if [ -d /etc/X11/windowlab ] ; then
61            for cmd in $TO_DIVERT5; do
62                divert_gen $cmd /etc/X11/windowlab
63            done
64         fi
65
66         # did I mention that dpkg-divert sucks?
67         if [ -n "$2" ] ; then
68            if dpkg --compare-versions "${2}" lt 0.8 ; then
69               if dpkg-divert --list | grep -q /etc/init.d/postgresql-8.0 ; then
70                  rm -f /etc/init.d/postgresql-8.0
71                  dpkg-divert --quiet --package grml-etc --remove --rename --divert /etc/init.d/postgresql-8.0.original /etc/init.d/postgresql-8.0
72               fi
73            fi
74         fi
75
76         # move files from package grml-etc to grml-etc-core
77         for file in /etc/zsh/zlogin /etc/zsh/zprofile /etc/zsh/zshenv /etc/zsh/zshrc \
78                     /etc/zsh/zshrc  /etc/zsh/zlogout  /etc/vim/vimrc ; do
79             if dpkg-divert --list $file | grep -q 'grml-etc$' ; then
80                rm_conffile $file
81                dpkg-divert --quiet --package grml-etc --remove --rename --divert $file.original $file
82             fi
83         done
84
85         if dpkg-divert --list /etc/skel/.zshrc | grep -q 'grml-etc$' ; then
86            [ -f /etc/skel/.zshrc.original ] && rm /etc/skel/.zshrc
87            dpkg-divert --quiet --package grml-etc --remove --rename --divert /etc/skel/.zshrc.original /etc/skel/.zshrc
88         fi
89
90         if dpkg-divert --list /etc/samba/smb.conf | grep -q 'grml-etc$' ; then
91            [ -f /etc/samba/smb.conf.original ] && rm /etc/samba/smb.conf.original
92            dpkg-divert --quiet --package grml-etc --remove --rename --divert /etc/samba/smb.conf.original /etc/samba/smb.conf
93         fi
94
95      ;;
96    *)
97      echo "preinst called with unknown argument $1" >&2
98      exit 1
99 esac
100
101 exit 0
102
103 ## END OF FILE #################################################################