From a0d9623fa7abc02e1856d089238a957dc27eab3c Mon Sep 17 00:00:00 2001
From: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
Date: Wed, 9 Dec 2015 13:34:28 +0900
Subject: [PATCH] Lightmediascanner becomes systemd user service

Now lightmediascanner becomes systemd user service because
it needs D-Bus session bus provided by D-Bus Daemon which
is managed by systemd (as user service).

Change-Id: I38aa8a60394dbf078b3dd3a42e60514816f96969
Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
---
 .../lightmediascanner/files/lightmediascanner.service    |  9 +++++----
 .../lightmediascanner/lightmediascanner_%.bbappend       | 16 +++++++++++-----
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/meta-agl/recipes-multimedia/lightmediascanner/files/lightmediascanner.service b/meta-agl/recipes-multimedia/lightmediascanner/files/lightmediascanner.service
index 00bbf8d27..a13e2e635 100644
--- a/meta-agl/recipes-multimedia/lightmediascanner/files/lightmediascanner.service
+++ b/meta-agl/recipes-multimedia/lightmediascanner/files/lightmediascanner.service
@@ -2,9 +2,10 @@
 Description=Lightmediascanner (LMS)
 
 [Service]
-Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%U/dbus/user_bus_socket
-User=root
-ExecStart=/usr/bin/dbus-launch --auto-syntax /usr/bin/lightmediascannerd --startup-scan --directory=/usr/share/media
+Type=dbus
+BusName=org.lightmediascanner
+ExecStart=/usr/bin/lightmediascannerd --startup-scan --directory=/usr/share/media
 
 [Install]
-WantedBy=multi-user.target
+WantedBy=default.target
+Alias=dbus-org.lightmediascanner.service
diff --git a/meta-agl/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend b/meta-agl/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend
index d2b790e81..f9c269d2e 100644
--- a/meta-agl/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend
+++ b/meta-agl/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend
@@ -7,13 +7,19 @@ SRC_URI += "file://lightmediascanner.service"
 
 inherit systemd
 
-SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = ""
-SYSTEMD_SERVICE_${PN} += "lightmediascanner.service"
-
 do_install_append() {
        # Install LMS systemd service
        if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-              install -p -D ${WORKDIR}/lightmediascanner.service ${D}${systemd_unitdir}/system/lightmediascanner.service
+              install -p -D ${WORKDIR}/lightmediascanner.service ${D}${systemd_user_unitdir}/lightmediascanner.service
+
+              # 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}/lightmediascanner.service ${D}/etc/systemd/user/dbus-org.lightmediascanner.service
+              ln -sf ${systemd_user_unitdir}/lightmediascanner.service ${D}/etc/systemd/user/default.target.wants/lightmediascanner.service
        fi
 }
+
+FILES_${PN} += " \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_user_unitdir}/lightmediascanner.service', '', d)} \
+    "
-- 
2.16.6