diff --git a/man/systemd.timer.xml b/man/systemd.timer.xml
index 9fe7ff3255..84c5bb564c 100644
--- a/man/systemd.timer.xml
+++ b/man/systemd.timer.xml
@@ -81,10 +81,12 @@
units involved with early boot or late system shutdown should disable the
DefaultDependencies= option.
- Timer units
- with at least one OnCalendar= directive will have an additional After=
- dependency on time-sync.target to avoid being started before the system clock has been
- correctly set.
+ Timer units with at least one OnCalendar= directive acquire a pair
+ of additional After= dependencies on time-set.target and
+ time-sync.target, in order to avoid being started before the system clock has
+ been correctly set. See
+ systemd.special7
+ for details on these two targets.
diff --git a/src/basic/special.h b/src/basic/special.h
index d55b3289de..b9b7be7a7d 100644
--- a/src/basic/special.h
+++ b/src/basic/special.h
@@ -42,6 +42,7 @@
#define SPECIAL_SWAP_TARGET "swap.target"
#define SPECIAL_NETWORK_ONLINE_TARGET "network-online.target"
#define SPECIAL_TIME_SYNC_TARGET "time-sync.target" /* LSB's $time */
+#define SPECIAL_TIME_SET_TARGET "time-set.target"
#define SPECIAL_BASIC_TARGET "basic.target"
/* LSB compatibility */
diff --git a/src/core/timer.c b/src/core/timer.c
index f42c86da76..32abdb74d7 100644
--- a/src/core/timer.c
+++ b/src/core/timer.c
@@ -99,13 +99,20 @@ static int timer_add_default_dependencies(Timer *t) {
if (r < 0)
return r;
- LIST_FOREACH(value, v, t->values)
- if (v->base == TIMER_CALENDAR) {
- r = unit_add_dependency_by_name(UNIT(t), UNIT_AFTER, SPECIAL_TIME_SYNC_TARGET, true, UNIT_DEPENDENCY_DEFAULT);
+ LIST_FOREACH(value, v, t->values) {
+ const char *target;
+
+ if (v->base != TIMER_CALENDAR)
+ continue;
+
+ FOREACH_STRING(target, SPECIAL_TIME_SYNC_TARGET, SPECIAL_TIME_SET_TARGET) {
+ r = unit_add_dependency_by_name(UNIT(t), UNIT_AFTER, target, true, UNIT_DEPENDENCY_DEFAULT);
if (r < 0)
return r;
- break;
}
+
+ break;
+ }
}
return unit_add_two_dependencies_by_name(UNIT(t), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, true, UNIT_DEPENDENCY_DEFAULT);
diff --git a/units/systemd-timesyncd.service.in b/units/systemd-timesyncd.service.in
index 62120d8190..c0d63f5c70 100644
--- a/units/systemd-timesyncd.service.in
+++ b/units/systemd-timesyncd.service.in
@@ -16,7 +16,7 @@ DefaultDependencies=no
After=systemd-sysusers.service
Before=time-set.target sysinit.target shutdown.target
Conflicts=shutdown.target
-Wants=time-set.target time-sync.target
+Wants=time-set.target
[Service]
AmbientCapabilities=CAP_SYS_TIME