tizen: Add additional unit for "unified" user session 62/204562/1 accepted/tizen/unified/20190502.112900 submit/tizen/20190502.022402
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Tue, 23 Apr 2019 12:13:24 +0000 (14:13 +0200)
committerMateusz Moscicki <m.moscicki2@partner.samsung.com>
Tue, 23 Apr 2019 13:19:33 +0000 (15:19 +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: I62379f690efdb0b52bf22c671d5e7a42b6678e0e

packaging/pubkey-pinning.spec
systemd/CMakeLists.txt
systemd/pubkey-pinning-popup-deprecated@.service.in [new file with mode: 0644]
systemd/pubkey-pinning-popup-deprecated@.socket.in [new file with mode: 0644]
systemd/pubkey-pinning-popup@.service.in [new file with mode: 0644]
systemd/pubkey-pinning-popup@.socket.in [new file with mode: 0644]

index e043c0f..b4dc915 100644 (file)
@@ -92,7 +92,8 @@ export LDFLAGS+="-Wl,--rpath=%_prefix/lib"
 %endif
         -DCXXABI=cxx11 \
         -DCMAKE_VERBOSE_MAKEFILE=ON \
-        -DSYSTEMD_UNIT_DIR=%_unitdir_user
+        -DSYSTEMD_UNIT_DIR=%_unitdir_user \
+        -DSYSTEMD_UNIT_SYSTEM_DIR=%_unitdir
 
 make %{?_smp_mflags}
 
@@ -115,6 +116,10 @@ pushd %{buildroot}%_unitdir_user/
 mv %name-popup.* %{_builddir}/%{name}-%{version}
 popd
 
+pushd %{buildroot}%_unitdir/
+mv %name-popup@.* %{_builddir}/%{name}-%{version}
+popd
+
 make clean
 
 %{!?build_type:%define build_type "Release"}
@@ -128,14 +133,17 @@ make clean
 %endif
         -DCXXABI=cxx03 \
         -DCMAKE_VERBOSE_MAKEFILE=ON \
-        -DSYSTEMD_UNIT_DIR=%_unitdir_user
+        -DSYSTEMD_UNIT_DIR=%_unitdir_user \
+        -DSYSTEMD_UNIT_SYSTEM_DIR=%_unitdir
 
 make %{?_smp_mflags}
 
 %install
 %make_install
 mkdir -p %buildroot%_unitdir_user/sockets.target.wants
+mkdir -p %buildroot%_unitdir/user-sockets@.target.wants
 ln -sf ../%name-popup-deprecated.socket %buildroot%_unitdir_user/sockets.target.wants/%name-popup-deprecated.socket
+ln -sf ../%name-popup-deprecated@.socket %buildroot%_unitdir/user-sockets@.target.wants/%name-popup-deprecated@.socket
 %find_lang pubkey-pinning
 
 #move all we have build for cxx11 abi
@@ -147,8 +155,11 @@ for FILE in tpkp-internal*; do mv "$FILE" "%{buildroot}%{_bindir}/$FILE"; done
 mv tpkp-popup %{buildroot}%{_bindir}
 mv %name-popup.socket  %{buildroot}%_unitdir_user
 mv %name-popup.service  %{buildroot}%_unitdir_user
+mv %name-popup@.socket  %{buildroot}%_unitdir
+mv %name-popup@.service  %{buildroot}%_unitdir
 mv tpkp*.pc %{buildroot}%{_libdir}/pkgconfig/
 ln -sf %_unitdir_user/%name-popup.socket %buildroot%_unitdir_user/sockets.target.wants/%name-popup.socket
+ln -sf %_unitdir/%name-popup@.socket %buildroot%_unitdir/user-sockets@.target.wants/%name-popup@.socket
 popd
 
 %post
@@ -211,6 +222,9 @@ systemctl daemon-reload
 %_unitdir_user/%name-popup-deprecated.service
 %_unitdir_user/%name-popup-deprecated.socket
 %_unitdir_user/sockets.target.wants/%name-popup-deprecated.socket
+%_unitdir/%name-popup-deprecated@.service
+%_unitdir/%name-popup-deprecated@.socket
+%_unitdir/user-sockets@.target.wants/%name-popup-deprecated@.socket
 %_bindir/tpkp-popup-deprecated
 
 %files -f pubkey-pinning.lang
@@ -227,6 +241,9 @@ systemctl daemon-reload
 %_unitdir_user/%name-popup.service
 %_unitdir_user/%name-popup.socket
 %_unitdir_user/sockets.target.wants/%name-popup.socket
+%_unitdir/%name-popup@.service
+%_unitdir/%name-popup@.socket
+%_unitdir/user-sockets@.target.wants/%name-popup@.socket
 %_bindir/tpkp-popup
 
 %files devel
index 47d702a..d7b3650 100644 (file)
@@ -1,6 +1,8 @@
 IF (CXXABI STREQUAL "cxx03")
 CONFIGURE_FILE(pubkey-pinning-popup-deprecated.service.in pubkey-pinning-popup-deprecated.service @ONLY)
 CONFIGURE_FILE(pubkey-pinning-popup-deprecated.socket.in pubkey-pinning-popup-deprecated.socket @ONLY)
+CONFIGURE_FILE(pubkey-pinning-popup-deprecated@.service.in pubkey-pinning-popup-deprecated@.service @ONLY)
+CONFIGURE_FILE(pubkey-pinning-popup-deprecated@.socket.in pubkey-pinning-popup-deprecated@.socket @ONLY)
 
 INSTALL(
        FILES
@@ -9,9 +11,19 @@ INSTALL(
        DESTINATION
                ${SYSTEMD_UNIT_DIR}
        )
+
+INSTALL(
+       FILES
+               pubkey-pinning-popup-deprecated@.service
+               pubkey-pinning-popup-deprecated@.socket
+       DESTINATION
+               ${SYSTEMD_UNIT_SYSTEM_DIR}
+       )
 ELSE (CXXABI NOT STREQUAL "cxx03")
 CONFIGURE_FILE(pubkey-pinning-popup.service.in pubkey-pinning-popup.service @ONLY)
 CONFIGURE_FILE(pubkey-pinning-popup.socket.in pubkey-pinning-popup.socket @ONLY)
+CONFIGURE_FILE(pubkey-pinning-popup@.service.in pubkey-pinning-popup@.service @ONLY)
+CONFIGURE_FILE(pubkey-pinning-popup@.socket.in pubkey-pinning-popup@.socket @ONLY)
 
 INSTALL(
        FILES
@@ -20,4 +32,12 @@ INSTALL(
        DESTINATION
                ${SYSTEMD_UNIT_DIR}
        )
+
+INSTALL(
+       FILES
+               pubkey-pinning-popup@.service
+               pubkey-pinning-popup@.socket
+       DESTINATION
+               ${SYSTEMD_UNIT_SYSTEM_DIR}
+       )
 ENDIF (CXXABI STREQUAL "cxx03")
diff --git a/systemd/pubkey-pinning-popup-deprecated@.service.in b/systemd/pubkey-pinning-popup-deprecated@.service.in
new file mode 100644 (file)
index 0000000..f1a07bf
--- /dev/null
@@ -0,0 +1,13 @@
+[Unit]
+PartOf=userlogin@%i.target
+Description=TPKP(Tizen Public Key Pinning) popup 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
+ExecStart=/usr/bin/tpkp-popup-deprecated
+Type=simple
+EnvironmentFile=/run/tizen-system-env
+Sockets=pubkey-pinning-popup-deprecated@%i.socket
diff --git a/systemd/pubkey-pinning-popup-deprecated@.socket.in b/systemd/pubkey-pinning-popup-deprecated@.socket.in
new file mode 100644 (file)
index 0000000..e207fbd
--- /dev/null
@@ -0,0 +1,13 @@
+[Unit]
+PartOf=userlogin@%i.target
+DefaultDependencies=no
+After=systemd-logind.service
+
+[Socket]
+SocketUser=%i
+ListenStream=@SOCK_PATH@
+SocketMode=0777
+Service=pubkey-pinning-popup-deprecated@%i.service
+
+[Install]
+WantedBy=user-sockets@.target
diff --git a/systemd/pubkey-pinning-popup@.service.in b/systemd/pubkey-pinning-popup@.service.in
new file mode 100644 (file)
index 0000000..034ec26
--- /dev/null
@@ -0,0 +1,13 @@
+[Unit]
+PartOf=userlogin@%i.target
+Description=TPKP(Tizen Public Key Pinning) popup 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
+ExecStart=/usr/bin/tpkp-popup
+Type=simple
+EnvironmentFile=/run/tizen-system-env
+Sockets=pubkey-pinning-popup@%i.socket
diff --git a/systemd/pubkey-pinning-popup@.socket.in b/systemd/pubkey-pinning-popup@.socket.in
new file mode 100644 (file)
index 0000000..e24d7b9
--- /dev/null
@@ -0,0 +1,13 @@
+[Unit]
+PartOf=userlogin@%i.target
+DefaultDependencies=no
+After=systemd-logind.service
+
+[Socket]
+SocketUser=%i
+ListenStream=@SOCK_PATH@
+SocketMode=0777
+Service=pubkey-pinning-popup@%i.service
+
+[Install]
+WantedBy=user-sockets@.target