From 2c86cedf39e3a08268e031f976c4568e8906201c Mon Sep 17 00:00:00 2001 From: Mateusz Moscicki Date: Tue, 23 Apr 2019 14:13:24 +0200 Subject: [PATCH] tizen: Add additional unit for "unified" user session 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 | 21 +++++++++++++++++++-- systemd/CMakeLists.txt | 20 ++++++++++++++++++++ systemd/pubkey-pinning-popup-deprecated@.service.in | 13 +++++++++++++ systemd/pubkey-pinning-popup-deprecated@.socket.in | 13 +++++++++++++ systemd/pubkey-pinning-popup@.service.in | 13 +++++++++++++ systemd/pubkey-pinning-popup@.socket.in | 13 +++++++++++++ 6 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 systemd/pubkey-pinning-popup-deprecated@.service.in create mode 100644 systemd/pubkey-pinning-popup-deprecated@.socket.in create mode 100644 systemd/pubkey-pinning-popup@.service.in create mode 100644 systemd/pubkey-pinning-popup@.socket.in diff --git a/packaging/pubkey-pinning.spec b/packaging/pubkey-pinning.spec index e043c0f..b4dc915 100644 --- a/packaging/pubkey-pinning.spec +++ b/packaging/pubkey-pinning.spec @@ -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 diff --git a/systemd/CMakeLists.txt b/systemd/CMakeLists.txt index 47d702a..d7b3650 100644 --- a/systemd/CMakeLists.txt +++ b/systemd/CMakeLists.txt @@ -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 index 0000000..f1a07bf --- /dev/null +++ b/systemd/pubkey-pinning-popup-deprecated@.service.in @@ -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 index 0000000..e207fbd --- /dev/null +++ b/systemd/pubkey-pinning-popup-deprecated@.socket.in @@ -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 index 0000000..034ec26 --- /dev/null +++ b/systemd/pubkey-pinning-popup@.service.in @@ -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 index 0000000..e24d7b9 --- /dev/null +++ b/systemd/pubkey-pinning-popup@.socket.in @@ -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 -- 2.7.4