chiark / gitweb /
time-sync-wait: add service (#8494)
authorPeter A. Bigot <pab@pabigot.com>
Wed, 21 Mar 2018 11:42:04 +0000 (06:42 -0500)
committerSven Eden <yamakuzure@gmx.net>
Fri, 24 Aug 2018 14:47:08 +0000 (16:47 +0200)
This one-shot service waits until the kernel time has been set to
synchronized.

man/elogind-time-wait-sync.service.xml [new file with mode: 0644]
man/rules/meson.build
meson.build

diff --git a/man/elogind-time-wait-sync.service.xml b/man/elogind-time-wait-sync.service.xml
new file mode 100644 (file)
index 0000000..79c9dff
--- /dev/null
@@ -0,0 +1,91 @@
+<?xml version='1.0'?> <!--*-nxml-*-->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+
+<!--
+  SPDX-License-Identifier: LGPL-2.1+
+
+  This file is part of elogind.
+
+  Copyright 2018 Peter A. Bigot
+
+  elogind is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as published by
+  the Free Software Foundation; either version 2.1 of the License, or
+  (at your option) any later version.
+
+  elogind is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with elogind; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="elogind-time-wait-sync.service" conditional='ENABLE_TIMESYNCD'>
+
+  <refentryinfo>
+    <title>elogind-time-wait-sync.service</title>
+    <productname>elogind</productname>
+
+    <authorgroup>
+      <author>
+        <contrib>Developer</contrib>
+        <firstname>Peter</firstname>
+        <surname>Bigot</surname>
+        <email>pab@pabigot.com</email>
+      </author>
+    </authorgroup>
+  </refentryinfo>
+
+  <refmeta>
+    <refentrytitle>elogind-time-wait-sync.service</refentrytitle>
+    <manvolnum>8</manvolnum>
+  </refmeta>
+
+  <refnamediv>
+    <refname>elogind-time-wait-sync.service</refname>
+    <refname>elogind-time-wait-sync</refname>
+    <refpurpose>Wait Until Kernel Time Synchronized</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <para><filename>elogind-time-wait-sync.service</filename></para>
+    <para><filename>/usr/lib/elogind/elogind-time-wait-sync</filename></para>
+  </refsynopsisdiv>
+
+  <refsect1>
+    <title>Description</title>
+
+    <para><filename>elogind-time-wait-sync</filename> is a system service that delays the start of units that depend on
+    <filename>time-sync.target</filename> until <filename>elogind-timesyncd.service</filename> or something else has
+    set the system time and marked it as synchronized.  Reaching this state generally requires synchronization with an
+    external source, such as an NTP server.</para>
+
+    <para>When this unit is not enabled the <filename>time-sync.target</filename> synchronization point may be reached
+    as soon as the system time is advanced by <filename>elogind-timesyncd.service</filename> to the time stored at the
+    last shutdown.  That time may not meet the expectations of dependent services that require an accurate
+    clock.</para>
+
+  </refsect1>
+
+  <refsect1>
+    <title>Notes</title>
+
+    <para>This service works correctly with a time synchronization service like
+    <filename>elogind-timesyncd.service</filename> that uses the same protocol as NTP to set the time from a
+    synchronized source.  When used with time synchronization services that follow a different protocol the event of
+    setting synchronized time may not be detected in which case this service will not complete.</para>
+  </refsect1>
+
+  <refsect1>
+    <title>See Also</title>
+    <para>
+      <citerefentry><refentrytitle>elogind</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+      <citerefentry><refentrytitle>elogind.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+      <citerefentry><refentrytitle>elogind-timesyncd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+    </para>
+  </refsect1>
+
+</refentry>
index 29ab3ec8d2efc3ccccdd0bda443cc85a4557175a..e33dc4393bf010461bcfdb33724c9801991c3d03 100644 (file)
 # Do not edit. Generated by make-man-rules.py.
 manpages = [
-['elogind-rc-local-generator', '8', [], ''],
- ['elogind', '8', [], ''],
- ['loginctl', '1', [], ''],
- ['logind.conf', '5', [], ''],
  ['pam_elogind', '8', [], 'HAVE_PAM'],
+['binfmt.d', '5', [], 'ENABLE_BINFMT'],
+ ['bootctl', '1', [], 'ENABLE_EFI'],
+ ['bootup', '7', [], ''],
+ ['busctl', '1', [], ''],
+ ['coredump.conf', '5', ['coredump.conf.d'], 'ENABLE_COREDUMP'],
+ ['coredumpctl', '1', [], 'ENABLE_COREDUMP'],
+ ['crypttab', '5', [], 'HAVE_LIBCRYPTSETUP'],
+ ['daemon', '7', [], ''],
+ ['dnssec-trust-anchors.d',
+  '5',
+  ['elogind.negative', 'elogind.positive'],
+  'ENABLE_RESOLVE'],
+ ['environment.d', '5', [], 'ENABLE_ENVIRONMENT_D'],
+ ['file-hierarchy', '7', [], ''],
+ ['halt', '8', ['poweroff', 'reboot'], ''],
+ ['hostname', '5', [], ''],
+ ['hostnamectl', '1', [], 'ENABLE_HOSTNAMED'],
+ ['hwdb', '7', [], 'ENABLE_HWDB'],
+ ['journal-remote.conf', '5', ['journal-remote.conf.d'], 'HAVE_MICROHTTPD'],
+ ['journal-upload.conf', '5', ['journal-upload.conf.d'], 'HAVE_MICROHTTPD'],
+ ['journalctl', '1', [], ''],
+ ['journald.conf', '5', ['journald.conf.d'], ''],
+ ['kernel-command-line', '7', [], ''],
+ ['kernel-install', '8', [], ''],
+ ['libudev', '3', [], ''],
+ ['loader.conf', '5', [], 'ENABLE_EFI'],
+ ['locale.conf', '5', [], ''],
+ ['localectl', '1', [], 'ENABLE_LOCALED'],
+ ['localtime', '5', [], ''],
+ ['loginctl', '1', [], 'ENABLE_LOGIND'],
+ ['logind.conf', '5', ['logind.conf.d'], 'ENABLE_LOGIND'],
+ ['machine-id', '5', [], ''],
+ ['machine-info', '5', [], ''],
+ ['machinectl', '1', [], 'ENABLE_MACHINED'],
+ ['modules-load.d', '5', [], 'HAVE_KMOD'],
+ ['networkctl', '1', [], 'ENABLE_NETWORKD'],
+ ['networkd.conf', '5', ['networkd.conf.d'], 'ENABLE_NETWORKD'],
+ ['nss-myhostname', '8', ['libnss_myhostname.so.2'], 'ENABLE_MYHOSTNAME'],
+ ['nss-mymachines', '8', ['libnss_mymachines.so.2'], 'ENABLE_MACHINED'],
+ ['nss-resolve', '8', ['libnss_resolve.so.2'], 'ENABLE_RESOLVE'],
+ ['nss-elogind', '8', ['libnss_elogind.so.2'], 'ENABLE_NSS_SYSTEMD'],
+ ['os-release', '5', [], ''],
+ ['resolved.conf', '5', ['resolved.conf.d'], 'ENABLE_RESOLVE'],
+ ['runlevel', '8', [], 'ENABLE_UTMP'],
+ ['sd-boot', '7', [], 'ENABLE_EFI'],
+ ['sd-bus-errors',
+  '3',
+  ['SD_BUS_ERROR_ACCESS_DENIED',
+   'SD_BUS_ERROR_ADDRESS_IN_USE',
+   'SD_BUS_ERROR_AUTH_FAILED',
+   'SD_BUS_ERROR_BAD_ADDRESS',
+   'SD_BUS_ERROR_DISCONNECTED',
+   'SD_BUS_ERROR_FAILED',
+   'SD_BUS_ERROR_FILE_EXISTS',
+   'SD_BUS_ERROR_FILE_NOT_FOUND',
+   'SD_BUS_ERROR_INCONSISTENT_MESSAGE',
+   'SD_BUS_ERROR_INTERACTIVE_AUTHORIZATION_REQUIRED',
+   'SD_BUS_ERROR_INVALID_ARGS',
+   'SD_BUS_ERROR_INVALID_SIGNATURE',
+   'SD_BUS_ERROR_IO_ERROR',
+   'SD_BUS_ERROR_LIMITS_EXCEEDED',
+   'SD_BUS_ERROR_MATCH_RULE_INVALID',
+   'SD_BUS_ERROR_MATCH_RULE_NOT_FOUND',
+   'SD_BUS_ERROR_NAME_HAS_NO_OWNER',
+   'SD_BUS_ERROR_NOT_SUPPORTED',
+   'SD_BUS_ERROR_NO_MEMORY',
+   'SD_BUS_ERROR_NO_NETWORK',
+   'SD_BUS_ERROR_NO_REPLY',
+   'SD_BUS_ERROR_NO_SERVER',
+   'SD_BUS_ERROR_PROPERTY_READ_ONLY',
+   'SD_BUS_ERROR_SERVICE_UNKNOWN',
+   'SD_BUS_ERROR_TIMEOUT',
+   'SD_BUS_ERROR_UNIX_PROCESS_ID_UNKNOWN',
+   'SD_BUS_ERROR_UNKNOWN_INTERFACE',
+   'SD_BUS_ERROR_UNKNOWN_METHOD',
+   'SD_BUS_ERROR_UNKNOWN_OBJECT',
+   'SD_BUS_ERROR_UNKNOWN_PROPERTY'],
+  ''],
  ['sd-bus', '3', [], ''],
+ ['sd-daemon',
+  '3',
+  ['SD_ALERT',
+   'SD_CRIT',
+   'SD_DEBUG',
+   'SD_EMERG',
+   'SD_ERR',
+   'SD_INFO',
+   'SD_NOTICE',
+   'SD_WARNING'],
+  ''],
  ['sd-event', '3', [], ''],
+ ['sd-id128',
+  '3',
+  ['SD_ID128_CONST_STR',
+   'SD_ID128_FORMAT_STR',
+   'SD_ID128_FORMAT_VAL',
+   'SD_ID128_MAKE',
+   'SD_ID128_MAKE_STR',
+   'SD_ID128_NULL',
+   'sd_id128_equal',
+   'sd_id128_is_null',
+   'sd_id128_t'],
+  ''],
+ ['sd-journal', '3', [], ''],
  ['sd-login', '3', [], 'HAVE_PAM'],
  ['sd_booted', '3', [], ''],
  ['sd_bus_add_match',
@@ -90,6 +188,7 @@ manpages = [
   ['SD_BUS_ERROR_END', 'SD_BUS_ERROR_MAP', 'sd_bus_error_map'],
   ''],
  ['sd_bus_get_fd', '3', [], ''],
+ ['sd_bus_get_n_queued_read', '3', ['sd_bus_get_n_queued_write'], ''],
  ['sd_bus_is_open', '3', ['sd_bus_is_ready'], ''],
  ['sd_bus_message_append', '3', ['sd_bus_message_appendv'], ''],
  ['sd_bus_message_append_array',
@@ -110,6 +209,7 @@ manpages = [
   ['sd_bus_message_get_realtime_usec', 'sd_bus_message_get_seqnum'],
   ''],
  ['sd_bus_message_read_basic', '3', [], ''],
+ ['sd_bus_message_set_destination', '3', ['sd_bus_message_set_sender'], ''],
  ['sd_bus_negotiate_fds',
   '3',
   ['sd_bus_negotiate_creds', 'sd_bus_negotiate_timestamp'],
@@ -258,6 +358,88 @@ manpages = [
    'sd_is_socket_unix',
    'sd_is_special'],
   ''],
+ ['sd_journal_add_match',
+  '3',
+  ['sd_journal_add_conjunction',
+   'sd_journal_add_disjunction',
+   'sd_journal_flush_matches'],
+  ''],
+ ['sd_journal_enumerate_fields',
+  '3',
+  ['SD_JOURNAL_FOREACH_FIELD', 'sd_journal_restart_fields'],
+  ''],
+ ['sd_journal_get_catalog', '3', ['sd_journal_get_catalog_for_message_id'], ''],
+ ['sd_journal_get_cursor', '3', ['sd_journal_test_cursor'], ''],
+ ['sd_journal_get_cutoff_realtime_usec',
+  '3',
+  ['sd_journal_get_cutoff_monotonic_usec'],
+  ''],
+ ['sd_journal_get_data',
+  '3',
+  ['SD_JOURNAL_FOREACH_DATA',
+   'sd_journal_enumerate_data',
+   'sd_journal_get_data_threshold',
+   'sd_journal_restart_data',
+   'sd_journal_set_data_threshold'],
+  ''],
+ ['sd_journal_get_fd',
+  '3',
+  ['SD_JOURNAL_APPEND',
+   'SD_JOURNAL_INVALIDATE',
+   'SD_JOURNAL_NOP',
+   'sd_journal_get_events',
+   'sd_journal_get_timeout',
+   'sd_journal_process',
+   'sd_journal_reliable_fd',
+   'sd_journal_wait'],
+  ''],
+ ['sd_journal_get_realtime_usec', '3', ['sd_journal_get_monotonic_usec'], ''],
+ ['sd_journal_get_usage', '3', [], ''],
+ ['sd_journal_has_runtime_files', '3', ['sd_journal_has_persistent_files'], ''],
+ ['sd_journal_next',
+  '3',
+  ['SD_JOURNAL_FOREACH',
+   'SD_JOURNAL_FOREACH_BACKWARDS',
+   'sd_journal_next_skip',
+   'sd_journal_previous',
+   'sd_journal_previous_skip'],
+  ''],
+ ['sd_journal_open',
+  '3',
+  ['SD_JOURNAL_CURRENT_USER',
+   'SD_JOURNAL_LOCAL_ONLY',
+   'SD_JOURNAL_OS_ROOT',
+   'SD_JOURNAL_RUNTIME_ONLY',
+   'SD_JOURNAL_SYSTEM',
+   'sd_journal',
+   'sd_journal_close',
+   'sd_journal_open_directory',
+   'sd_journal_open_directory_fd',
+   'sd_journal_open_files',
+   'sd_journal_open_files_fd'],
+  ''],
+ ['sd_journal_print',
+  '3',
+  ['SD_JOURNAL_SUPPRESS_LOCATION',
+   'sd_journal_perror',
+   'sd_journal_printv',
+   'sd_journal_send',
+   'sd_journal_sendv'],
+  ''],
+ ['sd_journal_query_unique',
+  '3',
+  ['SD_JOURNAL_FOREACH_UNIQUE',
+   'sd_journal_enumerate_unique',
+   'sd_journal_restart_unique'],
+  ''],
+ ['sd_journal_seek_head',
+  '3',
+  ['sd_journal_seek_cursor',
+   'sd_journal_seek_monotonic_usec',
+   'sd_journal_seek_realtime_usec',
+   'sd_journal_seek_tail'],
+  ''],
+ ['sd_journal_stream_fd', '3', [], ''],
  ['sd_listen_fds',
   '3',
   ['SD_LISTEN_FDS_START', 'sd_listen_fds_with_names'],
@@ -325,6 +507,289 @@ manpages = [
    'sd_uid_get_sessions',
    'sd_uid_is_on_seat'],
   'HAVE_PAM'],
- ['sd_watchdog_enabled', '3', [], '']
+ ['sd_watchdog_enabled', '3', [], ''],
+ ['shutdown', '8', [], ''],
+ ['sysctl.d', '5', [], ''],
+ ['systemctl', '1', [], ''],
+ ['elogind-analyze', '1', [], ''],
+ ['elogind-ask-password-console.service',
+  '8',
+  ['elogind-ask-password-console.path',
+   'elogind-ask-password-wall.path',
+   'elogind-ask-password-wall.service'],
+  ''],
+ ['elogind-ask-password', '1', [], ''],
+ ['elogind-backlight@.service', '8', ['elogind-backlight'], 'ENABLE_BACKLIGHT'],
+ ['elogind-binfmt.service', '8', ['elogind-binfmt'], 'ENABLE_BINFMT'],
+ ['elogind-cat', '1', [], ''],
+ ['elogind-cgls', '1', [], ''],
+ ['elogind-cgtop', '1', [], ''],
+ ['elogind-coredump',
+  '8',
+  ['elogind-coredump.socket', 'elogind-coredump@.service'],
+  'ENABLE_COREDUMP'],
+ ['elogind-cryptsetup-generator', '8', [], 'HAVE_LIBCRYPTSETUP'],
+ ['elogind-cryptsetup@.service',
+  '8',
+  ['elogind-cryptsetup'],
+  'HAVE_LIBCRYPTSETUP'],
+ ['elogind-debug-generator', '8', [], ''],
+ ['elogind-delta', '1', [], ''],
+ ['elogind-detect-virt', '1', [], ''],
+ ['elogind-environment-d-generator',
+  '8',
+  ['30-elogind-environment-d-generator'],
+  'ENABLE_ENVIRONMENT_D'],
+ ['elogind-escape', '1', [], ''],
+ ['elogind-firstboot', '1', ['elogind-firstboot.service'], 'ENABLE_FIRSTBOOT'],
+ ['elogind-fsck@.service',
+  '8',
+  ['elogind-fsck', 'elogind-fsck-root.service'],
+  ''],
+ ['elogind-fstab-generator', '8', [], ''],
+ ['elogind-getty-generator', '8', [], ''],
+ ['elogind-gpt-auto-generator', '8', [], ''],
+ ['elogind-halt.service',
+  '8',
+  ['elogind-kexec.service',
+   'elogind-poweroff.service',
+   'elogind-reboot.service',
+   'elogind-shutdown'],
+  ''],
+ ['elogind-hibernate-resume-generator', '8', [], 'ENABLE_HIBERNATE'],
+ ['elogind-hibernate-resume@.service',
+  '8',
+  ['elogind-hibernate-resume'],
+  'ENABLE_HIBERNATE'],
+ ['elogind-hostnamed.service', '8', ['elogind-hostnamed'], 'ENABLE_HOSTNAMED'],
+ ['elogind-hwdb', '8', [], 'ENABLE_HWDB'],
+ ['elogind-importd.service', '8', ['elogind-importd'], 'ENABLE_IMPORTD'],
+ ['elogind-inhibit', '1', [], ''],
+ ['elogind-initctl.service',
+  '8',
+  ['elogind-initctl', 'elogind-initctl.socket'],
+  ''],
+ ['elogind-journal-gatewayd.service',
+  '8',
+  ['elogind-journal-gatewayd', 'elogind-journal-gatewayd.socket'],
+  'HAVE_MICROHTTPD'],
+ ['elogind-journal-remote', '8', [], 'HAVE_MICROHTTPD'],
+ ['elogind-journal-upload', '8', [], 'HAVE_MICROHTTPD'],
+ ['elogind-journald.service',
+  '8',
+  ['elogind-journald',
+   'elogind-journald-audit.socket',
+   'elogind-journald-dev-log.socket',
+   'elogind-journald.socket'],
+  ''],
+ ['elogind-localed.service', '8', ['elogind-localed'], 'ENABLE_LOCALED'],
+ ['elogind.service', '8', ['elogind'], 'ENABLE_LOGIND'],
+ ['elogind-machine-id-commit.service', '8', [], ''],
+ ['elogind-machine-id-setup', '1', [], ''],
+ ['elogind-machined.service', '8', ['elogind-machined'], 'ENABLE_MACHINED'],
+ ['elogind-makefs@.service',
+  '8',
+  ['elogind-growfs',
+   'elogind-growfs@.service',
+   'elogind-makefs',
+   'elogind-makeswap@.service'],
+  ''],
+ ['elogind-modules-load.service', '8', ['elogind-modules-load'], 'HAVE_KMOD'],
+ ['elogind-mount', '1', ['elogind-umount'], ''],
+ ['elogind-networkd-wait-online.service',
+  '8',
+  ['elogind-networkd-wait-online'],
+  'ENABLE_NETWORKD'],
+ ['elogind-networkd.service', '8', ['elogind-networkd'], 'ENABLE_NETWORKD'],
+ ['elogind-notify', '1', [], ''],
+ ['elogind-nspawn', '1', [], ''],
+ ['elogind-path', '1', [], ''],
+ ['elogind-quotacheck.service',
+  '8',
+  ['elogind-quotacheck'],
+  'ENABLE_QUOTACHECK'],
+ ['elogind-random-seed.service',
+  '8',
+  ['elogind-random-seed'],
+  'ENABLE_RANDOMSEED'],
+ ['elogind-rc-local-generator', '8', [], ''],
+ ['elogind-remount-fs.service', '8', ['elogind-remount-fs'], ''],
+ ['elogind-resolve', '1', ['resolvconf'], 'ENABLE_RESOLVE'],
+ ['elogind-resolved.service', '8', ['elogind-resolved'], 'ENABLE_RESOLVE'],
+ ['elogind-rfkill.service',
+  '8',
+  ['elogind-rfkill', 'elogind-rfkill.socket'],
+  'ENABLE_RFKILL'],
+ ['elogind-run', '1', [], ''],
+ ['elogind-sleep.conf', '5', ['sleep.conf.d'], ''],
+ ['elogind-socket-activate', '1', [], ''],
+ ['elogind-socket-proxyd', '8', [], ''],
+ ['elogind-suspend.service',
+  '8',
+  ['elogind-hibernate.service',
+   'elogind-hybrid-sleep.service',
+   'elogind-suspend-to-hibernate.service',
+   'elogind-sleep'],
+  ''],
+ ['elogind-sysctl.service', '8', ['elogind-sysctl'], ''],
+ ['elogind-system-update-generator', '8', [], ''],
+ ['elogind-system.conf',
+  '5',
+  ['system.conf.d', 'elogind-user.conf', 'user.conf.d'],
+  ''],
+ ['elogind-sysusers', '8', ['elogind-sysusers.service'], ''],
+ ['elogind-sysv-generator', '8', [], 'HAVE_SYSV_COMPAT'],
+ ['elogind-time-wait-sync.service', '8', ['elogind-time-wait-sync'], 'ENABLE_TIMESYNCD'],
+ ['elogind-timedated.service', '8', ['elogind-timedated'], 'ENABLE_TIMEDATED'],
+ ['elogind-timesyncd.service', '8', ['elogind-timesyncd'], 'ENABLE_TIMESYNCD'],
+ ['elogind-tmpfiles',
+  '8',
+  ['elogind-tmpfiles-clean.service',
+   'elogind-tmpfiles-clean.timer',
+   'elogind-tmpfiles-setup-dev.service',
+   'elogind-tmpfiles-setup.service'],
+  ''],
+ ['elogind-tty-ask-password-agent', '1', [], ''],
+ ['elogind-udevd.service',
+  '8',
+  ['elogind-udevd',
+   'elogind-udevd-control.socket',
+   'elogind-udevd-kernel.socket'],
+  ''],
+ ['elogind-update-done.service', '8', ['elogind-update-done'], ''],
+ ['elogind-update-utmp.service',
+  '8',
+  ['elogind-update-utmp', 'elogind-update-utmp-runlevel.service'],
+  'ENABLE_UTMP'],
+ ['elogind-user-sessions.service', '8', ['elogind-user-sessions'], 'HAVE_PAM'],
+ ['elogind-vconsole-setup.service',
+  '8',
+  ['elogind-vconsole-setup'],
+  'ENABLE_VCONSOLE'],
+ ['elogind-veritysetup-generator', '8', [], 'HAVE_LIBCRYPTSETUP'],
+ ['elogind-veritysetup@.service',
+  '8',
+  ['elogind-veritysetup'],
+  'HAVE_LIBCRYPTSETUP'],
+ ['elogind-volatile-root.service', '8', ['elogind-volatile-root'], ''],
+ ['elogind', '1', ['init'], ''],
+ ['elogind.automount', '5', [], ''],
+ ['elogind.device', '5', [], ''],
+ ['elogind.dnssd', '5', [], 'ENABLE_RESOLVE'],
+ ['elogind.environment-generator', '7', [], 'ENABLE_ENVIRONMENT_D'],
+ ['elogind.exec', '5', [], ''],
+ ['elogind.generator', '7', [], ''],
+ ['elogind.journal-fields', '7', [], ''],
+ ['elogind.kill', '5', [], ''],
+ ['elogind.link', '5', [], ''],
+ ['elogind.mount', '5', [], ''],
+ ['elogind.netdev', '5', [], 'ENABLE_NETWORKD'],
+ ['elogind.network', '5', [], 'ENABLE_NETWORKD'],
+ ['elogind.nspawn', '5', [], ''],
+ ['elogind.offline-updates', '7', [], ''],
+ ['elogind.path', '5', [], ''],
+ ['elogind.preset', '5', [], ''],
+ ['elogind.resource-control', '5', [], ''],
+ ['elogind.scope', '5', [], ''],
+ ['elogind.service', '5', [], ''],
+ ['elogind.slice', '5', [], ''],
+ ['elogind.socket', '5', [], ''],
+ ['elogind.special', '7', [], ''],
+ ['elogind.swap', '5', [], ''],
+ ['elogind.target', '5', [], ''],
+ ['elogind.time', '7', [], ''],
+ ['elogind.timer', '5', [], ''],
+ ['elogind.unit', '5', [], ''],
+ ['sysusers.d', '5', [], 'ENABLE_SYSUSERS'],
+ ['telinit', '8', [], ''],
+ ['timedatectl', '1', [], 'ENABLE_TIMEDATED'],
+ ['timesyncd.conf', '5', ['timesyncd.conf.d'], 'ENABLE_TIMESYNCD'],
+ ['tmpfiles.d', '5', [], ''],
+ ['udev', '7', [], ''],
+ ['udev.conf', '5', [], ''],
+ ['udev_device_get_syspath',
+  '3',
+  ['udev_device_get_action',
+   'udev_device_get_devnode',
+   'udev_device_get_devnum',
+   'udev_device_get_devpath',
+   'udev_device_get_devtype',
+   'udev_device_get_driver',
+   'udev_device_get_is_initialized',
+   'udev_device_get_parent',
+   'udev_device_get_parent_with_subsystem_devtype',
+   'udev_device_get_subsystem',
+   'udev_device_get_sysname',
+   'udev_device_get_sysnum',
+   'udev_device_get_udev'],
+  ''],
+ ['udev_device_has_tag',
+  '3',
+  ['udev_device_get_devlinks_list_entry',
+   'udev_device_get_properties_list_entry',
+   'udev_device_get_property_value',
+   'udev_device_get_sysattr_list_entry',
+   'udev_device_get_sysattr_value',
+   'udev_device_get_tags_list_entry',
+   'udev_device_set_sysattr_value'],
+  ''],
+ ['udev_device_new_from_syspath',
+  '3',
+  ['udev_device_new_from_device_id',
+   'udev_device_new_from_devnum',
+   'udev_device_new_from_environment',
+   'udev_device_new_from_subsystem_sysname',
+   'udev_device_ref',
+   'udev_device_unref'],
+  ''],
+ ['udev_enumerate_add_match_subsystem',
+  '3',
+  ['udev_enumerate_add_match_is_initialized',
+   'udev_enumerate_add_match_parent',
+   'udev_enumerate_add_match_property',
+   'udev_enumerate_add_match_sysattr',
+   'udev_enumerate_add_match_sysname',
+   'udev_enumerate_add_match_tag',
+   'udev_enumerate_add_nomatch_subsystem',
+   'udev_enumerate_add_nomatch_sysattr'],
+  ''],
+ ['udev_enumerate_new',
+  '3',
+  ['udev_enumerate_ref', 'udev_enumerate_unref'],
+  ''],
+ ['udev_enumerate_scan_devices',
+  '3',
+  ['udev_enumerate_add_syspath',
+   'udev_enumerate_get_list_entry',
+   'udev_enumerate_get_udev',
+   'udev_enumerate_scan_subsystems'],
+  ''],
+ ['udev_list_entry',
+  '3',
+  ['udev_list_entry_get_by_name',
+   'udev_list_entry_get_name',
+   'udev_list_entry_get_next',
+   'udev_list_entry_get_value'],
+  ''],
+ ['udev_monitor_filter_update',
+  '3',
+  ['udev_monitor_filter_add_match_subsystem_devtype',
+   'udev_monitor_filter_add_match_tag',
+   'udev_monitor_filter_remove'],
+  ''],
+ ['udev_monitor_new_from_netlink',
+  '3',
+  ['udev_monitor_ref', 'udev_monitor_unref'],
+  ''],
+ ['udev_monitor_receive_device',
+  '3',
+  ['udev_monitor_enable_receiving',
+   'udev_monitor_get_fd',
+   'udev_monitor_get_udev',
+   'udev_monitor_set_receive_buffer_size'],
+  ''],
+ ['udev_new', '3', ['udev_ref', 'udev_unref'], ''],
+ ['udevadm', '8', [], ''],
+ ['vconsole.conf', '5', [], 'ENABLE_VCONSOLE']
 ]
 # Really, do not edit.
index b8e65329886cc683d33c08a06f5539d5cd045125..554267aff5fada82fc07635e0e403f81cbb8880d 100644 (file)
@@ -16,7 +16,7 @@
 # along with elogind; If not, see <http://www.gnu.org/licenses/>.
 
 project('elogind', 'c',
-        version : '238.1',
+        version : '238',
         license : 'LGPLv2+',
         default_options: [
                 'c_std=gnu99',
@@ -296,8 +296,8 @@ conf.set_quoted('ROOTLIBEXECDIR',                             rootlibexecdir)
 # conf.set_quoted('USER_KEYRING_PATH',                          join_paths(pkgsysconfdir, 'import-pubring.gpg'))
 # conf.set_quoted('DOCUMENT_ROOT',                              join_paths(pkgdatadir, 'gatewayd'))
 # conf.set('MEMORY_ACCOUNTING_DEFAULT',                         memory_accounting_default ? 'true' : 'false')
-# conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_ON_OFF',           memory_accounting_default ? 'on' : 'off')
 #endif // 0
+conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO',           memory_accounting_default ? 'yes' : 'no')
 
 conf.set_quoted('ABS_BUILD_DIR',                              meson.build_root())
 conf.set_quoted('ABS_SRC_DIR',                                meson.source_root())
@@ -457,7 +457,8 @@ if cc.get_id() == 'clang'
         foreach arg : ['-Wno-typedef-redefinition',
                        '-Wno-gnu-variable-sized-type-not-at-end',
                       ]
-                if cc.has_argument(arg)
+                if cc.has_argument(arg,
+                                   name : '@0@ is supported'.format(arg))
                         add_project_arguments(arg, language : 'c')
                 endif
         endforeach
@@ -481,24 +482,11 @@ foreach arg : ['-Wl,-z,relro',
         endif
 endforeach
 
-# Check if various sanitizers are supported
-sanitizers = []
-foreach arg : ['address']
-
-        have = run_command(check_compilation_sh,
-                           cc.cmd_array(), '-x', 'c',
-                           '-fsanitize=@0@'.format(arg),
-                           '-include', link_test_c).returncode() == 0
-        message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
-        if have
-                sanitizers += arg
-        endif
-endforeach
-
 if get_option('buildtype') != 'debug'
         foreach arg : ['-ffunction-sections',
                        '-fdata-sections']
-                if cc.has_argument(arg)
+                if cc.has_argument(arg,
+                                   name : '@0@ is supported'.format(arg))
                         add_project_arguments(arg, language : 'c')
                 endif
         endforeach
@@ -685,8 +673,9 @@ endforeach
 
 #if 0 /// unneeded by elogind
 # conf.set_quoted('TELINIT', get_option('telinit-path'))
+# 
 # if run_command('ln', '--relative', '--help').returncode() != 0
-#         error('ln does not support --relative')
+#         error('ln does not support --relative (added in coreutils 8.16)')
 # endif
 #endif // 0
 
@@ -910,6 +899,7 @@ substs.set('TTY_GID', tty_gid)
 
 kill_user_processes = get_option('default-kill-user-processes')
 conf.set10('KILL_USER_PROCESSES', kill_user_processes)
+conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
 substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
 
 #if 0 /// UNNEEDED by elogind
@@ -972,8 +962,7 @@ endif
 
 #if 0 /// UNNEEDED by elogind
 # libmount = dependency('mount',
-#                       version : '>= 2.30',
-#                       required : not fuzzer_build)
+#                       version : fuzzer_build ? '>= 0' : '>= 2.30')
 # 
 # want_seccomp = get_option('seccomp')
 # if want_seccomp != 'false' and not fuzzer_build
@@ -1486,6 +1475,7 @@ includes = include_directories('src/basic',
 #                                'src/resolve',
 #                                'src/timesync',
 #endif // 0
+                               'src/time-wait-sync',
                                'src/login',
 #if 0 /// UNNEEDED by elogind
 #                                'src/udev',
@@ -1840,6 +1830,10 @@ test_dlopen = executable(
 #                          install_rpath : rootlibexecdir,
 #                          install : true)
 #         public_programs += [exe]
+# 
+#         meson.add_install_script(meson_make_symlink,
+#                          join_paths(bindir, 'systemd-resolve'),
+#                          join_paths(rootsbindir, 'resolvconf'))
 # endif
 # 
 # if conf.get('ENABLE_LOGIND') == 1
@@ -2160,6 +2154,14 @@ endif
 #                    install_rpath : rootlibexecdir,
 #                    install : true,
 #                    install_dir : rootlibexecdir)
+# 
+#         executable('systemd-time-wait-sync',
+#                    'src/time-wait-sync/time-wait-sync.c',
+#                    include_directories : includes,
+#                    link_with : [libshared],
+#                    install_rpath : rootlibexecdir,
+#                    install : true,
+#                    install_dir : rootlibexecdir)
 # endif
 # 
 # if conf.get('ENABLE_MACHINED') == 1
@@ -2675,6 +2677,7 @@ executable('elogind-cgroups-agent',
 #            systemd_shutdown_sources,
 #            include_directories : includes,
 #            link_with : [libshared],
+#            dependencies : [libmount],
 #            install_rpath : rootlibexecdir,
 #            install : true,
 #            install_dir : rootlibexecdir)
@@ -2963,49 +2966,57 @@ endforeach
 ############################################################
 
 #if 0 /// fuzz regression tests are not supported by elogind
-# prev = ''
-# foreach p : fuzz_regression_tests
-#         a = p.split('/')[-3]
-#         b = p.split('/')[-2]
-#         c = p.split('/')[-1]
-# 
-#         if a == 'address'
-#                 build = sanitize_address
-#         else
-#                 error('unknown sanitizer @0@'.format(a))
-#         endif
-# 
-#         name = '@1@:@0@'.format(a, b)
-# 
-#         if name != prev
-#                 if want_tests == 'false'
-#                         message('Not compiling @0@ because tests is set to false'.format(name))
-#                 elif not sanitizers.contains(a)
-#                         message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
-#                 elif slow_tests
-#                         exe = custom_target(
-#                                 name,
-#                                 output : name,
-#                                 depends : build,
-#                                 command : [env, 'ln', '-fs',
-#                                            join_paths(build.full_path(), b),
-#                                            '@OUTPUT@'],
-#                                 build_by_default : true)
-#                 else
-#                         message('Not compiling @0@ because slow-tests is set to false'.format(name))
-#                 endif
-#         endif
-#         prev = name
-# 
-#         if want_tests != 'false' and slow_tests
-#                 test(c, env, args : [exe.full_path(),
-#                                      join_paths(meson.source_root(),
-#                                                 'test/fuzz-regressions',
-#                                                 p)])
+# # Enable tests for all supported sanitizers
+# foreach tuple : sanitizers
+#         sanitizer = tuple[0]
+#         build = tuple[1]
+# 
+#         have = run_command(check_compilation_sh,
+#                            cc.cmd_array(), '-x', 'c',
+#                            '-fsanitize=@0@'.format(sanitizer),
+#                            '-include', link_test_c).returncode() == 0
+#         message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
+# 
+#         if have
+#                 prev = ''
+#                 foreach p : fuzz_regression_tests
+#                         b = p.split('/')[-2]
+#                         c = p.split('/')[-1]
+# 
+#                         name = '@0@:@1@'.format(b, sanitizer)
+# 
+#                         if name != prev
+#                                 if want_tests == 'false'
+#                                         message('Not compiling @0@ because tests is set to false'.format(name))
+#                                 elif slow_tests
+#                                         exe = custom_target(
+#                                                 name,
+#                                                 output : name,
+#                                                 depends : build,
+#                                                 command : [env, 'ln', '-fs',
+#                                                            join_paths(build.full_path(), b),
+#                                                            '@OUTPUT@'],
+#                                                 build_by_default : true)
+#                                 else
+#                                         message('Not compiling @0@ because slow-tests is set to false'.format(name))
+#                                 endif
+#                         endif
+#                         prev = name
+# 
+#                         if want_tests != 'false' and slow_tests
+#                                 test('@0@:@1@:@2@'.format(b, c, sanitizer),
+#                                      env,
+#                                      args : [exe.full_path(),
+#                                              join_paths(meson.source_root(),
+#                                                         'test/fuzz-regressions',
+#                                                         p)])
+#                         endif
+#                 endforeach
 #         endif
 # endforeach
 #endif // 0
 
+
 ############################################################
 
 if git.found()