summaryrefslogtreecommitdiff
path: root/debian/dbus.postinst
blob: 7d16d5710166a923d90c35260c168e7e5e5eaa13 (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
#!/bin/sh
# Copyright © 2003 Colin Walters <walters@debian.org>
# Copyright © 2006 Sjoerd Simons <sjoerd@debian.org>

set -e

MESSAGEUSER=messagebus
MESSAGEHOME=/var/run/dbus
LAUNCHER=/usr/lib/dbus-1.0/dbus-daemon-launch-helper

SMF_FMRI=svc:/system/dbus:default

if [ "$1" = configure ]; then
    adduser --system \
            --quiet \
            --home "$MESSAGEHOME" \
            --no-create-home \
            --disabled-password \
            --group "$MESSAGEUSER"

    if ! dpkg-statoverride --list "$LAUNCHER" >/dev/null 2>&1; then
            chown root:"$MESSAGEUSER" "$LAUNCHER"
            chmod 4754 "$LAUNCHER"
    fi

    # This is idempotent, so it's OK to do every time. The system bus' init
    # script does this anyway, but you also have to do this before a session
    # bus will work, so we do this here for the benefit of people starting
    # a temporary session bus in a chroot
    dbus-uuidgen --ensure
fi

# Remove stop symlinks for runlevel 1 as killprocs already does the job for us.
if [ "$1" = configure ] && dpkg --compare-versions "$2" lt-nl 1.2.24-1; then
    rm -f /etc/rc1.d/K??dbus
fi

dbus_is_running () {
    if [ -x "/etc/init.d/dbus" ]; then
        /etc/init.d/dbus status > /dev/null
    elif [ -x /usr/bin/svcstatus ]; then
        [ x`/usr/bin/svcstatus $SMF_FMRI` = xonline ]
    fi
}

if [ "$1" = configure ] && [ -n "$2" ]; then
    # On upgrades, we only reload config, and don't restart (restarting the
    # system bus is not supported by upstream). The code added by
    # dh_installinit -r creates a start action, below.

    if dbus_is_running; then
        # trigger an update notification which recommends to reboot
        [ -x /usr/share/update-notifier/notify-reboot-required ] && \
            /usr/share/update-notifier/notify-reboot-required || true
    fi

    # This is what the init script would do, but it's simpler (and less
    # dependent on sysvinit vs. Upstart) if we do it directly.
    # If it's not running (perhaps we're in a chroot) this will just fail
    # harmlessly, so there's no need to condition on status.
    dbus-send --print-reply --system --type=method_call \
            --dest=org.freedesktop.DBus \
            / org.freedesktop.DBus.ReloadConfig > /dev/null || true
fi

#DEBHELPER#