tizen: Add additional unit for "unified" user session 26/204126/2
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Fri, 19 Apr 2019 08:28:46 +0000 (10:28 +0200)
committerInkyun Kil <inkyun.kil@samsung.com>
Thu, 2 May 2019 02:13:28 +0000 (02:13 +0000)
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:

* TV profile would benefit from 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: Ie65e0d078f4e4ce09c753f9ea1983b08d397bfa7

packaging/alarm-manager.spec
packaging/alarm-session-agent@.service [new file with mode: 0644]
packaging/alarm-session-agent@.socket [new file with mode: 0644]

index c384de7..193e5b3 100755 (executable)
@@ -10,6 +10,8 @@ Source2:    alarm-session-agent.service
 Source3:    alarm-session-agent.socket
 Source4:    alarm-manager.conf
 Source5:    99-rtc.rules
+Source6:    alarm-session-agent@.service
+Source7:    alarm-session-agent@.socket
 Requires(post): /sbin/ldconfig
 Requires(postun): /sbin/ldconfig
 
@@ -125,11 +127,15 @@ rm -rf %{buildroot}
 
 mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants
 mkdir -p %{buildroot}%{_unitdir_user}/sockets.target.wants
+mkdir -p %{buildroot}%{_unitdir}/user-sockets@.target.wants
 install -m 0644 %SOURCE1 %{buildroot}%{_unitdir}/alarm-server.service
 install -m 0644 %SOURCE2 %{buildroot}%{_unitdir_user}/alarm-session-agent.service
 install -m 0644 %SOURCE3 %{buildroot}%{_unitdir_user}/alarm-session-agent.socket
+install -m 0644 %SOURCE6 %{buildroot}%{_unitdir}/alarm-session-agent@.service
+install -m 0644 %SOURCE7 %{buildroot}%{_unitdir}/alarm-session-agent@.socket
 ln -s ../alarm-server.service %{buildroot}%{_unitdir}/multi-user.target.wants/alarm-server.service
 ln -sf ../alarm-session-agent.socket %{buildroot}%{_unitdir_user}/sockets.target.wants/alarm-session-agent.socket
+ln -sf ../alarm-session-agent@.socket %{buildroot}%{_unitdir}/user-sockets@.target.wants/alarm-session-agent@.socket
 mkdir -p %{buildroot}%{_tmpfilesdir}
 install -m 0644 %SOURCE4 %{buildroot}%{_tmpfilesdir}/alarm-manager.conf
 mkdir -p %{buildroot}%{_libdir}/udev/rules.d
@@ -164,7 +170,10 @@ fi
 %{_unitdir}/multi-user.target.wants/alarm-server.service
 %{_unitdir_user}/alarm-session-agent.service
 %{_unitdir_user}/alarm-session-agent.socket
+%{_unitdir}/alarm-session-agent@.service
+%{_unitdir}/alarm-session-agent@.socket
 %{_unitdir_user}/sockets.target.wants/alarm-session-agent.socket
+%{_unitdir}/user-sockets@.target.wants/alarm-session-agent@.socket
 %attr(0644,root,root) %{_datadir}/dbus-1/system-services/org.tizen.alarm.manager.service
 %license LICENSE
 %config %{_sysconfdir}/dbus-1/system.d/alarm-service.conf
diff --git a/packaging/alarm-session-agent@.service b/packaging/alarm-session-agent@.service
new file mode 100644 (file)
index 0000000..a4eb6ac
--- /dev/null
@@ -0,0 +1,13 @@
+[Unit]
+PartOf=userlogin@%i.target
+Description=Start the alarm agent
+
+[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=/usr/bin/alarm_session_agent
+
+[Install]
+WantedBy=user-default@.target
diff --git a/packaging/alarm-session-agent@.socket b/packaging/alarm-session-agent@.socket
new file mode 100644 (file)
index 0000000..34f2bea
--- /dev/null
@@ -0,0 +1,13 @@
+[Unit]
+PartOf=userlogin@%i.target
+DefaultDependencies=no
+After=systemd-logind.service
+
+[Socket]
+SocketUser=%i
+ListenStream=/run/alarm_agent/%i
+DirectoryMode=0777
+ExecStartPost=/usr/bin/chmod 0777 /run/alarm_agent/%i
+
+[Install]
+WantedBy=user-sockets@.target