Add delayed target 58/207558/4 accepted/tizen/unified/20190618.045943 submit/tizen/20190617.014724
authorINSUN PYO <insun.pyo@samsung.com>
Fri, 7 Jun 2019 06:30:41 +0000 (15:30 +0900)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Mon, 17 Jun 2019 01:55:56 +0000 (01:55 +0000)
Change-Id: I0527d1387500c699be0fbc319c702a77d9ae587b

Makefile.am
packaging/systemd.spec
packaging/wait_systemd_startupfinished.sh [new file with mode: 0644]
units/delayed.service [new file with mode: 0644]
units/delayed.target [new file with mode: 0644]
units/user/delayed.service [new file with mode: 0644]
units/user/delayed.target [new file with mode: 0644]

index a8868aa..d042565 100644 (file)
@@ -539,6 +539,13 @@ USERLOGIN_TARGET_WANTS += \
 dist_systemunit_DATA += \
        $(dist_systemunit_DATA_busnames)
 
+dist_systemunit_DATA += \
+       units/delayed.target \
+       units/delayed.service
+
+GRAPHICAL_TARGET_WANTS += \
+       delayed.service
+
 dist_systemunit_DATA_busnames += \
        units/busnames.target
 
@@ -588,6 +595,13 @@ dist_userunit_DATA = \
        units/user/default.target \
        units/user/exit.target
 
+dist_userunit_DATA += \
+       units/user/delayed.target \
+       units/user/delayed.service
+
+USER_DEFAULT_TARGET_WANTS += \
+       delayed.service
+
 nodist_userunit_DATA = \
        units/user/systemd-exit.service
 
index afb2a03..f022076 100644 (file)
@@ -25,6 +25,7 @@ Source0:        https://github.com/systemd/systemd/archive/v%{version}.tar.gz
 Source1:        pamconsole-tmp.conf
 Source2:        %{name}-rpmlintrc
 Source3:        test-runner.c
+Source4:        wait_systemd_startupfinished.sh
 Source1001:     systemd.manifest
 BuildRequires:  gperf
 BuildRequires:  intltool >= 0.40.0
@@ -309,6 +310,9 @@ ln -sf ./libsystemd.pc %{buildroot}%{_libdir}/pkgconfig/libsystemd-id128.pc
 ln -sf ./libsystemd.pc %{buildroot}%{_libdir}/pkgconfig/libsystemd-journal.pc
 ln -sf ./libsystemd.pc %{buildroot}%{_libdir}/pkgconfig/libsystemd-login.pc
 
+# Delayed target
+install -m 0755 %{SOURCE4} %{buildroot}%{_bindir}/wait_systemd_startupfinished.sh
+
 # end of install
 %pre
 /usr/bin/getent group cdrom >/dev/null 2>&1 || /usr/sbin/groupadd -r -g 11 cdrom >/dev/null 2>&1 || :
@@ -523,6 +527,7 @@ fi
 %dir %{_prefix}/lib/systemd/system/userlogin@.target.wants
 %dir %{_prefix}/lib/systemd/user
 %dir %{_prefix}/lib/systemd/network
+%dir %{_prefix}/lib/systemd/user/default.target.wants
 %{_prefix}/lib/systemd/user/basic.target
 %{_prefix}/lib/systemd/user/exit.target
 %{_prefix}/lib/systemd/user/printer.target
@@ -539,6 +544,9 @@ fi
 %{_prefix}/lib/systemd/user/default.target
 %{_prefix}/lib/systemd/network/99-default.link
 %exclude %{_prefix}/lib/systemd/system-preset/90-systemd.preset
+%{_prefix}/lib/systemd/user/delayed.target
+%{_prefix}/lib/systemd/user/delayed.service
+%{_prefix}/lib/systemd/user/default.target.wants/delayed.service
 
 %{_prefix}/lib/systemd/libsystemd-shared-231.so
 %{_prefix}/lib/systemd/libsystemd-shared.so
@@ -592,6 +600,8 @@ fi
 
 %{_localstatedir}/log/journal
 
+%{_bindir}/wait_systemd_startupfinished.sh
+
 %files -n libsystemd
 %manifest %{name}.manifest
 %license LICENSE.LGPL2.1
diff --git a/packaging/wait_systemd_startupfinished.sh b/packaging/wait_systemd_startupfinished.sh
new file mode 100644 (file)
index 0000000..73d6f3d
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/bash
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+IS_USER_SESSION=" "
+if [ "$1" = "--user" ]
+then
+       IS_USER_SESSION="--user"
+fi
+
+WAIT_CMD="/usr/bin/systemctl "${IS_USER_SESSION}" is-system-running"
+EXEC_CMD="/usr/bin/systemctl --no-block "${IS_USER_SESSION}" start delayed.target"
+
+echo "Wait CMD:" ${WAIT_CMD}
+echo "Exec CMD:" ${EXEC_CMD}
+
+while [ 1 ]
+do
+       STATE=$($WAIT_CMD)
+       echo ${STATE}
+
+       if [ ${STATE} = "running" -o ${STATE} = "degraded" ]
+       then
+               $($EXEC_CMD)
+               exit 0;
+       fi
+
+       /usr/bin/sleep 1
+done
+
diff --git a/units/delayed.service b/units/delayed.service
new file mode 100644 (file)
index 0000000..8fdf581
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+Description=Trigger System Delayed services
+Requires=graphical.target
+After=graphical.target
+DefaultDependencies=no
+RefuseManualStart=yes
+RefuseManualStop=yes
+
+[Service]
+ExecStart=/usr/bin/wait_systemd_startupfinished.sh
+RemainAfterExit=true
+SmackProcessLabel=System
diff --git a/units/delayed.target b/units/delayed.target
new file mode 100644 (file)
index 0000000..606868e
--- /dev/null
@@ -0,0 +1,2 @@
+[Unit]
+Description=System Delayed Services
diff --git a/units/user/delayed.service b/units/user/delayed.service
new file mode 100644 (file)
index 0000000..a03a476
--- /dev/null
@@ -0,0 +1,11 @@
+[Unit]
+Description=Trigger User Delayed Services
+Requires=default.target
+After=default.target
+DefaultDependencies=no
+RefuseManualStart=yes
+RefuseManualStop=yes
+
+[Service]
+ExecStart=/usr/bin/wait_systemd_startupfinished.sh --user
+RemainAfterExit=true
diff --git a/units/user/delayed.target b/units/user/delayed.target
new file mode 100644 (file)
index 0000000..ae06405
--- /dev/null
@@ -0,0 +1,2 @@
+[Unit]
+Description=User Delayed Services