units involved with early boot or late system shutdown should disable the
<varname>DefaultDependencies=</varname> option.</para></listitem>
- <listitem><para>Timer units
- with at least one <varname>OnCalendar=</varname> directive will have an additional <varname>After=</varname>
- dependency on <filename>time-sync.target</filename> to avoid being started before the system clock has been
- correctly set.</para></listitem>
+ <listitem><para>Timer units with at least one <varname>OnCalendar=</varname> directive acquire a pair
+ of additional <varname>After=</varname> dependencies on <filename>time-set.target</filename> and
+ <filename>time-sync.target</filename>, in order to avoid being started before the system clock has
+ been correctly set. See
+ <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+ for details on these two targets.</para></listitem>
</itemizedlist>
</refsect2>
</refsect1>
#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 */
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);
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