tizen: Add additional unit for "unified" user session 32/204132/4 accepted/tizen/unified/20190510.111111 submit/tizen/20190509.015828
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Fri, 19 Apr 2019 10:53:02 +0000 (12:53 +0200)
committerINSUN PYO <insun.pyo@samsung.com>
Tue, 7 May 2019 08:29:19 +0000 (17:29 +0900)
The unified user session is about moving user session units, managed by
systemd --user, to main systemd, where it's managed as part of newly
created user@.target.

user@.target will contain same units as previously available in user/,
with same UID and environment setup.  systemd instance is used for unit
to be able to specify UID (inherited from user@.target).

The rationale behind this work is following:

* VD requirement to remove user session support
* boot time optimization requirements, due to:

   + 'systemd --user' taking 1s its own startup that could be used for
     unit startup
   + ability to better rearrange units if these managed by one systemd
     instance

Unit installed by this commit will not be used till user login mechanism
will be changed in systemd package (via changing pam_systemd to start
user@.target, rather than user@.service).

Change-Id: I524768f116ca91d812ae0884adbb300e52817975

bus/Makefile.am
bus/systemd-system/dbus@.service.in [new file with mode: 0644]
bus/systemd-system/dbus@.socket.in [new file with mode: 0644]
configure.ac
packaging/dbus.spec

index 5f28a25..6558ee1 100644 (file)
@@ -264,6 +264,9 @@ endif
 if DBUS_ENABLE_USER_SESSION
        $(mkinstalldirs) $(DESTDIR)$(systemduserunitdir)/sockets.target.wants
        ln -fs ../dbus.socket $(DESTDIR)$(systemduserunitdir)/sockets.target.wants/dbus.socket
+
+       $(mkinstalldirs) $(DESTDIR)$(systemdsystemunitdir)/user-sockets@.target.wants
+       ln -fs ../dbus@.socket $(DESTDIR)$(systemdsystemunitdir)/user-sockets@.target.wants/dbus@.socket
 endif
 
 if DBUS_UNIX
@@ -319,11 +322,15 @@ SCRIPT_IN_FILES += \
        dbus.socket.in \
        systemd-user/dbus.service.in \
        systemd-user/dbus.socket.in \
+       systemd-system/dbus@.service.in \
+       systemd-system/dbus@.socket.in \
        $(NULL)
 
 systemdsystemunit_DATA = \
        dbus.service \
-       dbus.socket
+       dbus.socket \
+       systemd-system/dbus@.service \
+       systemd-system/dbus@.socket
 endif
 
 if DBUS_ENABLE_USER_SESSION
diff --git a/bus/systemd-system/dbus@.service.in b/bus/systemd-system/dbus@.service.in
new file mode 100644 (file)
index 0000000..e19b443
--- /dev/null
@@ -0,0 +1,17 @@
+[Unit]
+PartOf=userlogin@%i.target
+Description=D-Bus User Message Bus
+Documentation=man:dbus-daemon(1)
+DefaultDependencies=no
+Requires=dbus@%i.socket
+
+[Service]
+User=%i
+Environment=DBUS_SESSION_BUS_ADDRESS=kernel:path=/sys/fs/kdbus/%i-user/bus;unix:path=/run/user/%i/bus
+Environment=XDG_RUNTIME_DIR=/run/user/%i
+SmackProcessLabel=User
+ExecStart=@EXPANDED_BINDIR@/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation
+ExecReload=@EXPANDED_BINDIR@/dbus-send --print-reply --session --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ReloadConfig
+
+[Install]
+Also=dbus@.socket
diff --git a/bus/systemd-system/dbus@.socket.in b/bus/systemd-system/dbus@.socket.in
new file mode 100644 (file)
index 0000000..0684b28
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+PartOf=userlogin@%i.target
+DefaultDependencies=no
+After=systemd-logind.service
+Description=D-Bus User Message Bus Socket
+
+[Socket]
+SocketUser=%i
+ListenStream=/run/user/%i/bus
+
+[Install]
+Also=dbus.service
index 2cc116a..98e6833 100644 (file)
@@ -1923,6 +1923,8 @@ bus/dbus.service
 bus/dbus.socket
 bus/systemd-user/dbus.service
 bus/systemd-user/dbus.socket
+bus/systemd-system/dbus@.service
+bus/systemd-system/dbus@.socket
 Makefile
 dbus/Makefile
 bus/Makefile
index 4f97865..404a123 100644 (file)
@@ -340,6 +340,10 @@ popd
 %{_unitdir_user}/dbus.service
 %dir %{_unitdir_user}/sockets.target.wants
 %{_unitdir_user}/sockets.target.wants/dbus.socket
+%{_unitdir}/dbus@.socket
+%{_unitdir}/dbus@.service
+%dir %{_unitdir}/user-sockets@.target.wants
+%{_unitdir}/user-sockets@.target.wants/dbus@.socket
 %dir %{_sysconfdir}/dbus-1
 %dir %{_datadir}/dbus-1/session.d
 %dir %{_datadir}/dbus-1/system.d