summaryrefslogtreecommitdiffstats
path: root/ubuntu/maverick/tdebase/debian/tdm-trinity.postinst
blob: c33169e82350aba6d55946832ec998ba252a1750 (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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#! /bin/sh

set -e

# source debconf library
. /usr/share/debconf/confmodule

# debconf is not a registry, so we only fiddle with the default file if it
# does not exist
DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/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
    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
      # FIXME - redo this part uses shell-lib.sh from xfree86
      #observe "committing change of default X display manager"
      echo "$DAEMON_NAME" > "$DEFAULT_DISPLAY_MANAGER_FILE"
    fi
  fi
fi

# remove the displaced old default display manager file if it exists
if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE.dpkg-tmp" ]; then
  rm "$DEFAULT_DISPLAY_MANAGER_FILE.dpkg-tmp"
fi

# set default-display-manager systemd service link according to our config
DEFAULT_SERVICE=/etc/systemd/system/display-manager.service
if [ "$1" = configure ] && [ -d /etc/systemd/system/ ]; then
  if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ]; then
    SERVICE=/lib/systemd/system/$(basename $(cat "$DEFAULT_DISPLAY_MANAGER_FILE")).service
    SERVICE=`echo "$SERVICE" | sed "s/tdm\./tdm-trinity./"`
    if [ -h "$DEFAULT_SERVICE" ] && [ $(readlink "$DEFAULT_SERVICE") = /dev/null ]; then
      echo "Display manager service is masked" >&2
    elif [ -e "$SERVICE" ]; then
      ln -sf "$SERVICE" "$DEFAULT_SERVICE"
    else
      echo "WARNING: $SERVICE is the selected default display manager but does not exist" >&2
      rm -f "$DEFAULT_SERVICE"
    fi
  else
    rm -f "$DEFAULT_SERVICE"
  fi
fi

# restarting the daemon may cause output to stdout
db_stop

# don't start tdm if we are upgrading without stopping it
NOSTART=
if [ -e /var/run/tdm-trinity.upgrade ]; then
  NOSTART=yes
fi
# or if we're currently in X on the display it attempts to manage by default
for HOST in "" \
            "localhost" \
            "$(hostname 2> /dev/null)" \
            "$(hostname -f 2> /dev/null)"; do
  if echo "$DISPLAY" | grep -q "^$HOST:0.*"; then
    NOSTART=yes
    break
  fi
done
# or if it's already running
if start-stop-daemon --stop --quiet --signal 0 --pid /var/run/tdm.pid --exec /opt/trinity/bin/tdm; then
  NOSTART=yes
fi
# or if the options file says not to
if ! grep -qs ^restart-on-upgrade /etc/trinity/tdm/tdm.options; then
  NOSTART=yes
fi


# md5sum of the stock Xservers shipped with KDE 3.3.2, which shipped with Sarge
SARGEXSERVERS=d3ab063f564492e0e31830f56ccd350e

CONFIGLEVEL=`grep -s ^ConfigVersion= /etc/trinity/tdm/tdmrc | sed s/^ConfigVersion=//`

if [ -e /etc/trinity/tdm/tdmrc ]; then
  if dpkg --compare-versions "$CONFIGLEVEL" ge "2.3"; then
    TDMRCUPDATED=yes
  fi
fi

if [ -e /etc/trinity/tdm/Xservers ]; then
  if [ `md5sum /etc/trinity/tdm/Xservers | sed s/\ .*$//` = $SARGEXSERVERS ]; then
    XSERVERSUNCHANGED=yes
  fi
fi

# From KDE 3.4, /etc/trinity/tdm/Xservers is no longer required, so we remove it, if
# the user has updated their tdmrc (if they haven't, tdm notices and keeps using
# Xservers), and if it wasn't touched, i.e. there are no local changes the user
# will want to merge into tdmrc.

case "$1" in

  configure)

    if [ ! -z $TDMRCUPDATED ] && [ ! -z $XSERVERSUNCHANGED ]; then
      echo "Removing obsolete /etc/trinity/tdm/Xservers (detected no user changes)."
      rm -f /etc/trinity/tdm/Xservers
    elif [ ! -z $TDMRCUPDATED ] && [ -e /etc/trinity/tdm/Xservers ]; then
      echo "Note that /etc/trinity/tdm/Xservers is no longer used by TDM."
      echo "You must merge your changes (if any) into /etc/trinity/tdm/tdmrc manually."
      echo "Otherwise, /etc/trinity/tdm/Xservers is safe to remove."
    fi

    rm -f /etc/init.d/tdm-trinity
    ln -s /lib/init/upstart-job /etc/init.d/tdm-trinity

  ;;

  abort-upgrade|abort-remove|abort-deconfigure)
  ;;

  *)
  echo "postinst called with unknown argument \`$1'" >&2
  exit 1
  ;;

esac

# Upstart is not active?
UPSTART_DIVERT=`dpkg-divert --listpackage /sbin/initctl`
UPSTART_ACTIVE=`dbus-send --system --print-reply --dest=com.ubuntu.Upstart /com/ubuntu/Upstart org.freedesktop.DBus.Properties.Get string:com.ubuntu.Upstart0_6 string:version 2>/dev/null || true`
if [ -z "$UPSTART_DIVERT" ] && [ -z "$UPSTART_ACTIVE" ]; then
  echo "Upstart is not active - masking initctl" >&2
  dpkg-divert --local --rename --add /sbin/initctl
  ln -s /bin/true /sbin/initctl
fi

#DEBHELPER#

# Upstart is not active?
if [ -z "$UPSTART_DIVERT" ] && [ -z "$UPSTART_ACTIVE" ]; then
  rm /sbin/initctl
  dpkg-divert --local --rename --remove /sbin/initctl
fi

exit 0