D-Bus User Message Bus (Session Bus) is enabled from systemd 07/4407/3
authorTadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
Wed, 9 Dec 2015 04:32:30 +0000 (13:32 +0900)
committerGerrit Code Review <gerrit@172.30.200.200>
Wed, 9 Dec 2015 17:07:20 +0000 (17:07 +0000)
D-Bus user message bus (session bus) is enabled from systemd
as system's user service.

D-Bus daemon becomes enable when triggered by socket access.

Change-Id: I8033dd546209288f45917176a38f79aef78062fa
Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
meta-agl/recipes-core/dbus/dbus/dbus.service [new file with mode: 0644]
meta-agl/recipes-core/dbus/dbus/dbus.socket [new file with mode: 0644]
meta-agl/recipes-core/dbus/dbus/dbus_env.conf [new file with mode: 0644]
meta-agl/recipes-core/dbus/dbus_%.bbappend [new file with mode: 0644]

diff --git a/meta-agl/recipes-core/dbus/dbus/dbus.service b/meta-agl/recipes-core/dbus/dbus/dbus.service
new file mode 100644 (file)
index 0000000..dee6ad7
--- /dev/null
@@ -0,0 +1,10 @@
+[Unit]
+Description=D-Bus User Message Bus
+Documentation=man:dbus-daemon(1)
+Requires=dbus.socket
+
+[Service]
+ExecStart=/usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation
+ExecReload=/usr/bin/dbus-send --print-reply --session --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ReloadConfig
+Restart=always
+RestartSec=1
diff --git a/meta-agl/recipes-core/dbus/dbus/dbus.socket b/meta-agl/recipes-core/dbus/dbus/dbus.socket
new file mode 100644 (file)
index 0000000..af76b2f
--- /dev/null
@@ -0,0 +1,9 @@
+[Unit]
+Description=D-Bus User Message Bus Socket
+Before=sockets.target
+
+[Socket]
+ListenStream=%t/bus
+
+[Install]
+WantedBy=default.target
diff --git a/meta-agl/recipes-core/dbus/dbus/dbus_env.conf b/meta-agl/recipes-core/dbus/dbus/dbus_env.conf
new file mode 100644 (file)
index 0000000..f8f0266
--- /dev/null
@@ -0,0 +1,5 @@
+[Unit]
+Wants=dbus.service
+
+[Service]
+Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%I/bus
diff --git a/meta-agl/recipes-core/dbus/dbus_%.bbappend b/meta-agl/recipes-core/dbus/dbus_%.bbappend
new file mode 100644 (file)
index 0000000..348be60
--- /dev/null
@@ -0,0 +1,26 @@
+FILESEXTRAPATHS_append := ":${THISDIR}/${PN}"
+
+SRC_URI_append = "file://dbus.service \
+                  file://dbus.socket \
+                  file://dbus_env.conf \
+                 "
+
+inherit systemd
+
+do_install_append() {
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -p -D ${WORKDIR}/dbus.service ${D}${systemd_user_unitdir}/dbus.service
+        install -p -D ${WORKDIR}/dbus.socket ${D}${systemd_user_unitdir}/dbus.socket
+        install -p -D ${WORKDIR}/dbus_env.conf ${D}${systemd_system_unitdir}/user@.service.d/dbus_env.conf
+
+        # Execute these manually on behalf of systemctl script (from systemd-systemctl-native.bb)
+        # because it does not support systemd's user mode.
+        mkdir -p ${D}/etc/systemd/user/default.target.wants/
+        ln -sf ${systemd_user_unitdir}/dbus.socket ${D}/etc/systemd/user/default.target.wants/dbus.socket
+    fi
+}
+
+FILES_${PN} += " \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_user_unitdir}/dbus.*', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_system_unitdir}/user@.service.d/dbus_env.conf', '', d)} \
+    "