tizen: Add additional unit for "unified" user session 30/204130/1 accepted/tizen/unified/20190503.110445 submit/tizen/20190503.055918
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Fri, 19 Apr 2019 10:31:23 +0000 (12:31 +0200)
committerMateusz Moscicki <m.moscicki2@partner.samsung.com>
Fri, 19 Apr 2019 13:33:46 +0000 (15:33 +0200)
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: Ibca930bd95b5c994e1655d616a940feea8368f44

packaging/contacts-service-mobile@.service [new file with mode: 0644]
packaging/contacts-service.spec
packaging/contacts-service@.service [new file with mode: 0644]
packaging/contacts-service@.socket [new file with mode: 0644]

diff --git a/packaging/contacts-service-mobile@.service b/packaging/contacts-service-mobile@.service
new file mode 100644 (file)
index 0000000..36a9132
--- /dev/null
@@ -0,0 +1,17 @@
+[Unit]
+PartOf=userlogin@%i.target
+Description=Start the Contacts service helper service
+
+[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
+Type=simple
+ExecStart=/usr/bin/contacts-service-ipcd
+Restart=on-failure
+RestartSec=1
+
+[Install]
+WantedBy=user-default@.target
+
index f3ac3bf..9d3e605 100644 (file)
@@ -8,6 +8,9 @@ Source0:    %{name}-%{version}.tar.gz
 Source1:    %{name}.service
 Source2:    %{name}.socket
 Source3:    %{name}-mobile.service
+Source5:    %{name}@.service
+Source6:    %{name}@.socket
+Source7:    %{name}-mobile@.service
 Source1001: %{name}.manifest
 BuildRequires: cmake
 BuildRequires: pkgconfig(db-util)
@@ -94,17 +97,28 @@ install -m 0644 %SOURCE3 %{buildroot}%{_unitdir_user}/contacts-service.service.m
 install -m 0644 %SOURCE1 %{buildroot}%{_unitdir_user}/contacts-service.service
 ln -s ../contacts-service.service %{buildroot}%{_unitdir_user}/default.target.wants/contacts-service.service
 
+mkdir -p %{buildroot}%{_unitdir}/user-default@.target.wants
+install -m 0644 %SOURCE7 %{buildroot}%{_unitdir}/contacts-service@.service.mobile
+install -m 0644 %SOURCE5 %{buildroot}%{_unitdir}/contacts-service@.service
+ln -s ../contacts-service@.service %{buildroot}%{_unitdir}/user-default@.target.wants/contacts-service@.service
+
 mkdir -p %{buildroot}%{_unitdir_user}/sockets.target.wants
 install -m 0644 %SOURCE2 %{buildroot}%{_unitdir_user}/contacts-service.socket
 ln -s ../contacts-service.socket %{buildroot}%{_unitdir_user}/sockets.target.wants/contacts-service.socket
 
+mkdir -p %{buildroot}%{_unitdir}/user-sockets@.target.wants
+install -m 0644 %SOURCE6 %{buildroot}%{_unitdir}/contacts-service@.socket
+ln -s ../contacts-service@.socket %{buildroot}%{_unitdir}/user-sockets@.target.wants/contacts-service@.socket
+
 %post
 _PROFILE=`grep "TZ_BUILD_PROFILE" "/etc/tizen-build.conf" | awk -F '=' '{print $2}'`
 if [ "$_PROFILE" != "mobile" ]
 then
        rm %{_unitdir_user}/contacts-service.service.mobile
+       rm %{_unitdir}/contacts-service@.service.mobile
 else
-       mv %{_unitdir_user}/contacts-service.service.mobile %{_unitdir_user}/contacts-service.service
+       mv %{_unitdir_user}/contacts-service.service.mobile %{_unitdir}/contacts-service.service
+       mv %{_unitdir}/contacts-service@.service.mobile %{_unitdir}/contacts-service@.service
 fi
 
 %post test
@@ -125,6 +139,11 @@ chsmack -e "User" /usr/bin/contacts-service-test
 %{_unitdir_user}/default.target.wants/contacts-service.service
 %{_unitdir_user}/sockets.target.wants/contacts-service.socket
 %{_unitdir_user}/contacts-service.socket
+%{_unitdir}/contacts-service@.service
+%{_unitdir}/contacts-service@.service.mobile
+%{_unitdir}/user-default@.target.wants/contacts-service@.service
+%{_unitdir}/user-sockets@.target.wants/contacts-service@.socket
+%{_unitdir}/contacts-service@.socket
 %license LICENSE.APLv2
 
 %files -n lib%{name}
diff --git a/packaging/contacts-service@.service b/packaging/contacts-service@.service
new file mode 100644 (file)
index 0000000..929a218
--- /dev/null
@@ -0,0 +1,18 @@
+[Unit]
+PartOf=userlogin@%i.target
+Description=Start the Contacts service helper service
+
+[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
+Type=simple
+Environment="CMD=timeout" "TIME=90"
+ExecStart=/usr/bin/contacts-service-ipcd $CMD $TIME
+Restart=on-failure
+RestartSec=1
+
+[Install]
+WantedBy=user-default@.target
+
diff --git a/packaging/contacts-service@.socket b/packaging/contacts-service@.socket
new file mode 100644 (file)
index 0000000..3af112f
--- /dev/null
@@ -0,0 +1,13 @@
+[Unit]
+PartOf=userlogin@%i.target
+DefaultDependencies=no
+After=systemd-logind.service
+Description=Contacts Service socket
+
+[Socket]
+SocketUser=%i
+ListenStream=/run/user/%i/system_share/.contacts_svc_ipc
+Service=contacts-service@%i.service
+
+[Install]
+WantedBy=user-sockets@.target