You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-packaging/ubuntu/maverick/metapackages/rename-meta/debian/kdm-trinity.preinst

169 lines
5.8 KiB

#! /bin/sh
# preinst script for kdm-trinity
#
# see: dh_installdeb(1)
set -e
# debconf may not be available if some massive purging is going on
HAVE_DEBCONF=
if [ -e /usr/share/debconf/confmodule ]; then
. /usr/share/debconf/confmodule
HAVE_DEBCONF=yes
fi
# remove former service
if [ -e /etc/init.d/kdm-trinity ]; then
REMOVING=yes
fi
if [ -n "$REMOVING" ]; then
# is there an kdm-trinity process running?
if start-stop-daemon --stop --quiet --signal 0 --exec /opt/trinity/bin/kdm; then
# any children?
PARENTS=$(pidof /opt/trinity/bin/kdm || true)
CHILDREN=
if [ -n "$PARENTS" ]; then
for PROCESS in $PARENTS; do
# make sure we got numbers back
[ $PROCESS -eq $PROCESS ] 2> /dev/null ||
exit
# FIXME - redo this part uses shell-lib.sh from xfree86
# die "pidof returned non-numeric value"
# we could use grep -q here if ps would ignore SIGPIPE :-P
if (ps axj | grep "^ *$PROCESS" > /dev/null 2>&1); then
CHILDREN=yes
fi
done
if [ -n "$CHILDREN" ]; then
if [ -n "$HAVE_DEBCONF" ]; then
# ask the question
db_input high kdm-trinity/stop_running_server_with_children || true
db_go
# what did the user say?
ANSWER=
if db_get kdm-trinity/stop_running_server_with_children; then
ANSWER="$RET"
fi
if [ "$ANSWER" = "true" ]; then
STOP=yes
fi
# forget that we have seen the question; this is the sort of
# non-configuration question that should be asked every time
db_fset kdm-trinity/stop_running_server_with_children seen false
fi
else
STOP=yes
fi
fi
fi
fi
if [ -n "$STOP" ]; then
if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
invoke-rc.d kdm-trinity stop || true
else
/etc/init.d/kdm-trinity stop || true
fi
fi
if [ -n "$REMOVING" ]; then
rm -f /etc/init.d/kdm-trinity
[ ! -e /etc/init/kdm-trinity.conf ] || \
rm -f /etc/init/kdm-trinity.conf
fi
# convert former configuration (kdm => tdm)
if [ -d "/etc/trinity/kdm" ] && [ ! -d "/etc/trinity/tdm" ]; then
# copy old configuration
cp -a "/etc/trinity/kdm" "/etc/trinity/tdm"
# cleanup
find "/etc/trinity/tdm" -name "*.dpkg-*" -print0 | \
xargs -r0 rm
# rename files
find "/etc/trinity/tdm" -name "*kdm*" | \
while read f; do mv "${f}" "$(echo "$f" | sed "s|kdm|tdm|g")"; done
# rename in the files content
egrep -rl "KDE|KDM|kdm|kwin" "/etc/trinity/tdm" | tr "\n" "\0" | \
xargs -r0 sed -i -e "s|KDE|TDE|g" -e "s|KDM|TDM|g" -e "s|kdm|tdm|g" -e "s|kwin|twin|g"
fi
DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
if [ -n "$HAVE_DEBCONF" ]; then
# disown this question
db_unregister shared/default-x-display-manager || true
# does the question still exist?
if db_get shared/default-x-display-manager; then
if db_metaget shared/default-x-display-manager owners; then
# FIXME - redo this part uses shell-lib.sh from xfree86
#observe "X display managers now available are \"$OWNERS\""
db_subst shared/default-x-display-manager choices "$RET"
fi
DEFAULT_DISPLAY_MANAGER=
if db_get shared/default-x-display-manager; then
DEFAULT_DISPLAY_MANAGER="$RET"
fi
# are we removing the currently selected display manager?
if [ -n "$DEFAULT_DISPLAY_MANAGER" ]; then
if [ "kdm-trinity" = "$DEFAULT_DISPLAY_MANAGER" ]; then
if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ]; then
if db_get "$DEFAULT_DISPLAY_MANAGER/daemon_name"; then
# does the display manager file reference the current default? if
# so, remove it because it will now be wrong
if [ -n "$RET" ]; then
if [ "$(cat "$DEFAULT_DISPLAY_MANAGER_FILE")" = "$RET" ]; then
rm "$DEFAULT_DISPLAY_MANAGER_FILE"
fi
fi
fi
fi
# ask the user to choose a new default
db_fset shared/default-x-display-manager seen false
db_input critical shared/default-x-display-manager || true
db_go
# if the default display manager file doesn't exist, write it with
# the path to the new default display manager
if [ ! -e "$DEFAULT_DISPLAY_MANAGER_FILE" ]; then
DEFAULT_DISPLAY_MANAGER=
if db_get shared/default-x-display-manager; then
DEFAULT_DISPLAY_MANAGER="$RET"
fi
if [ -n "$DEFAULT_DISPLAY_MANAGER" ]; then
# FIXME - redo this part uses shell-lib.sh from xfree86
#warn "new default display manager has been selected; please be" \
# "sure to run \"dpkg-reconfigure $RET\" to ensure that it" \
# "is configured"
DAEMON_NAME=
if db_get "$DEFAULT_DISPLAY_MANAGER"/daemon_name; then
DAEMON_NAME="$RET"
fi
if [ ! -n "$DAEMON_NAME" ]; then
# if we were unable to determine the name of the selected daemon (for
# instance, if the selected default display manager doesn't provide a
# daemon_name question), guess
DAEMON_NAME=$(which "$DEFAULT_DISPLAY_MANAGER" 2>/dev/null)
if [ ! -n "$DAEMON_NAME" ]; then
echo .
# FIXME - redo this part uses shell-lib.sh from xfree86
#warn "unable to determine path to default X display manager" \
# "$DEFAULT_DISPLAY_MANAGER; not updating" \
# "$DEFAULT_DISPLAY_MANAGER_FILE"
fi
fi
if [ -n "$DAEMON_NAME" ]; then
echo "$DAEMON_NAME" > "$DEFAULT_DISPLAY_MANAGER_FILE"
fi
fi
fi
fi
fi
fi
fi
exit 0