Bug#217605: Reopen 217605
reopen 217605
tag 217605 = patch
thanks
Hi,
the fix is wrong:
* In xdm.config, because of a typo when calling head, CURRENT_DEFAULT is
empty, so at end of script $DEFAULT_DISPLAY_MANAGER_FILE is moved to
$DEFAULT_DISPLAY_MANAGER_FILE.dpkg-tmp
* In xdm.postinst, as $DEFAULT_DISPLAY_MANAGER_FILE does not exist,
the debconf stuff is always run. If $DEFAULT_DISPLAY_MANAGER/daemon_name
does not exist, DAEMON_NAME contains
"10 $DEFAULT_DISPLAY_MANAGER/daemon_name doesn't exist"
or something like that. This is because of your safe_debconf
function, it is not safe at all ;o)
You must instead test db_get return code, which makes safe_debconf
pretty useless, so I removed calls to it from both scripts.
In -13 postinst no more fails, which is of course better, but display manager
is not restarted when $DEFAULT_DISPLAY_MANAGER/daemon_name does not
exist.
Patch against trunk-debian-2003.11.16 attached.
Denis
diff -ur trunk-debian-2003.11.16.orig/debian/xdm.config.in trunk-debian-2003.11.16/debian/xdm.config.in
--- trunk-debian-2003.11.16.orig/debian/xdm.config.in 2003-11-16 09:01:07.000000000 +0200
+++ trunk-debian-2003.11.16/debian/xdm.config.in 2003-11-16 09:23:14.000000000 +0200
@@ -19,15 +19,15 @@
# set default display manager
DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
-safe_debconf db_metaget shared/default-x-display-manager owners
+db_metaget shared/default-x-display-manager owners || true
OWNERS="$RET"
-safe_debconf db_metaget shared/default-x-display-manager choices
+db_metaget shared/default-x-display-manager choices || true
CHOICES="$RET"
if [ -n "$OWNERS" -a -n "$CHOICES" ]; then
if [ "$OWNERS" != "$CHOICES" ]; then
- safe_debconf db_subst shared/default-x-display-manager choices "$OWNERS"
- safe_debconf db_fset shared/default-x-display-manager seen false
+ db_subst shared/default-x-display-manager choices "$OWNERS"
+ db_fset shared/default-x-display-manager seen false
fi
# debconf is not a registry; use the current contents of the default display
@@ -35,27 +35,29 @@
if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ]; then
CURRENT_DEFAULT=$(basename "$(grep -v '^[[:space:]]*#' \
"$DEFAULT_DISPLAY_MANAGER_FILE" |
- head -n -1)")
+ head -n 1)")
if [ -n "$CURRENT_DEFAULT" ]; then
if ! which "$CURRENT_DEFAULT" > /dev/null 2>&1; then
observe "default display manager \"$CURRENT_DEFAULT\" specified in" \
"$DEFAULT_DISPLAY_MANAGER_FILE does not exist or is not" \
"executable"
fi
- safe_debconf db_set shared/default-x-display-manager "$CURRENT_DEFAULT"
+ db_set shared/default-x-display-manager "$CURRENT_DEFAULT"
fi
else
- safe_debconf db_get shared/default-x-display-manager
- CURRENT_DEFAULT="$RET"
+ if db_get shared/default-x-display-manager; then
+ CURRENT_DEFAULT="$RET"
+ fi
fi
- safe_debconf db_input high shared/default-x-display-manager
- safe_debconf db_go
+ db_input high shared/default-x-display-manager || true
+ db_go || true
fi
# using this display manager?
-safe_debconf db_get shared/default-x-display-manager
-NEW_DEFAULT="$RET"
+if db_get shared/default-x-display-manager; then
+ NEW_DEFAULT="$RET"
+fi
# move the default display manager file if we're going to change it
if [ -n "$NEW_DEFAULT" ]; then
diff -ur debian.orig/xdm.postinst.in debian/xdm.postinst.in
--- debian.orig/xdm.postinst.in 2003-11-16 09:01:19.000000000 +0200
+++ debian/xdm.postinst.in 2003-11-16 09:09:54.000000000 +0200
@@ -9,9 +9,6 @@
set -e
-# source debconf library
-. /usr/share/debconf/confmodule
-
THIS_PACKAGE=xdm
THIS_SCRIPT=postinst
@@ -33,12 +30,16 @@
# does not exist
DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
if [ ! -e "$DEFAULT_DISPLAY_MANAGER_FILE" ]; then
- safe_debconf db_get shared/default-x-display-manager
- DEFAULT_DISPLAY_MANAGER="$RET"
+ # source debconf library
+ . /usr/share/debconf/confmodule
+
+ if db_get shared/default-x-display-manager; then
+ DEFAULT_DISPLAY_MANAGER="$RET"
+ fi
if [ -n "$DEFAULT_DISPLAY_MANAGER" ]; then
- safe_debconf db_get "$DEFAULT_DISPLAY_MANAGER"/daemon_name
- DAEMON_NAME="$RET"
- if [ ! -n "$DAEMON_NAME" ]; then
+ if db_get "$DEFAULT_DISPLAY_MANAGER"/daemon_name; then
+ DAEMON_NAME="$RET"
+ else
# 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
@@ -53,6 +54,9 @@
echo "$DAEMON_NAME" > "$DEFAULT_DISPLAY_MANAGER_FILE"
fi
fi
+
+ # restarting the daemon may cause output to stdout
+ db_stop
fi
# remove the displaced old default display manager file if it exists
@@ -60,9 +64,6 @@
rm "$DEFAULT_DISPLAY_MANAGER_FILE.dpkg-tmp"
fi
-# restarting the daemon may cause output to stdout
-safe_debconf db_stop
-
# don't start xdm if we are upgrading without stopping it
NOSTART=
XDM_RUNNING=
Reply to: