summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorINSUN PYO <insun.pyo@samsung.com>2020-10-26 18:14:28 +0900
committerINSUN PYO <insun.pyo@samsung.com>2020-11-12 13:23:29 +0900
commitb664b5d451eaf75733095016ed5dfc4fc38ff147 (patch)
treee9dfd2d131a52afb7c0f3e0429812cc5c4db7874
parent00188d6da97fd647ab60be59031824c2c2d97cf6 (diff)
downloadsystemd-b664b5d451eaf75733095016ed5dfc4fc38ff147.tar.gz
systemd-b664b5d451eaf75733095016ed5dfc4fc38ff147.tar.bz2
systemd-b664b5d451eaf75733095016ed5dfc4fc38ff147.zip
Delayed target: add delaying the start of delayed.targetsubmit/tizen/20201112.063443accepted/tizen/unified/20201113.130833
If /etc/systemd/delayed-target.conf exists and has DelayedTargetWait environment value, delayed.target starts after DelayedTargetWait seconds. If the /tmp/.systemd_delayed_target_wait file is created within the delayed time, delayed.target starts immediately. Change-Id: I4ad1ff6a8084ed9db7d630f533a9348b41decbf0
-rw-r--r--packaging/delayed-target-trigger.sh29
-rw-r--r--packaging/systemd.spec3
-rw-r--r--units/system-delayed-target-trigger.service.in2
3 files changed, 34 insertions, 0 deletions
diff --git a/packaging/delayed-target-trigger.sh b/packaging/delayed-target-trigger.sh
new file mode 100644
index 0000000000..cbc129057d
--- /dev/null
+++ b/packaging/delayed-target-trigger.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+# /etc/systemd/delayed-target.conf does not exist
+if [ -z "$DelayedTargetWait" ]
+then
+ echo "Start delayed.target without any delay."
+ exit 0;
+fi
+
+echo "Wait $DelayedTargetWait seconds for delayed.target to start."
+
+index=0
+while [ $index -lt "$DelayedTargetWait" ]
+do
+ if [ -f /tmp/.systemd_delayed_target_wait ]
+ then
+ rm -f /tmp/.systemd_delayed_target_wait
+ break;
+ fi
+
+ ((index++))
+
+ sleep 1
+done
+
+echo "Start delayed.target after $index seconds delay."
+
+exit 0;
diff --git a/packaging/systemd.spec b/packaging/systemd.spec
index 78ee2ad00b..37101db239 100644
--- a/packaging/systemd.spec
+++ b/packaging/systemd.spec
@@ -64,6 +64,7 @@ Source6: org.tizen.system.conf
Source7: sysctl-tizen-override.conf
Source8: send-booting-done.c
Source9: wait-target-done.c
+Source10: delayed-target-trigger.sh
Source1001: systemd.manifest
BuildRequires: gperf
BuildRequires: intltool >= 0.40.0
@@ -374,6 +375,7 @@ ln -sf ./libsystemd.pc %{buildroot}%{_libdir}/pkgconfig/libsystemd-login.pc
install -m 0755 %{SOURCE4} %{buildroot}%{_bindir}/wait-default-target.sh
install -m 0755 %{SOURCE5} %{buildroot}%{_bindir}/wait-delayed-target.sh
install -m 0644 %{SOURCE6} %{buildroot}%{dbuspolicydir}/system.d/org.tizen.system.conf
+install -m 0755 %{SOURCE10} %{buildroot}%{_bindir}/delayed-target-trigger.sh
# Tizen sysctl values overriding default systemd values
install -m 0644 %{SOURCE7} %{buildroot}%{_sysconfdir}/sysctl.d/
@@ -680,6 +682,7 @@ fi
%{_bindir}/wait-default-target.sh
%{_bindir}/wait-delayed-target.sh
+%{_bindir}/delayed-target-trigger.sh
%exclude %{_prefix}/lib/systemd/system/runlevel0.target
%exclude %{_prefix}/lib/systemd/system/runlevel1.target
%exclude %{_prefix}/lib/systemd/system/runlevel2.target
diff --git a/units/system-delayed-target-trigger.service.in b/units/system-delayed-target-trigger.service.in
index 8f3b6dd2a8..491e347405 100644
--- a/units/system-delayed-target-trigger.service.in
+++ b/units/system-delayed-target-trigger.service.in
@@ -12,7 +12,9 @@ RefuseManualStop=yes
# At least one service must remain, and systemd will not enter the Startupfinished state.
# So this unit, which is oneshot type, becomes that one service.
Type=oneshot
+EnvironmentFile=-/etc/systemd/delayed-target.conf
ExecStart=@rootbindir@/wait-default-target.sh System
+ExecStart=@rootbindir@/delayed-target-trigger.sh
ExecStart=@rootbindir@/systemctl --no-block start delayed.target
RemainAfterExit=yes
SmackProcessLabel=System