mirror of
https://github.com/systemd/systemd
synced 2026-03-23 23:34:52 +01:00
Compare commits
14 Commits
8f876748d3
...
463aef23a7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
463aef23a7 | ||
|
|
fac5588944 | ||
|
|
caf8c6ea3f | ||
|
|
f238549b5a | ||
|
|
a8d1a8e96d | ||
|
|
8d5b391b19 | ||
|
|
e04eae5e1c | ||
|
|
12085ebb40 | ||
|
|
f12c5d36a9 | ||
|
|
6839ce3318 | ||
|
|
fce9abb227 | ||
|
|
dab1fe1a8e | ||
|
|
d6029680df | ||
|
|
be0d27ee0c |
2
TODO
2
TODO
@ -83,6 +83,8 @@ Janitorial Clean-ups:
|
||||
|
||||
Features:
|
||||
|
||||
* use credentials logic/TPM2 logic to store homed signing key
|
||||
|
||||
* New udev block device symlink names:
|
||||
/dev/disk/by-parttypelabel/<pttype>/<ptlabel>. Use case: if pt label is used
|
||||
as partition image version string, this is a safe way to reference a specific
|
||||
|
||||
@ -289,10 +289,10 @@ sensor:modalias:acpi:*KIOX000A*:dmi:*svn*CytrixTechnology:*pn*Complex11t:*
|
||||
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:pnVostro5581:*
|
||||
ACCEL_LOCATION=base
|
||||
|
||||
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:pnLatitude9520:*:ct10:*
|
||||
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0A3E:*
|
||||
ACCEL_LOCATION=base
|
||||
|
||||
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:pnLatitude7420:*
|
||||
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0B0B:*
|
||||
ACCEL_LOCATION=base
|
||||
|
||||
# Dell Venue 8 Pro 3845
|
||||
|
||||
@ -49,7 +49,7 @@ if conf.get('ENABLE_HWDB') == 1
|
||||
|
||||
if install_sysconfdir
|
||||
meson.add_install_script('sh', '-c',
|
||||
mkdir_p.format(join_paths(sysconfdir, 'udev/hwdb.d')))
|
||||
mkdir_p.format(sysconfdir / 'udev/hwdb.d'))
|
||||
|
||||
meson.add_install_script('sh', '-c',
|
||||
'test -n "$DESTDIR" || @0@/systemd-hwdb update'.format(rootbindir))
|
||||
|
||||
@ -240,8 +240,8 @@
|
||||
<varlistentry>
|
||||
<term><option>--make-machine-id-directory=yes|no|auto</option></term>
|
||||
<listitem><para>Control creation and deletion of the top-level machine ID directory on the file
|
||||
system containing boot loader entries (i.e. beneath the file system returned by
|
||||
<option>--print-boot-path</option> above) during <option>install</option> and
|
||||
system containing boot loader entries (i.e. beneath the file system returned by the
|
||||
<option>--print-boot-path</option> option, see above) during <option>install</option> and
|
||||
<option>remove</option>, respectively. <literal>auto</literal> is equivalent to
|
||||
<literal>yes</literal> if <filename>/etc/machine-id</filename> resides on a filesystem other than
|
||||
tmpfs and <literal>no</literal> otherwise (in the latter case the machine ID is likely transient and
|
||||
|
||||
@ -83,12 +83,9 @@
|
||||
<varlistentry>
|
||||
<term><varname>ProcessSizeMax=</varname></term>
|
||||
|
||||
<listitem><para>The maximum size in bytes of a core
|
||||
which will be processed. Core dumps exceeding this size
|
||||
may be stored, but the backtrace will not be generated.
|
||||
Like other sizes in this same config file, the usual
|
||||
suffixes to the base of 1024 are allowed (B, K, M,
|
||||
G, T, P, and E.)</para>
|
||||
<listitem><para>The maximum size in bytes of a core which will be processed. Core dumps exceeding
|
||||
this size may be stored, but the backtrace will not be generated. Like other sizes in this same
|
||||
config file, the usual suffixes to the base of 1024 are allowed (B, K, M, G, T, P, and E).</para>
|
||||
|
||||
<para>Setting <varname>Storage=none</varname> and <varname>ProcessSizeMax=0</varname>
|
||||
disables all coredump handling except for a log entry.</para>
|
||||
@ -99,9 +96,8 @@
|
||||
<term><varname>ExternalSizeMax=</varname></term>
|
||||
<term><varname>JournalSizeMax=</varname></term>
|
||||
|
||||
<listitem><para>The maximum (compressed or uncompressed) size in bytes of a
|
||||
core to be saved. Unit suffixes are allowed just as in
|
||||
<option>ProcessSizeMax=</option></para></listitem>.
|
||||
<listitem><para>The maximum (compressed or uncompressed) size in bytes of a core to be saved. Unit
|
||||
suffixes are allowed just as in <option>ProcessSizeMax=</option>.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
@ -120,9 +116,8 @@
|
||||
by core dumps might temporarily exceed these limits while
|
||||
core dumps are processed. Note that old core dumps are also
|
||||
removed based on time via
|
||||
<citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry>. Set
|
||||
either value to 0 to turn off size-based
|
||||
clean-up.</para></listitem>
|
||||
<citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
|
||||
Set either value to 0 to turn off size-based cleanup.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
|
||||
@ -162,7 +162,7 @@
|
||||
<term><option>-1</option></term>
|
||||
|
||||
<listitem><para>Show information of the most recent core dump only, instead of listing all known core
|
||||
dumps. (Equivalent to <option>--reverse -n 1</option></para></listitem>
|
||||
dumps. Equivalent to <option>--reverse -n 1</option>.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
|
||||
@ -37,7 +37,7 @@ man_pages = []
|
||||
html_pages = []
|
||||
source_xml_files = []
|
||||
dbus_docs = []
|
||||
foreach tuple : xsltproc.found() ? manpages : []
|
||||
foreach tuple : manpages
|
||||
stem = tuple[0]
|
||||
section = tuple[1]
|
||||
aliases = tuple[2]
|
||||
@ -54,9 +54,15 @@ foreach tuple : xsltproc.found() ? manpages : []
|
||||
htmlaliases += alias + '.html'
|
||||
endforeach
|
||||
|
||||
mandirn = join_paths(get_option('mandir'), 'man' + section)
|
||||
mandirn = get_option('mandir') / ('man' + section)
|
||||
|
||||
if condition == '' or conf.get(condition) == 1
|
||||
file = files(tuple[0] + '.xml')
|
||||
if tuple[0].startswith('org.freedesktop.')
|
||||
dbus_docs += file
|
||||
endif
|
||||
|
||||
if xsltproc.found()
|
||||
p1 = custom_target(
|
||||
man,
|
||||
input : xml,
|
||||
@ -74,7 +80,7 @@ foreach tuple : xsltproc.found() ? manpages : []
|
||||
output : htmlalias,
|
||||
command : [ln, '-fs', html, '@OUTPUT@'])
|
||||
if want_html
|
||||
dst = join_paths(docdir, 'html', htmlalias)
|
||||
dst = docdir / 'html' / htmlalias
|
||||
cmd = 'ln -fs @0@ $DESTDIR@1@'.format(html, dst)
|
||||
meson.add_install_script('sh', '-c', cmd)
|
||||
p2 += link
|
||||
@ -89,13 +95,8 @@ foreach tuple : xsltproc.found() ? manpages : []
|
||||
command : xslt_cmd + [custom_html_xsl, '@INPUT@'],
|
||||
depends : [custom_entities_ent, p2],
|
||||
install : want_html,
|
||||
install_dir : join_paths(docdir, 'html'))
|
||||
install_dir : docdir / 'html')
|
||||
html_pages += p3
|
||||
|
||||
file = files(tuple[0] + '.xml')
|
||||
source_xml_files += file
|
||||
if tuple[0].startswith('org.freedesktop.')
|
||||
dbus_docs += file
|
||||
endif
|
||||
else
|
||||
message('Skipping @0@.@1@ because @2@ is false'.format(stem, section, condition))
|
||||
@ -132,7 +133,7 @@ foreach tuple : xsltproc.found() ? [['systemd.directives', '7', systemd_directiv
|
||||
html = stem + '.html'
|
||||
man = stem + '.' + section
|
||||
|
||||
mandirn = join_paths(get_option('mandir'), 'man' + section)
|
||||
mandirn = get_option('mandir') / ('man' + section)
|
||||
|
||||
p1 = custom_target(
|
||||
man,
|
||||
@ -152,7 +153,7 @@ foreach tuple : xsltproc.found() ? [['systemd.directives', '7', systemd_directiv
|
||||
output : htmlalias,
|
||||
command : [ln, '-fs', html, '@OUTPUT@'])
|
||||
if want_html
|
||||
dst = join_paths(docdir, 'html', htmlalias)
|
||||
dst = docdir / 'html' / htmlalias
|
||||
cmd = 'ln -fs @0@ $DESTDIR@1@'.format(html, dst)
|
||||
meson.add_install_script('sh', '-c', cmd)
|
||||
p2 += link
|
||||
@ -167,7 +168,7 @@ foreach tuple : xsltproc.found() ? [['systemd.directives', '7', systemd_directiv
|
||||
command : xslt_cmd + [custom_html_xsl, '@INPUT@'],
|
||||
depends : [custom_entities_ent, p2],
|
||||
install : want_html and have_lxml,
|
||||
install_dir : join_paths(docdir, 'html'))
|
||||
install_dir : docdir / 'html')
|
||||
html_pages += p3
|
||||
endforeach
|
||||
|
||||
@ -213,3 +214,26 @@ configure_file(
|
||||
input : 'html.in',
|
||||
output : 'html',
|
||||
configuration : buildroot_substs)
|
||||
|
||||
############################################################
|
||||
|
||||
update_dbus_docs = custom_target(
|
||||
'update-dbus-docs',
|
||||
output : 'update-dbus-docs',
|
||||
command : [update_dbus_docs_py, '--build-dir', project_build_root, '@INPUT@'],
|
||||
input : dbus_docs)
|
||||
|
||||
if conf.get('BUILD_MODE_DEVELOPER') == 1
|
||||
test('dbus-docs-fresh',
|
||||
update_dbus_docs_py,
|
||||
args : ['--build-dir', project_build_root, '--test', dbus_docs])
|
||||
endif
|
||||
|
||||
update_man_rules = custom_target(
|
||||
'update-man-rules',
|
||||
output : 'update-man-rules',
|
||||
command : [sh, '-c',
|
||||
'cd @0@ && '.format(project_build_root) +
|
||||
'python3 @0@/tools/update-man-rules.py $(find @0@ -wholename "*/man/*.xml") >t && '.format(project_source_root) +
|
||||
'mv t @0@/rules/meson.build'.format(meson.current_source_dir())],
|
||||
depends : custom_entities_ent)
|
||||
|
||||
@ -67,7 +67,7 @@
|
||||
|
||||
<para>This is a simple mechanism to provide static user and group records via JSON drop-in files. Such
|
||||
user records should be defined in the format described by the <ulink
|
||||
url="https://systemd.io/USER_RECORD">JSON User Record</ulink> specification and be placed in one of the
|
||||
url="https://systemd.io/USER_RECORD">JSON User Records</ulink> specification and be placed in one of the
|
||||
aforementioned directories under a file name composed of the user name suffixed with
|
||||
<filename>.user</filename>, with a world-readable access mode. A symlink named after the user record's
|
||||
UID formatted in decimal and suffixed with <filename>.user</filename> pointing to the primary record file
|
||||
|
||||
@ -373,7 +373,7 @@
|
||||
|
||||
<listitem><para>A lower-case string (mostly numeric, no spaces or other characters outside of 0–9,
|
||||
a–z, ".", "_" and "-") identifying the operating system extensions support level, to indicate which
|
||||
extension images are supported. See:
|
||||
extension images are supported. See
|
||||
<citerefentry><refentrytitle>systemd-sysext</refentrytitle><manvolnum>8</manvolnum></citerefentry>)
|
||||
for more information.</para>
|
||||
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
and hence the systemd control group hierarchy.</para>
|
||||
|
||||
<para>The module also applies various resource management and runtime parameters to the new session, as
|
||||
configured in the <ulink url="https://systemd.io/USER_RECORD">JSON User Record</ulink> of the user, when
|
||||
configured in the <ulink url="https://systemd.io/USER_RECORD">JSON User Records</ulink> of the user, when
|
||||
one is defined.</para>
|
||||
|
||||
<para>On login, this module — in conjunction with <filename>systemd-logind.service</filename> — ensures the
|
||||
|
||||
@ -452,8 +452,8 @@
|
||||
<para>If the special value <literal>auto</literal> is specified, the source to copy from is
|
||||
automatically picked up from the running system (or the image specified with
|
||||
<option>--image=</option> — if used). A partition that matches both the configured partition type (as
|
||||
declared with <varname>Type=</varname> above), and the currently mounted directory appropriate for
|
||||
that partition type is determined. For example, if the partition type is set to
|
||||
declared with <varname>Type=</varname> described above), and the currently mounted directory
|
||||
appropriate for that partition type is determined. For example, if the partition type is set to
|
||||
<literal>root</literal> the partition backing the root directory (<filename>/</filename>) is used as
|
||||
source to copy from — if its partition type is set to <literal>root</literal> as well. If the
|
||||
declared type is <literal>usr</literal> the partition backing <filename>/usr/</filename> is used as
|
||||
@ -529,7 +529,7 @@
|
||||
<varlistentry>
|
||||
<term><varname>MakeDirectories=</varname></term>
|
||||
|
||||
<listitem><para>akes one or more absolute paths, separated by whitespace, each declaring a directory
|
||||
<listitem><para>Takes one or more absolute paths, separated by whitespace, each declaring a directory
|
||||
to create within the new file system. Behaviour is similar to <varname>CopyFiles=</varname>, but
|
||||
instead of copying in a set of files this just creates the specified directories with the default
|
||||
mode of 0755 owned by the root user and group, plus all their parent directories (with the same
|
||||
@ -564,10 +564,10 @@
|
||||
are copied in or the file system configured with <varname>Format=</varname> is created.</para>
|
||||
|
||||
<para>The LUKS2 UUID is automatically derived from the partition UUID in a stable fashion. If
|
||||
<literal>key-file</literal> or <literal>key-file+tpm2</literal> is used a key is added to the LUKS2
|
||||
superblock, configurable with the <option>--key-file=</option> switch to
|
||||
<literal>key-file</literal> or <literal>key-file+tpm2</literal> is used, a key is added to the LUKS2
|
||||
superblock, configurable with the <option>--key-file=</option> option to
|
||||
<command>systemd-repart</command>. If <literal>tpm2</literal> or <literal>key-file+tpm2</literal> is
|
||||
used a key is added to the LUKS2 superblock that is enrolled to the local TPM2 chip, as configured
|
||||
used, a key is added to the LUKS2 superblock that is enrolled to the local TPM2 chip, as configured
|
||||
with the <option>--tpm2-device=</option> and <option>--tpm2-pcrs=</option> options to
|
||||
<command>systemd-repart</command>.</para>
|
||||
|
||||
@ -623,7 +623,7 @@
|
||||
has no effect on explicit mounts, such as those done via <citerefentry
|
||||
project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry> or
|
||||
<citerefentry
|
||||
project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry></para>
|
||||
project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
|
||||
|
||||
<para>If both bit 50 and 59 are set for a partition (i.e. the partition is marked both read-only and
|
||||
marked for file system growing) the latter is typically without effect: the read-only flag takes
|
||||
|
||||
@ -552,38 +552,62 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><command>bind</command> <replaceable>UNIT</replaceable> <replaceable>PATH</replaceable> [<replaceable>PATH</replaceable>]</term>
|
||||
<term>
|
||||
<command>bind</command>
|
||||
<replaceable>UNIT</replaceable>
|
||||
<replaceable>PATH</replaceable>
|
||||
[<replaceable>PATH</replaceable>]
|
||||
</term>
|
||||
|
||||
<listitem><para>Bind mounts a file or directory from the host into the specified unit's view. The first path
|
||||
argument is the source file or directory on the host, the second path argument is the destination file or
|
||||
directory in the unit's view. When the latter is omitted, the destination path in the unit's view is the same as
|
||||
the source path on the host. When combined with the <option>--read-only</option> switch, a ready-only bind
|
||||
mount is created. When combined with the <option>--mkdir</option> switch, the destination path is first created
|
||||
before the mount is applied. Note that this option is currently only supported for units that run within a mount
|
||||
namespace (e.g.: with <option>RootImage=</option>, <option>PrivateMounts=</option>, etc.). This command supports bind
|
||||
mounting directories, regular files, device nodes, <constant>AF_UNIX</constant> socket nodes, as well as FIFOs.
|
||||
The bind mount is ephemeral, and it is undone as soon as the current unit process exists.
|
||||
Note that the namespace mentioned here, where the bind mount will be added to, is the one where the main service
|
||||
process runs, as other processes run in distinct namespaces (e.g.: <option>ExecReload=</option>,
|
||||
<option>ExecStartPre=</option>, etc.) </para></listitem>
|
||||
<listitem><para>Bind-mounts a file or directory from the host into the specified unit's mount
|
||||
namespace. The first path argument is the source file or directory on the host, the second path
|
||||
argument is the destination file or directory in the unit's mount namespace. When the latter is
|
||||
omitted, the destination path in the unit's mount namespace is the same as the source path on the
|
||||
host. When combined with the <option>--read-only</option> switch, a ready-only bind mount is
|
||||
created. When combined with the <option>--mkdir</option> switch, the destination path is first
|
||||
created before the mount is applied.</para>
|
||||
|
||||
<para>Note that this option is currently only supported for units that run within a mount namespace
|
||||
(e.g.: with <option>RootImage=</option>, <option>PrivateMounts=</option>, etc.). This command
|
||||
supports bind-mounting directories, regular files, device nodes, <constant>AF_UNIX</constant>
|
||||
socket nodes, as well as FIFOs. The bind mount is ephemeral, and it is undone as soon as the
|
||||
current unit process exists. Note that the namespace mentioned here, where the bind mount will be
|
||||
added to, is the one where the main service process runs. Other processes (those exececuted by
|
||||
<option>ExecReload=</option>, <option>ExecStartPre=</option>, etc.) run in distinct namespaces.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><command>mount-image</command> <replaceable>UNIT</replaceable> <replaceable>IMAGE</replaceable> [<replaceable>PATH</replaceable> [<replaceable>PARTITION_NAME</replaceable>:<replaceable>MOUNT_OPTIONS</replaceable>]]</term>
|
||||
<term>
|
||||
<command>mount-image</command>
|
||||
<replaceable>UNIT</replaceable>
|
||||
<replaceable>IMAGE</replaceable>
|
||||
[<replaceable>PATH</replaceable>
|
||||
[<replaceable>PARTITION_NAME</replaceable>:<replaceable>MOUNT_OPTIONS</replaceable>]]
|
||||
</term>
|
||||
|
||||
<listitem><para>Mounts an image from the host into the specified unit's view. The first path argument is the source
|
||||
image on the host, the second path argument is the destination directory in the unit's view (ie: inside
|
||||
<option>RootImage=</option>/<option>RootDirectory=</option>). Any following argument is interpreted as a
|
||||
colon-separated tuple of partition name and comma-separated list of mount options for that partition. The format is the
|
||||
same as the service <option>MountImages=</option> setting. When combined with the <option>--read-only</option> switch, a
|
||||
ready-only mount is created. When combined with the <option>--mkdir</option> switch, the destination path is first
|
||||
created before the mount is applied. Note that this option is currently only supported for units that run within a mount
|
||||
namespace (e.g.: with <option>RootImage=</option>, <option>PrivateMounts=</option>, etc.).
|
||||
Note that the namespace mentioned here, where the image mount will be added to, is the one where the main service
|
||||
process runs, as other processes run in distinct namespaces (e.g.: <option>ExecReload=</option>,
|
||||
<option>ExecStartPre=</option>, etc.). Example:
|
||||
<listitem><para>Mounts an image from the host into the specified unit's mount namespace. The first
|
||||
path argument is the source image on the host, the second path argument is the destination
|
||||
directory in the unit's mount namespace (i.e. inside
|
||||
<option>RootImage=</option>/<option>RootDirectory=</option>). The following argument, if any, is
|
||||
interpreted as a colon-separated tuple of partition name and comma-separated list of mount options
|
||||
for that partition. The format is the same as the service <option>MountImages=</option>
|
||||
setting. When combined with the <option>--read-only</option> switch, a ready-only mount is
|
||||
created. When combined with the <option>--mkdir</option> switch, the destination path is first
|
||||
created before the mount is applied.</para>
|
||||
|
||||
<para>Note that this option is currently only supported for units that run within a mount namespace
|
||||
(i.e. with <option>RootImage=</option>, <option>PrivateMounts=</option>, etc.). Note that the
|
||||
namespace mentioned here where the image mount will be added to, is the one where the main service
|
||||
process runs. Note that the namespace mentioned here, where the bind mount will be
|
||||
added to, is the one where the main service process runs. Other processes (those exececuted by
|
||||
<option>ExecReload=</option>, <option>ExecStartPre=</option>, etc.) run in distinct namespaces.
|
||||
</para>
|
||||
|
||||
<para>Example:
|
||||
<programlisting>systemctl mount-image foo.service /tmp/img.raw /var/lib/image root:ro,nosuid</programlisting>
|
||||
<programlisting>systemctl mount-image --mkdir bar.service /tmp/img.raw /var/lib/baz/img</programlisting></para></listitem>
|
||||
<programlisting>systemctl mount-image --mkdir bar.service /tmp/img.raw /var/lib/baz/img</programlisting>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
@ -2185,9 +2209,9 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
|
||||
<term><option>--lines=</option></term>
|
||||
|
||||
<listitem>
|
||||
<para>When used with <command>status</command>, controls the number of journal lines to show, counting from
|
||||
the most recent ones. Takes a positive integer argument, or 0 to disable journal output. Defaults to
|
||||
10.</para>
|
||||
<para>When used with <command>status</command>, controls the number of journal lines to show,
|
||||
counting from the most recent ones. Takes a positive integer argument, or 0 to disable journal
|
||||
output. Defaults to 10.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -2208,8 +2232,9 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
|
||||
<term><option>--firmware-setup</option></term>
|
||||
|
||||
<listitem>
|
||||
<para>When used with the <command>reboot</command> command, indicate to the system's firmware to reboot into
|
||||
the firmware setup interface. Note that this functionality is not available on all systems.</para>
|
||||
<para>When used with the <command>reboot</command> command, indicate to the system's firmware to
|
||||
reboot into the firmware setup interface. Note that this functionality is not available on all
|
||||
systems.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -2217,10 +2242,10 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
|
||||
<term><option>--boot-loader-menu=</option></term>
|
||||
|
||||
<listitem>
|
||||
<para>When used with the <command>reboot</command> command, indicate to the system's boot loader to show the
|
||||
boot loader menu on the following boot. Takes a time value as parameter — indicating the menu timeout. Pass
|
||||
zero in order to disable the menu timeout. Note that not all boot loaders support this
|
||||
functionality.</para>
|
||||
<para>When used with the <command>reboot</command> command, indicate to the system's boot loader to
|
||||
show the boot loader menu on the following boot. Takes a time value as parameter — indicating the
|
||||
menu timeout. Pass zero in order to disable the menu timeout. Note that not all boot loaders
|
||||
support this functionality.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -2228,10 +2253,10 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
|
||||
<term><option>--boot-loader-entry=</option></term>
|
||||
|
||||
<listitem>
|
||||
<para>When used with the <command>reboot</command> command, indicate to the system's boot loader to boot into
|
||||
a specific boot loader entry on the following boot. Takes a boot loader entry identifier as argument, or
|
||||
<literal>help</literal> in order to list available entries. Note that not all boot loaders support this
|
||||
functionality.</para>
|
||||
<para>When used with the <command>reboot</command> command, indicate to the system's boot loader to
|
||||
boot into a specific boot loader entry on the following boot. Takes a boot loader entry identifier
|
||||
as argument, or <literal>help</literal> in order to list available entries. Note that not all boot
|
||||
loaders support this functionality.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
@ -307,7 +307,7 @@
|
||||
<varlistentry>
|
||||
<term><literal>passwd.shell.root</literal></term>
|
||||
|
||||
<listitem><para>Specifies the shell binary to use for the specified account when creating it.
|
||||
<listitem><para>Specifies the shell binary to use for the specified account.
|
||||
Equivalent to the credential of the same name defined for the
|
||||
<citerefentry><refentrytitle>systemd-sysusers.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
||||
service.</para></listitem>
|
||||
|
||||
@ -90,7 +90,7 @@
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--image=<replaceable>path</replaceable></option></term>
|
||||
<listitem><para>Takes a path to a device node or refular file as argument. This is similar to
|
||||
<listitem><para>Takes a path to a device node or regular file as argument. This is similar to
|
||||
<option>--root=</option> as described above, but operates on a disk image instead of a directory
|
||||
tree.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -1375,12 +1375,12 @@ After=sys-subsystem-net-devices-ens1.device</programlisting>
|
||||
</orderedlist>
|
||||
|
||||
<para>The combination of the three operations above ensures that it is possible to log into the
|
||||
host's user account inside the container as if it was local to the container. The user is only mapped
|
||||
transiently, while the container is running and the mapping itself does not result in persistent
|
||||
changes to the container (except maybe for generated log messages at login time, and similar). Note
|
||||
that in particular the UID/GID assignment in the container is not made persistently. If the user is
|
||||
mapped transiently, it is best to not allow the user to make persistent changes to the container. If
|
||||
the user leaves files or directories owned by the user, and those UIDs/GIDs are recycled during later
|
||||
container using the same account information as on the host. The user is only mapped transiently,
|
||||
while the container is running, and the mapping itself does not result in persistent changes to the
|
||||
container (except maybe for log messages generated at login time, and similar). Note that in
|
||||
particular the UID/GID assignment in the container is not made persistently. If the user is mapped
|
||||
transiently, it is best to not allow the user to make persistent changes to the container. If the
|
||||
user leaves files or directories owned by the user, and those UIDs/GIDs are reused during later
|
||||
container invocations (possibly with a different <option>--bind-user=</option> mapping), those files
|
||||
and directories will be accessible to the "new" user.</para>
|
||||
|
||||
@ -1581,9 +1581,9 @@ After=sys-subsystem-net-devices-ens1.device</programlisting>
|
||||
-b</programlisting>
|
||||
|
||||
<para>The above command line will invoke the specified image file <filename>image.raw</filename> in
|
||||
volatile mode, i.e with an empty <filename>/etc/</filename> and <filename>/var/</filename>, so that
|
||||
the container's payload recognizes this as first boot condition, and will invoke
|
||||
<filename>systemd-firstboot.service</filename>, which then read the two passed credentials to
|
||||
volatile mode, i.e. with empty <filename>/etc/</filename> and <filename>/var/</filename>. The
|
||||
container payload will recognize this as a first boot, and will invoke
|
||||
<filename>systemd-firstboot.service</filename>, which then reads the two passed credentials to
|
||||
configure the system's initial locale and root password.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -35,8 +35,8 @@
|
||||
<para>Most of <command>systemd-portabled</command>'s functionality is accessible through the
|
||||
<citerefentry><refentrytitle>portablectl</refentrytitle><manvolnum>1</manvolnum></citerefentry> command.</para>
|
||||
|
||||
<para>See the <ulink url="https://systemd.io/PORTABLE_SERVICES">Portable
|
||||
Services Documentation</ulink> for details about the concepts this service implements.</para>
|
||||
<para>See <ulink url="https://systemd.io/PORTABLE_SERVICES">Portable Services</ulink> for details about
|
||||
the concepts this service implements.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@ -275,7 +275,7 @@ search foobar.com barbar.com
|
||||
fragility in both directions: a valid global name could be obscured by a local name, and resolution of
|
||||
a relative local name could suddenly break when a new top-level domain is created, or when a new
|
||||
subdomain of a top-level domain in registered. Resolving any given name as either relative or absolute
|
||||
avoids this ambiguity.)</para></footnote></para></listitem>
|
||||
avoids this ambiguity.</para></footnote></para></listitem>
|
||||
|
||||
<listitem><para>This resolver has a notion of the special <literal>.local</literal> domain used for
|
||||
MulticastDNS, and will not route queries with that suffix to unicast DNS servers unless explicitly
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
operating system tree. When one or more system extension images are activated, their
|
||||
<filename>/usr/</filename> and <filename>/opt/</filename> hierarchies are combined via
|
||||
<literal>overlayfs</literal> with the same hierarchies of the host OS, and the host
|
||||
<filename>/usr/</filename> and <filename>/opt</filename> overmounted with it ("merging"). When they are
|
||||
<filename>/usr/</filename> and <filename>/opt/</filename> overmounted with it ("merging"). When they are
|
||||
deactivated, the mount point is disassembled — again revealing the unmodified original host version of
|
||||
the hierarchy ("unmerging"). Merging thus makes the extension's resources suddenly appear below the
|
||||
<filename>/usr/</filename> and <filename>/opt/</filename> hierarchies as if they were included in the
|
||||
@ -71,7 +71,7 @@
|
||||
<orderedlist>
|
||||
<listitem><para>Plain directories or btrfs subvolumes containing the OS tree</para></listitem>
|
||||
<listitem><para>Disk images with a GPT disk label, following the <ulink
|
||||
url="https://systemd.io/DISCOVERABLE_PARTITIONS">Discoverable Partition Specification</ulink></para></listitem>
|
||||
url="https://systemd.io/DISCOVERABLE_PARTITIONS">Discoverable Partitions Specification</ulink></para></listitem>
|
||||
<listitem><para>Disk images lacking a partition table, with a naked Linux file system (e.g. squashfs or ext4)</para></listitem>
|
||||
</orderedlist>
|
||||
|
||||
@ -127,13 +127,15 @@
|
||||
<title>Uses</title>
|
||||
|
||||
<para>The primary use case for system images are immutable environments where debugging and development
|
||||
tools shall optionally be made available, but not included in the immutable base OS image itself
|
||||
(e.g. <filename>strace</filename> and <filename>gdb</filename> shall be an optionally installable
|
||||
addition in order to make debugging/development easier). System extension images should not be
|
||||
misunderstood as a generic software packaging framework, as no dependency scheme is available: system
|
||||
extensions should carry all files they need themselves, except for those already shipped in the
|
||||
underlying host system image. Typically, system extension images are built at the same time as the base
|
||||
OS image — within the same build system.</para>
|
||||
tools shall optionally be made available, but not included in the immutable base OS image itself (e.g.
|
||||
<citerefentry project='man-pages'><refentrytitle>strace</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
and
|
||||
<citerefentry project='man-pages'><refentrytitle>gdb</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
shall be an optionally installable addition in order to make debugging/development easier). System
|
||||
extension images should not be misunderstood as a generic software packaging framework, as no dependency
|
||||
scheme is available: system extensions should carry all files they need themselves, except for those
|
||||
already shipped in the underlying host system image. Typically, system extension images are built at the
|
||||
same time as the base OS image — within the same build system.</para>
|
||||
|
||||
<para>Another use case for the system extension concept is temporarily overriding OS supplied resources
|
||||
with newer ones, for example to install a locally compiled development version of some low-level
|
||||
|
||||
@ -262,7 +262,7 @@
|
||||
names in status messages (e.g. <literal>systemd-journald.service</literal>), instead of the longer
|
||||
and more informative descriptions set with <varname>Description=</varname> (e.g. <literal>Journal
|
||||
Logging Service</literal>). If <option>combined</option>, the system manager will use both unit names
|
||||
and descriptions in status messages (e.g. <literal>systemdmd-jouranld.service - Journal Logging
|
||||
and descriptions in status messages (e.g. <literal>systemd-journald.service - Journal Logging
|
||||
Service</literal>).</para>
|
||||
|
||||
<para>See
|
||||
|
||||
@ -34,14 +34,14 @@
|
||||
JSON user/group records from classic UNIX/glibc NSS user/group records in order to provide full backwards
|
||||
compatibility. It may also pick up statically defined JSON user/group records from drop-in files in
|
||||
<filename>/etc/userdb/</filename>, <filename>/run/userdb/</filename>,
|
||||
<filename>/run/host/userdb/</filename> and <filename>/use/lib/userdb/</filename>.</para>
|
||||
<filename>/run/host/userdb/</filename> and <filename>/usr/lib/userdb/</filename>.</para>
|
||||
|
||||
<para>Most of <command>systemd-userdbd</command>'s functionality is accessible through the
|
||||
<citerefentry><refentrytitle>userdbctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
command.</para>
|
||||
|
||||
<para>The user and group records this service provides access to follow the <ulink
|
||||
url="https://systemd.io/USER_RECORD">JSON User Record</ulink> and <ulink
|
||||
url="https://systemd.io/USER_RECORD">JSON User Records</ulink> and <ulink
|
||||
url="https://systemd.io/GROUP_RECORD">JSON Group Record</ulink> definitions. This service implements the
|
||||
<ulink url="https://systemd.io/USER_GROUP_API">User/Group Record Lookup API via Varlink</ulink>, and
|
||||
multiplexes access other services implementing this API, too. It is thus both server and client of this
|
||||
|
||||
@ -241,7 +241,7 @@
|
||||
<para>This option is supported only for disk images that contain a single file system, without an
|
||||
enveloping partition table. Images that contain a GPT partition table should instead include both
|
||||
root file system and matching Verity data in the same image, implementing the <ulink
|
||||
url="https://systemd.io/DISCOVERABLE_PARTITIONS">Discoverable Partition Specification</ulink>.</para>
|
||||
url="https://systemd.io/DISCOVERABLE_PARTITIONS">Discoverable Partitions Specification</ulink>.</para>
|
||||
|
||||
<xi:include href="system-only.xml" xpointer="singular"/></listitem>
|
||||
</varlistentry>
|
||||
@ -402,14 +402,15 @@
|
||||
<term><varname>ExtensionImages=</varname></term>
|
||||
|
||||
<listitem><para>This setting is similar to <varname>MountImages=</varname> in that it mounts a file
|
||||
system hierarchy from a block device node or loopback file, but instead of providing a destination path,
|
||||
an overlay will be set up. This option expects a whitespace separated list of mount definitions. Each
|
||||
definition consists of a source path, optionally followed by a colon and a list of mount options.</para>
|
||||
system hierarchy from a block device node or loopback file, but instead of providing a destination
|
||||
path, an overlay will be set up. This option expects a whitespace separated list of mount
|
||||
definitions. Each definition consists of a source path, optionally followed by a colon and a list of
|
||||
mount options.</para>
|
||||
|
||||
<para>A read-only OverlayFS will be set up on top of <filename>/usr/</filename> and
|
||||
<filename>/opt/</filename> hierarchies from the root. The order in which the images are listed
|
||||
will determine the order in which the overlay is laid down: images specified first to last will result
|
||||
in overlayfs layers bottom to top.</para>
|
||||
<filename>/opt/</filename> hierarchies. The order in which the images are listed will determine the
|
||||
order in which the overlay is laid down: images specified first to last will result in overlayfs
|
||||
layers bottom to top.</para>
|
||||
|
||||
<para>Mount options may be defined as a single comma-separated list of options, in which case they
|
||||
will be implicitly applied to the root partition on the image, or a series of colon-separated tuples
|
||||
@ -2304,7 +2305,7 @@ SystemCallErrorNumber=EPERM</programlisting>
|
||||
|
||||
<listitem><para>Sets environment variables for executed processes. Each line is unquoted using the
|
||||
rules described in "Quoting" section in
|
||||
<citerefentry><refentrytitle>systemd.syntax</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
<citerefentry><refentrytitle>systemd.syntax</refentrytitle><manvolnum>7</manvolnum></citerefentry>
|
||||
and becomes a list of variable assignments. If you need to assign a value containing spaces or the
|
||||
equals sign to a variable, put quotes around the whole assignment. Variable expansion is not
|
||||
performed inside the strings and the <literal>$</literal> character has no special meaning. Specifier
|
||||
|
||||
@ -457,7 +457,7 @@
|
||||
<term><varname>MTUBytes=</varname></term>
|
||||
<listitem>
|
||||
<para>The maximum transmission unit in bytes to set for the
|
||||
device. The usual suffixes K, M, G, are supported and are
|
||||
device. The usual suffixes K, M, G are supported and are
|
||||
understood to the base of 1024.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -465,7 +465,7 @@
|
||||
<term><varname>BitsPerSecond=</varname></term>
|
||||
<listitem>
|
||||
<para>The speed to set for the device, the value is rounded
|
||||
down to the nearest Mbps. The usual suffixes K, M, G, are
|
||||
down to the nearest Mbps. The usual suffixes K, M, G are
|
||||
supported and are understood to the base of 1000.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -788,7 +788,7 @@
|
||||
<term><varname>GenericSegmentOffloadMaxBytes=</varname></term>
|
||||
<listitem>
|
||||
<para>Specifies the maximum size of a Generic Segment Offload (GSO) packet the
|
||||
device should accept. The usual suffixes K, M, G, are supported and are
|
||||
device should accept. The usual suffixes K, M, G are supported and are
|
||||
understood to the base of 1024. An unsigned integer in the range 1…65536.
|
||||
Defaults to unset.</para>
|
||||
</listitem>
|
||||
@ -796,7 +796,7 @@
|
||||
<varlistentry>
|
||||
<term><varname>GenericSegmentOffloadMaxSegments=</varname></term>
|
||||
<listitem>
|
||||
<para>Specifies the maximum number of a Generic Segment Offload (GSO) segments the device should
|
||||
<para>Specifies the maximum number of Generic Segment Offload (GSO) segments the device should
|
||||
accept. An unsigned integer in the range 1…65535. Defaults to unset.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -390,7 +390,7 @@
|
||||
<term><varname>DefaultPVID=</varname></term>
|
||||
<listitem>
|
||||
<para>This specifies the default port VLAN ID of a newly attached bridge port.
|
||||
Set this to an integer in the range 1–4094 or <literal>none</literal> to disable the PVID.</para>
|
||||
Set this to an integer in the range 1…4094 or <literal>none</literal> to disable the PVID.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
@ -460,7 +460,7 @@
|
||||
<varlistentry>
|
||||
<term><varname>Id=</varname></term>
|
||||
<listitem>
|
||||
<para>The VLAN ID to use. An integer in the range 0–4094.
|
||||
<para>The VLAN ID to use. An integer in the range 0…4094.
|
||||
This setting is compulsory.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -654,7 +654,7 @@
|
||||
<term><varname>TTL=</varname></term>
|
||||
<listitem>
|
||||
<para>A fixed Time To Live N on Virtual eXtensible Local Area Network packets.
|
||||
Takes <literal>inherit</literal> or a number in the range 0–255. 0 is a special
|
||||
Takes <literal>inherit</literal> or a number in the range 0…255. 0 is a special
|
||||
value meaning inherit the inner protocol's TTL value. <literal>inherit</literal>
|
||||
means that it will inherit the outer protocol's TTL value.</para>
|
||||
</listitem>
|
||||
@ -913,7 +913,7 @@
|
||||
<varlistentry>
|
||||
<term><varname>TunnelId=</varname></term>
|
||||
<listitem>
|
||||
<para>Specifies the tunnel identifier. Takes an number in the range 1–4294967295. The value used
|
||||
<para>Specifies the tunnel identifier. Takes an number in the range 1…4294967295. The value used
|
||||
must match the <literal>PeerTunnelId=</literal> value being used at the peer. This setting is
|
||||
compulsory.</para>
|
||||
</listitem>
|
||||
@ -1002,7 +1002,7 @@
|
||||
<varlistentry>
|
||||
<term><varname>SessionId=</varname></term>
|
||||
<listitem>
|
||||
<para>Specifies the session identifier. Takes an number in the range 1–4294967295. The value used
|
||||
<para>Specifies the session identifier. Takes an number in the range 1…4294967295. The value used
|
||||
must match the <literal>SessionId=</literal> value being used at the peer. This setting is
|
||||
compulsory.</para>
|
||||
</listitem>
|
||||
@ -1010,7 +1010,7 @@
|
||||
<varlistentry>
|
||||
<term><varname>PeerSessionId=</varname></term>
|
||||
<listitem>
|
||||
<para>Specifies the peer session identifier. Takes an number in the range 1–4294967295.
|
||||
<para>Specifies the peer session identifier. Takes an number in the range 1…4294967295.
|
||||
The value used must match the <literal>PeerSessionId=</literal> value being used at the peer.
|
||||
This setting is compulsory.</para>
|
||||
</listitem>
|
||||
@ -1234,7 +1234,7 @@
|
||||
<term><varname>TTL=</varname></term>
|
||||
<listitem>
|
||||
<para>A fixed Time To Live N on tunneled packets. N is a
|
||||
number in the range 1–255. 0 is a special value meaning that
|
||||
number in the range 1…255. 0 is a special value meaning that
|
||||
packets inherit the TTL value. The default value for IPv4
|
||||
tunnels is 0 (inherit). The default value for IPv6 tunnels is
|
||||
64.</para>
|
||||
@ -1256,7 +1256,7 @@
|
||||
It is only used for IPv6 tunnels.
|
||||
A flow label of zero is used to indicate packets that have
|
||||
not been labeled.
|
||||
It can be configured to a value in the range 0–0xFFFFF, or be
|
||||
It can be configured to a value in the range 0…0xFFFFF, or be
|
||||
set to <literal>inherit</literal>, in which case the original flowlabel is used.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -1673,15 +1673,15 @@
|
||||
<para>Sets a comma-separated list of IP (v4 or v6) addresses with CIDR masks
|
||||
from which this peer is allowed to send incoming traffic and to
|
||||
which outgoing traffic for this peer is directed.</para>
|
||||
|
||||
<para>The catch-all 0.0.0.0/0 may be specified for matching all IPv4 addresses,
|
||||
and ::/0 may be specified for matching all IPv6 addresses.</para>
|
||||
<para>Note that this only affects "routing inside the network interface itself",
|
||||
as in, which wireguard peer packets with a specific destination address are sent to,
|
||||
and what source addresses are accepted from which peer.</para>
|
||||
<para>To cause packets to be sent via wireguard in first place, a route needs
|
||||
to be added, as well - either in the <literal>[Routes]</literal> section on the
|
||||
<literal>.network</literal> matching the wireguard interface, or outside of networkd.
|
||||
</para>
|
||||
|
||||
<para>Note that this only affects <emphasis>routing inside the network interface itself</emphasis>,
|
||||
i.e. the packets that pass through the tunnel itself. To cause packets to be sent via the tunnel in
|
||||
the first place, an appropriate route needs to be added as well — either in the
|
||||
<literal>[Routes]</literal> section on the <literal>.network</literal> matching the wireguard
|
||||
interface, or externally to <filename>systemd-networkd</filename>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
@ -1823,7 +1823,7 @@
|
||||
<term><varname>AdUserPortKey=</varname></term>
|
||||
<listitem>
|
||||
<para>Specifies the 802.3ad user defined portion of the port key. Takes a number in the range
|
||||
0–1023.</para>
|
||||
0…1023.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -2036,9 +2036,9 @@
|
||||
|
||||
<refsect1>
|
||||
<title>[BatmanAdvanced] Section Options</title>
|
||||
<para>The [BatmanAdvanced] section only applies for
|
||||
netdevs of kind <literal>batadv</literal> and accepts the
|
||||
following keys:</para>
|
||||
|
||||
<para>The [BatmanAdvanced] section only applies for netdevs of kind <literal>batadv</literal> and accepts
|
||||
the following keys:</para>
|
||||
|
||||
<variablelist class='network-directives'>
|
||||
<varlistentry>
|
||||
|
||||
@ -1423,7 +1423,7 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
|
||||
<term><varname>Metric=</varname></term>
|
||||
<listitem>
|
||||
<para>The metric of the route. Takes an unsigned integer in the range 0…4294967295.
|
||||
Defaluts to unset, and the kernel's default will be used.</para>
|
||||
Defaults to unset, and the kernel's default will be used.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
@ -1615,9 +1615,10 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
|
||||
<term><varname>SendHostname=</varname></term>
|
||||
<listitem>
|
||||
<para>When true (the default), the machine's hostname (or the value specified with
|
||||
<varname>Hostname=</varname> below) will be sent to the DHCP server. Note that the hostname must
|
||||
consist only of 7-bit ASCII lower-case characters and no spaces or dots, and be formatted as a
|
||||
valid DNS domain name. Otherwise, the hostname is not sent even if this option is true.</para>
|
||||
<varname>Hostname=</varname>, described below) will be sent to the DHCP server. Note that the
|
||||
hostname must consist only of 7-bit ASCII lower-case characters and no spaces or dots, and be
|
||||
formatted as a valid DNS domain name. Otherwise, the hostname is not sent even if this option is
|
||||
true.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -1911,8 +1912,8 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
|
||||
<term><varname>FallbackLeaseLifetimeSec=</varname></term>
|
||||
<listitem>
|
||||
<para>Allows to set DHCPv4 lease lifetime when DHCPv4 server does not send the lease lifetime.
|
||||
Takes one of <literal>forever</literal> or <literal>infinity</literal> means that the address
|
||||
never expires. Defaults to unset.</para>
|
||||
Takes one of <literal>forever</literal> or <literal>infinity</literal>. The latter means that the
|
||||
address never expires. Defaults to unset.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -2339,9 +2340,9 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
|
||||
<varlistentry>
|
||||
<term><varname>ServerAddress=</varname></term>
|
||||
<listitem><para>Specifies server address for the DHCP server. Takes an IPv4 address with prefix
|
||||
length, e.g., <literal>192.168.0.1/24</literal>. This setting may be useful when the link which
|
||||
DHCP server running on has multiple static addresses. When unset, one of static addresses in
|
||||
the link will be automatically selected. Defaults to unset.</para></listitem>
|
||||
length, for example <literal>192.168.0.1/24</literal>. This setting may be useful when the link on
|
||||
which the DHCP server is running has multiple static addresses. When unset, one of static addresses
|
||||
in the link will be automatically selected. Defaults to unset.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
@ -2521,23 +2522,22 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
|
||||
|
||||
<refsect1>
|
||||
<title>[DHCPServerStaticLease] Section Options</title>
|
||||
<para>The <literal>[DHCPServerStaticLease]</literal> section configures a static DHCP lease to
|
||||
assign a pre-set IPv4 address to a specific device based on its MAC address. This section can be
|
||||
specified multiple times.</para>
|
||||
<para>The <literal>[DHCPServerStaticLease]</literal> section configures a static DHCP lease to assign a
|
||||
fixed IPv4 address to a specific device based on its MAC address. This section can be specified multiple
|
||||
times.</para>
|
||||
|
||||
<variablelist class='network-directives'>
|
||||
<varlistentry>
|
||||
<term><varname>MACAddress=</varname></term>
|
||||
|
||||
<listitem><para>The hardware address of a device which should be assigned IPv4 address
|
||||
specified in <varname>Address=</varname>. This key is mandatory.</para></listitem>
|
||||
<listitem><para>The hardware address of a device to match. This key is mandatory.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>Address=</varname></term>
|
||||
|
||||
<listitem><para>IPv4 address that should be assigned to a device with a hardware address
|
||||
specified in <varname>MACAddress=</varname>. This key is mandatory.</para></listitem>
|
||||
<listitem><para>The IPv4 address that should be assigned to the device that was matched with
|
||||
<varname>MACAddress=</varname>. This key is mandatory.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
@ -202,7 +202,7 @@
|
||||
capabilities (see
|
||||
<citerefentry project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>
|
||||
for details). The <varname>AmbientCapability=</varname> setting
|
||||
specifies capability which will be passed to to started program
|
||||
specifies capability which will be passed to the started program
|
||||
in the inheritable and ambient capability sets. This will grant
|
||||
these capabilities to this process. This setting correspond to
|
||||
the <option>--ambient-capability=</option> command line switch.
|
||||
|
||||
@ -207,7 +207,7 @@ disable *</programlisting>
|
||||
<citerefentry><refentrytitle>systemd-delta</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
</para>
|
||||
|
||||
<para><citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
||||
<para><citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>
|
||||
has a discussion of packaging scriptlets.</para>
|
||||
|
||||
<para>Fedora page introducing the use of presets:
|
||||
|
||||
@ -1134,7 +1134,7 @@
|
||||
<literal>\;</literal>.</para>
|
||||
|
||||
<para>Each command line is unquoted using the rules described in "Quoting" section in
|
||||
<citerefentry><refentrytitle>systemd.syntax</refentrytitle><manvolnum>5</manvolnum></citerefentry>. The
|
||||
<citerefentry><refentrytitle>systemd.syntax</refentrytitle><manvolnum>7</manvolnum></citerefentry>. The
|
||||
first item becomes the command to execute, and the subsequent items the arguments.</para>
|
||||
|
||||
<para>This syntax is inspired by shell syntax, but only the meta-characters and expansions
|
||||
|
||||
@ -1535,7 +1535,7 @@
|
||||
<varlistentry>
|
||||
<term><varname>ConditionControlGroupController=</varname></term>
|
||||
|
||||
<listitem><para>Check whether given cgroup controllers (eg. <literal>cpu</literal>) are available
|
||||
<listitem><para>Check whether given cgroup controllers (e.g. <literal>cpu</literal>) are available
|
||||
for use on the system or whether the legacy v1 cgroup or the modern v2 cgroup hierarchy is used.
|
||||
</para>
|
||||
|
||||
|
||||
@ -585,6 +585,17 @@
|
||||
for --user instances).</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><constant>SIGRTMIN+25</constant></term>
|
||||
|
||||
<listitem><para>Upon receiving this signal the systemd manager will reexecute itself. This
|
||||
is mostly equivalent to <command>systemctl daemon-reexec</command> except that it will be
|
||||
done asynchronously.</para>
|
||||
|
||||
<para>The systemd system manager treats this signal the same way as
|
||||
<constant>SIGTERM</constant>.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><constant>SIGRTMIN+26</constant></term>
|
||||
|
||||
|
||||
@ -550,6 +550,7 @@ w- /proc/sys/vm/swappiness - - - - 10</programlisting></para>
|
||||
|
||||
<refsect2>
|
||||
<title>Age</title>
|
||||
|
||||
<para>The date field, when set, is used to decide what files to
|
||||
delete when cleaning. If a file or directory is older than the
|
||||
current time minus the age field, it is deleted. The field
|
||||
@ -582,10 +583,9 @@ w- /proc/sys/vm/swappiness - - - - 10</programlisting></para>
|
||||
and <varname>X</varname>. If omitted or set to
|
||||
<literal>-</literal>, no automatic clean-up is done.</para>
|
||||
|
||||
<para>If the age field starts with a tilde character
|
||||
<literal>~</literal>, the clean-up is only applied to files and
|
||||
directories one level inside the directory specified, but not
|
||||
the files and directories immediately inside it.</para>
|
||||
<para>If the age field starts with a tilde character <literal>~</literal>, clean-up is only applied to
|
||||
files and directories one level inside the directory specified, but not the files and directories
|
||||
immediately inside it.</para>
|
||||
|
||||
<para>The age of a file system entry is determined from its last
|
||||
modification timestamp (mtime), its last access timestamp (atime),
|
||||
@ -595,30 +595,25 @@ w- /proc/sys/vm/swappiness - - - - 10</programlisting></para>
|
||||
the age field. To restrict the deletion based on particular type
|
||||
of file timestamps, the age-by argument can be used.</para>
|
||||
|
||||
<para>The age-by argument, when (optionally) specified along
|
||||
with age will check if the file system entry has aged by the
|
||||
type of file timestamp(s) provided. It can be specified by
|
||||
prefixing the age argument with a set of file timestamp types
|
||||
followed by a colon character <literal>:</literal>, i.e.,
|
||||
<literal><replaceable>age-by</replaceable>:<replaceable>cleanup-age</replaceable></literal>.
|
||||
The argument can be a set of:
|
||||
<constant>a</constant> (<constant>A</constant> for directories),
|
||||
<constant>b</constant> (<constant>B</constant> for directories),
|
||||
<constant>c</constant> (<constant>C</constant> for directories; ignored by default), or
|
||||
<constant>m</constant> (<constant>M</constant> for directories),
|
||||
indicating access, creation, last status change, and last
|
||||
modification times of a file system entry respectively. See
|
||||
<citerefentry project='man-pages'><refentrytitle>statx</refentrytitle><manvolnum>2</manvolnum></citerefentry>
|
||||
file timestamp fields for more details.</para>
|
||||
<para>The age-by argument overrides the timestamp types to be used for the age check. It can be
|
||||
specified by prefixing the age argument with a sequence of characters to specify the timestamp types
|
||||
and a colon (<literal>:</literal>):
|
||||
<literal><replaceable>age-by</replaceable>...:<replaceable>cleanup-age</replaceable></literal>. The
|
||||
argument can consist of <constant>a</constant> (<constant>A</constant> for directories),
|
||||
<constant>b</constant> (<constant>B</constant> for directories), <constant>c</constant>
|
||||
(<constant>C</constant> for directories), or <constant>m</constant> (<constant>M</constant> for
|
||||
directories). Those respectively indicate access, creation, last status change, and last modification
|
||||
time of a file system entry. The lower-case letter signifies that the given timestamp type should be
|
||||
considered for files, while the upper-case letter signifies that the given timestamp type should be
|
||||
considered for directories. See <citerefentry
|
||||
project='man-pages'><refentrytitle>statx</refentrytitle><manvolnum>2</manvolnum></citerefentry> file
|
||||
timestamp fields for more details about timestamp types.</para>
|
||||
|
||||
<para>If unspecified, the age-by field defaults to
|
||||
<constant>abcmABM</constant>,
|
||||
i.e., by default all file timestamps are taken into consideration,
|
||||
with the exception of the last status change timestamp (ctime) for
|
||||
directories. This is because the aging logic itself will alter the
|
||||
ctime whenever it deletes a file inside it. To ensure that running
|
||||
the aging logic does not feed back into the next iteration of it,
|
||||
ctime for directories is ignored by default.</para>
|
||||
<para>If not specified, the age-by field defaults to <constant>abcmABM</constant>, i.e. by default all
|
||||
file timestamps are taken into consideration, with the exception of the last status change timestamp
|
||||
(ctime) for directories. This is because the aging logic itself will alter the ctime whenever it
|
||||
deletes a file inside it. To ensure that running the aging logic does not feed back into the next
|
||||
iteration of itself, ctime for directories is ignored by default.</para>
|
||||
|
||||
<para>For example:<programlisting>
|
||||
# Files created and modified, and directories accessed more than
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
url="https://systemd.io/USER_GROUP_API">User/Group Record Lookup API via Varlink</ulink>, and may also
|
||||
pick up drop-in JSON user and group records from <filename>/etc/userdb/</filename>,
|
||||
<filename>/run/userdb/</filename>, <filename>/run/host/userdb/</filename>,
|
||||
<filename>/use/lib/userdb/</filename>.</para>
|
||||
<filename>/usr/lib/userdb/</filename>.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
@ -104,7 +104,7 @@
|
||||
|
||||
<listitem><para>Controls whether to include user/group lookups in the output that are defined using
|
||||
drop-in files in <filename>/etc/userdb/</filename>, <filename>/run/userdb/</filename>,
|
||||
<filename>/run/host/userdb/</filename>, <filename>/use/lib/userdb/</filename>. If
|
||||
<filename>/run/host/userdb/</filename>, <filename>/usr/lib/userdb/</filename>. If
|
||||
<option>--with-dropin=no</option> is used these records are suppressed. If
|
||||
<option>--with-dropin=yes</option> is specified such users/groups are included in the output (which
|
||||
is the default).</para></listitem>
|
||||
@ -260,7 +260,7 @@
|
||||
<citerefentry><refentrytitle>systemd-userdbd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
||||
and picks up JSON user/group records from <filename>/etc/userdb/</filename>,
|
||||
<filename>/run/userdb/</filename>, <filename>/run/host/userdb/</filename>,
|
||||
<filename>/use/lib/userdb/</filename>.</para></listitem>
|
||||
<filename>/usr/lib/userdb/</filename>.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
410
meson.build
410
meson.build
@ -101,9 +101,9 @@ conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
|
||||
conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
|
||||
conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
|
||||
|
||||
# join_paths ignores the preceding arguments if an absolute component is
|
||||
# encountered, so this should canonicalize various paths when they are
|
||||
# absolute or relative.
|
||||
# Meson ignores the preceding arguments when joining paths if an absolute
|
||||
# component is encountered, so this should canonicalize various paths when they
|
||||
# are absolute or relative.
|
||||
prefixdir = get_option('prefix')
|
||||
if not prefixdir.startswith('/')
|
||||
error('Prefix is not absolute: "@0@"'.format(prefixdir))
|
||||
@ -113,105 +113,105 @@ if prefixdir != rootprefixdir and rootprefixdir != '/' and not prefixdir.strip('
|
||||
rootprefixdir, prefixdir))
|
||||
endif
|
||||
|
||||
bindir = join_paths(prefixdir, get_option('bindir'))
|
||||
libdir = join_paths(prefixdir, get_option('libdir'))
|
||||
sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
|
||||
includedir = join_paths(prefixdir, get_option('includedir'))
|
||||
datadir = join_paths(prefixdir, get_option('datadir'))
|
||||
localstatedir = join_paths('/', get_option('localstatedir'))
|
||||
bindir = prefixdir / get_option('bindir')
|
||||
libdir = prefixdir / get_option('libdir')
|
||||
sysconfdir = prefixdir / get_option('sysconfdir')
|
||||
includedir = prefixdir / get_option('includedir')
|
||||
datadir = prefixdir / get_option('datadir')
|
||||
localstatedir = '/' / get_option('localstatedir')
|
||||
|
||||
rootbindir = join_paths(rootprefixdir, 'bin')
|
||||
rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
|
||||
rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
|
||||
rootbindir = rootprefixdir / 'bin'
|
||||
rootsbindir = rootprefixdir / (split_bin ? 'sbin' : 'bin')
|
||||
rootlibexecdir = rootprefixdir / 'lib/systemd'
|
||||
|
||||
rootlibdir = get_option('rootlibdir')
|
||||
if rootlibdir == ''
|
||||
rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
|
||||
rootlibdir = rootprefixdir / libdir.split('/')[-1]
|
||||
endif
|
||||
|
||||
install_sysconfdir = get_option('install-sysconfdir') != 'false'
|
||||
install_sysconfdir_samples = get_option('install-sysconfdir') == 'true'
|
||||
# Dirs of external packages
|
||||
pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
|
||||
pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
|
||||
polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
|
||||
polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
|
||||
polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
|
||||
xinitrcdir = get_option('xinitrcdir') == '' ? join_paths(sysconfdir, 'X11/xinit/xinitrc.d') : get_option('xinitrcdir')
|
||||
pkgconfigdatadir = get_option('pkgconfigdatadir') != '' ? get_option('pkgconfigdatadir') : datadir / 'pkgconfig'
|
||||
pkgconfiglibdir = get_option('pkgconfiglibdir') != '' ? get_option('pkgconfiglibdir') : libdir / 'pkgconfig'
|
||||
polkitpolicydir = datadir / 'polkit-1/actions'
|
||||
polkitrulesdir = datadir / 'polkit-1/rules.d'
|
||||
polkitpkladir = localstatedir / 'lib/polkit-1/localauthority/10-vendor.d'
|
||||
xinitrcdir = get_option('xinitrcdir') != '' ? get_option('xinitrcdir') : sysconfdir / 'X11/xinit/xinitrc.d'
|
||||
rpmmacrosdir = get_option('rpmmacrosdir')
|
||||
if rpmmacrosdir != 'no'
|
||||
rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
|
||||
rpmmacrosdir = prefixdir / rpmmacrosdir
|
||||
endif
|
||||
modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
|
||||
modprobedir = rootprefixdir / 'lib/modprobe.d'
|
||||
|
||||
# Our own paths
|
||||
pkgdatadir = join_paths(datadir, 'systemd')
|
||||
environmentdir = join_paths(prefixdir, 'lib/environment.d')
|
||||
pkgsysconfdir = join_paths(sysconfdir, 'systemd')
|
||||
userunitdir = join_paths(prefixdir, 'lib/systemd/user')
|
||||
userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
|
||||
tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
|
||||
sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
|
||||
sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
|
||||
binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
|
||||
modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
|
||||
networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
|
||||
pkgincludedir = join_paths(includedir, 'systemd')
|
||||
systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
|
||||
usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
|
||||
systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
|
||||
userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
|
||||
systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
|
||||
systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
|
||||
systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
|
||||
systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
|
||||
udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
|
||||
udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
|
||||
udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
|
||||
catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
|
||||
kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
|
||||
factorydir = join_paths(datadir, 'factory')
|
||||
bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
|
||||
testsdir = join_paths(prefixdir, 'lib/systemd/tests')
|
||||
systemdstatedir = join_paths(localstatedir, 'lib/systemd')
|
||||
catalogstatedir = join_paths(systemdstatedir, 'catalog')
|
||||
randomseeddir = join_paths(localstatedir, 'lib/systemd')
|
||||
profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
|
||||
ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
|
||||
pkgdatadir = datadir / 'systemd'
|
||||
environmentdir = prefixdir / 'lib/environment.d'
|
||||
pkgsysconfdir = sysconfdir / 'systemd'
|
||||
userunitdir = prefixdir / 'lib/systemd/user'
|
||||
userpresetdir = prefixdir / 'lib/systemd/user-preset'
|
||||
tmpfilesdir = prefixdir / 'lib/tmpfiles.d'
|
||||
sysusersdir = prefixdir / 'lib/sysusers.d'
|
||||
sysctldir = prefixdir / 'lib/sysctl.d'
|
||||
binfmtdir = prefixdir / 'lib/binfmt.d'
|
||||
modulesloaddir = prefixdir / 'lib/modules-load.d'
|
||||
networkdir = rootprefixdir / 'lib/systemd/network'
|
||||
pkgincludedir = includedir / 'systemd'
|
||||
systemgeneratordir = rootlibexecdir / 'system-generators'
|
||||
usergeneratordir = prefixdir / 'lib/systemd/user-generators'
|
||||
systemenvgeneratordir = prefixdir / 'lib/systemd/system-environment-generators'
|
||||
userenvgeneratordir = prefixdir / 'lib/systemd/user-environment-generators'
|
||||
systemshutdowndir = rootlibexecdir / 'system-shutdown'
|
||||
systemsleepdir = rootlibexecdir / 'system-sleep'
|
||||
systemunitdir = rootprefixdir / 'lib/systemd/system'
|
||||
systempresetdir = rootprefixdir / 'lib/systemd/system-preset'
|
||||
udevlibexecdir = rootprefixdir / 'lib/udev'
|
||||
udevrulesdir = udevlibexecdir / 'rules.d'
|
||||
udevhwdbdir = udevlibexecdir / 'hwdb.d'
|
||||
catalogdir = prefixdir / 'lib/systemd/catalog'
|
||||
kernelinstalldir = prefixdir / 'lib/kernel/install.d'
|
||||
factorydir = datadir / 'factory'
|
||||
bootlibdir = prefixdir / 'lib/systemd/boot/efi'
|
||||
testsdir = prefixdir / 'lib/systemd/tests'
|
||||
systemdstatedir = localstatedir / 'lib/systemd'
|
||||
catalogstatedir = systemdstatedir / 'catalog'
|
||||
randomseeddir = localstatedir / 'lib/systemd'
|
||||
profiledir = rootlibexecdir / 'portable' / 'profile'
|
||||
ntpservicelistdir = rootprefixdir / 'lib/systemd/ntp-units.d'
|
||||
|
||||
docdir = get_option('docdir')
|
||||
if docdir == ''
|
||||
docdir = join_paths(datadir, 'doc/systemd')
|
||||
docdir = datadir / 'doc/systemd'
|
||||
endif
|
||||
|
||||
dbuspolicydir = get_option('dbuspolicydir')
|
||||
if dbuspolicydir == ''
|
||||
dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
|
||||
dbuspolicydir = datadir / 'dbus-1/system.d'
|
||||
endif
|
||||
|
||||
dbussessionservicedir = get_option('dbussessionservicedir')
|
||||
if dbussessionservicedir == ''
|
||||
dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
|
||||
dbussessionservicedir = datadir / 'dbus-1/services'
|
||||
endif
|
||||
|
||||
dbussystemservicedir = get_option('dbussystemservicedir')
|
||||
if dbussystemservicedir == ''
|
||||
dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
|
||||
dbussystemservicedir = datadir / 'dbus-1/system-services'
|
||||
endif
|
||||
|
||||
pamlibdir = get_option('pamlibdir')
|
||||
if pamlibdir == ''
|
||||
pamlibdir = join_paths(rootlibdir, 'security')
|
||||
pamlibdir = rootlibdir / 'security'
|
||||
endif
|
||||
|
||||
pamconfdir = get_option('pamconfdir')
|
||||
if pamconfdir == ''
|
||||
pamconfdir = join_paths(prefixdir, 'lib/pam.d')
|
||||
pamconfdir = prefixdir / 'lib/pam.d'
|
||||
endif
|
||||
|
||||
libcryptsetup_plugins_dir = get_option('libcryptsetup-plugins-dir')
|
||||
if libcryptsetup_plugins_dir == ''
|
||||
libcryptsetup_plugins_dir = join_paths(rootlibdir, 'cryptsetup')
|
||||
libcryptsetup_plugins_dir = rootlibdir / 'cryptsetup'
|
||||
endif
|
||||
|
||||
memory_accounting_default = get_option('memory-accounting-default')
|
||||
@ -219,19 +219,19 @@ status_unit_format_default = get_option('status-unit-format-default')
|
||||
|
||||
conf.set_quoted('BINFMT_DIR', binfmtdir)
|
||||
conf.set_quoted('BOOTLIBDIR', bootlibdir)
|
||||
conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
|
||||
conf.set_quoted('CATALOG_DATABASE', catalogstatedir / 'database')
|
||||
conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
|
||||
conf.set_quoted('DOC_DIR', docdir)
|
||||
conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
|
||||
conf.set_quoted('DOCUMENT_ROOT', pkgdatadir / 'gatewayd')
|
||||
conf.set_quoted('ENVIRONMENT_DIR', environmentdir)
|
||||
conf.set_quoted('INCLUDE_DIR', includedir)
|
||||
conf.set_quoted('LIBDIR', libdir)
|
||||
conf.set_quoted('MODPROBE_DIR', modprobedir)
|
||||
conf.set_quoted('MODULESLOAD_DIR', modulesloaddir)
|
||||
conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
|
||||
conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
|
||||
conf.set_quoted('POLKIT_AGENT_BINARY_PATH', bindir / 'pkttyagent')
|
||||
conf.set_quoted('PREFIX', prefixdir)
|
||||
conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
|
||||
conf.set_quoted('RANDOM_SEED', randomseeddir / 'random-seed')
|
||||
conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
|
||||
conf.set_quoted('RC_LOCAL_PATH', get_option('rc-local'))
|
||||
conf.set_quoted('ROOTBINDIR', rootbindir)
|
||||
@ -241,29 +241,29 @@ conf.set_quoted('ROOTPREFIX', rootprefixdir)
|
||||
conf.set_quoted('ROOTPREFIX_NOSLASH', rootprefixdir_noslash)
|
||||
conf.set_quoted('SYSCONF_DIR', sysconfdir)
|
||||
conf.set_quoted('SYSCTL_DIR', sysctldir)
|
||||
conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
|
||||
conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
|
||||
conf.set_quoted('SYSTEMCTL_BINARY_PATH', rootbindir / 'systemctl')
|
||||
conf.set_quoted('SYSTEMD_BINARY_PATH', rootlibexecdir / 'systemd')
|
||||
conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
|
||||
conf.set_quoted('SYSTEMD_CGROUPS_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
|
||||
conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
|
||||
conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
|
||||
conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
|
||||
conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
|
||||
conf.set_quoted('SYSTEMD_HOMEWORK_PATH', join_paths(rootlibexecdir, 'systemd-homework'))
|
||||
conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
|
||||
conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
|
||||
conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
|
||||
conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
|
||||
conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
|
||||
conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
|
||||
conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
|
||||
conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
|
||||
conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
|
||||
conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
|
||||
conf.set_quoted('SYSTEMD_UPDATE_HELPER_PATH', join_paths(rootlibexecdir, 'systemd-update-helper'))
|
||||
conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
|
||||
conf.set_quoted('SYSTEMD_VERITYSETUP_PATH', join_paths(rootlibexecdir, 'systemd-veritysetup'))
|
||||
conf.set_quoted('SYSTEM_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'system'))
|
||||
conf.set_quoted('SYSTEMD_CGROUPS_AGENT_PATH', rootlibexecdir / 'systemd-cgroups-agent')
|
||||
conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', rootlibexecdir / 'systemd-cryptsetup')
|
||||
conf.set_quoted('SYSTEMD_EXPORT_PATH', rootlibexecdir / 'systemd-export')
|
||||
conf.set_quoted('SYSTEMD_FSCK_PATH', rootlibexecdir / 'systemd-fsck')
|
||||
conf.set_quoted('SYSTEMD_GROWFS_PATH', rootlibexecdir / 'systemd-growfs')
|
||||
conf.set_quoted('SYSTEMD_HOMEWORK_PATH', rootlibexecdir / 'systemd-homework')
|
||||
conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', rootlibexecdir / 'systemd-import-fs')
|
||||
conf.set_quoted('SYSTEMD_IMPORT_PATH', rootlibexecdir / 'systemd-import')
|
||||
conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', pkgdatadir / 'kbd-model-map')
|
||||
conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', pkgdatadir / 'language-fallback-map')
|
||||
conf.set_quoted('SYSTEMD_MAKEFS_PATH', rootlibexecdir / 'systemd-makefs')
|
||||
conf.set_quoted('SYSTEMD_PULL_PATH', rootlibexecdir / 'systemd-pull')
|
||||
conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', rootlibexecdir / 'systemd-shutdown')
|
||||
conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', bindir / 'systemd-stdio-bridge')
|
||||
conf.set_quoted('SYSTEMD_TEST_DATA', testsdir / 'testdata')
|
||||
conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', rootbindir / 'systemd-tty-ask-password-agent')
|
||||
conf.set_quoted('SYSTEMD_UPDATE_HELPER_PATH', rootlibexecdir / 'systemd-update-helper')
|
||||
conf.set_quoted('SYSTEMD_USERWORK_PATH', rootlibexecdir / 'systemd-userwork')
|
||||
conf.set_quoted('SYSTEMD_VERITYSETUP_PATH', rootlibexecdir / 'systemd-veritysetup')
|
||||
conf.set_quoted('SYSTEM_CONFIG_UNIT_DIR', pkgsysconfdir / 'system')
|
||||
conf.set_quoted('SYSTEM_DATA_UNIT_DIR', systemunitdir)
|
||||
conf.set_quoted('SYSTEM_ENV_GENERATOR_DIR', systemenvgeneratordir)
|
||||
conf.set_quoted('SYSTEM_GENERATOR_DIR', systemgeneratordir)
|
||||
@ -278,13 +278,13 @@ conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
|
||||
conf.set_quoted('UDEV_HWDB_DIR', udevhwdbdir)
|
||||
conf.set_quoted('UDEV_RULES_DIR', udevrulesdir)
|
||||
conf.set_quoted('UPDATE_HELPER_USER_TIMEOUT', get_option('update-helper-user-timeout'))
|
||||
conf.set_quoted('USER_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'user'))
|
||||
conf.set_quoted('USER_CONFIG_UNIT_DIR', pkgsysconfdir / 'user')
|
||||
conf.set_quoted('USER_DATA_UNIT_DIR', userunitdir)
|
||||
conf.set_quoted('USER_ENV_GENERATOR_DIR', userenvgeneratordir)
|
||||
conf.set_quoted('USER_GENERATOR_DIR', usergeneratordir)
|
||||
conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
|
||||
conf.set_quoted('USER_KEYRING_PATH', pkgsysconfdir / 'import-pubring.gpg')
|
||||
conf.set_quoted('USER_PRESET_DIR', userpresetdir)
|
||||
conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
|
||||
conf.set_quoted('VENDOR_KEYRING_PATH', rootlibexecdir / 'import-pubring.gpg')
|
||||
|
||||
conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
|
||||
conf.set10('ENABLE_URLIFY', get_option('urlify'))
|
||||
@ -1857,7 +1857,7 @@ foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
|
||||
module = tuple[0]
|
||||
|
||||
sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
|
||||
version_script_arg = join_paths(project_source_root, sym)
|
||||
version_script_arg = project_source_root / sym
|
||||
|
||||
sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
|
||||
if tuple.length() > 2
|
||||
@ -1922,8 +1922,8 @@ executable(
|
||||
install_dir : rootlibexecdir)
|
||||
|
||||
meson.add_install_script(meson_make_symlink,
|
||||
join_paths(rootlibexecdir, 'systemd'),
|
||||
join_paths(rootsbindir, 'init'))
|
||||
rootlibexecdir / 'systemd',
|
||||
rootsbindir / 'init')
|
||||
|
||||
public_programs += executable(
|
||||
'systemd-analyze',
|
||||
@ -2028,8 +2028,8 @@ if conf.get('ENABLE_ENVIRONMENT_D') == 1
|
||||
install_dir : userenvgeneratordir)
|
||||
|
||||
meson.add_install_script(meson_make_symlink,
|
||||
join_paths(sysconfdir, 'environment'),
|
||||
join_paths(environmentdir, '99-environment.conf'))
|
||||
sysconfdir / 'environment',
|
||||
environmentdir / '99-environment.conf')
|
||||
endif
|
||||
|
||||
if conf.get('ENABLE_HIBERNATE') == 1
|
||||
@ -2100,12 +2100,12 @@ if conf.get('ENABLE_RESOLVE') == 1
|
||||
install : true)
|
||||
|
||||
meson.add_install_script(meson_make_symlink,
|
||||
join_paths(bindir, 'resolvectl'),
|
||||
join_paths(rootsbindir, 'resolvconf'))
|
||||
bindir / 'resolvectl',
|
||||
rootsbindir / 'resolvconf')
|
||||
|
||||
meson.add_install_script(meson_make_symlink,
|
||||
join_paths(bindir, 'resolvectl'),
|
||||
join_paths(bindir, 'systemd-resolve'))
|
||||
bindir / 'resolvectl',
|
||||
bindir / 'systemd-resolve')
|
||||
endif
|
||||
|
||||
if conf.get('ENABLE_LOGIND') == 1
|
||||
@ -2144,7 +2144,7 @@ if conf.get('ENABLE_LOGIND') == 1
|
||||
install_dir : rootbindir)
|
||||
|
||||
if conf.get('HAVE_PAM') == 1
|
||||
version_script_arg = join_paths(project_source_root, pam_systemd_sym)
|
||||
version_script_arg = project_source_root / pam_systemd_sym
|
||||
pam_systemd = shared_library(
|
||||
'pam_systemd',
|
||||
pam_systemd_c,
|
||||
@ -2362,7 +2362,7 @@ if conf.get('ENABLE_HOMED') == 1
|
||||
install_dir : rootbindir)
|
||||
|
||||
if conf.get('HAVE_PAM') == 1
|
||||
version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
|
||||
version_script_arg = project_source_root / pam_systemd_home_sym
|
||||
pam_systemd = shared_library(
|
||||
'pam_systemd_home',
|
||||
pam_systemd_home_c,
|
||||
@ -2385,13 +2385,13 @@ endif
|
||||
foreach alias : (['halt', 'poweroff', 'reboot', 'shutdown'] +
|
||||
(conf.get('HAVE_SYSV_COMPAT') == 1 ? ['runlevel', 'telinit'] : []))
|
||||
meson.add_install_script(meson_make_symlink,
|
||||
join_paths(rootbindir, 'systemctl'),
|
||||
join_paths(rootsbindir, alias))
|
||||
rootbindir / 'systemctl',
|
||||
rootsbindir / alias)
|
||||
endforeach
|
||||
|
||||
meson.add_install_script(meson_make_symlink,
|
||||
join_paths(rootbindir, 'udevadm'),
|
||||
join_paths(rootlibexecdir, 'systemd-udevd'))
|
||||
rootbindir / 'udevadm',
|
||||
rootlibexecdir / 'systemd-udevd')
|
||||
|
||||
if conf.get('ENABLE_BACKLIGHT') == 1
|
||||
executable(
|
||||
@ -2828,7 +2828,7 @@ if conf.get('ENABLE_BINFMT') == 1
|
||||
mkdir_p.format(binfmtdir))
|
||||
if install_sysconfdir
|
||||
meson.add_install_script('sh', '-c',
|
||||
mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
|
||||
mkdir_p.format(sysconfdir / 'binfmt.d'))
|
||||
endif
|
||||
endif
|
||||
|
||||
@ -3105,7 +3105,7 @@ public_programs += executable(
|
||||
install : true)
|
||||
|
||||
meson.add_install_script(meson_make_symlink,
|
||||
'systemd-mount', join_paths(bindir, 'systemd-umount'))
|
||||
'systemd-mount', bindir / 'systemd-umount')
|
||||
|
||||
public_programs += executable(
|
||||
'systemd-run',
|
||||
@ -3307,7 +3307,7 @@ if conf.get('HAVE_KMOD') == 1
|
||||
mkdir_p.format(modulesloaddir))
|
||||
if install_sysconfdir
|
||||
meson.add_install_script('sh', '-c',
|
||||
mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
|
||||
mkdir_p.format(sysconfdir / 'modules-load.d'))
|
||||
endif
|
||||
endif
|
||||
|
||||
@ -3387,8 +3387,8 @@ custom_target(
|
||||
output : 'systemd-runtest.env',
|
||||
command : [sh, '-c',
|
||||
'{ echo SYSTEMD_TEST_DATA=@0@; echo SYSTEMD_CATALOG_DIR=@1@; } >@OUTPUT@'.format(
|
||||
join_paths(project_source_root, 'test'),
|
||||
join_paths(project_build_root, 'catalog'))],
|
||||
project_source_root / 'test',
|
||||
project_build_root / 'catalog')],
|
||||
build_by_default : true)
|
||||
|
||||
test_cflags = ['-DTEST_CODE=1']
|
||||
@ -3430,7 +3430,7 @@ foreach tuple : tests
|
||||
build_by_default : want_tests != 'false',
|
||||
install_rpath : rootlibexecdir,
|
||||
install : install_tests,
|
||||
install_dir : join_paths(testsdir, type))
|
||||
install_dir : testsdir / type)
|
||||
|
||||
if type == 'manual'
|
||||
message('@0@ is a manual test'.format(name))
|
||||
@ -3546,16 +3546,13 @@ foreach tuple : fuzzers
|
||||
if b == name
|
||||
test('@0@_@1@'.format(b, c),
|
||||
exe,
|
||||
args : [join_paths(project_source_root, p)])
|
||||
args : [project_source_root / p])
|
||||
endif
|
||||
endforeach
|
||||
endif
|
||||
endforeach
|
||||
|
||||
run_target(
|
||||
'fuzzers',
|
||||
depends : fuzzer_exes,
|
||||
command : ['true'])
|
||||
alias_target('fuzzers', fuzzer_exes)
|
||||
|
||||
############################################################
|
||||
|
||||
@ -3608,8 +3605,8 @@ if get_option('mode') == 'developer' and want_tests != 'false' and jekyll.found(
|
||||
test('github-pages',
|
||||
jekyll,
|
||||
args : ['build',
|
||||
'--source', join_paths(project_source_root, 'docs'),
|
||||
'--destination', join_paths(project_build_root, '_site')])
|
||||
'--source', project_source_root / 'docs',
|
||||
'--destination', project_build_root / '_site'])
|
||||
endif
|
||||
|
||||
############################################################
|
||||
@ -3659,7 +3656,7 @@ foreach tuple : sanitizers
|
||||
output : name,
|
||||
depends : build,
|
||||
command : [ln, '-fs',
|
||||
join_paths(build.full_path(), b),
|
||||
build.full_path() / b,
|
||||
'@OUTPUT@'],
|
||||
build_by_default : true)
|
||||
else
|
||||
@ -3674,7 +3671,7 @@ foreach tuple : sanitizers
|
||||
env : ['UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1'],
|
||||
timeout : 60,
|
||||
args : [exe.full_path(),
|
||||
join_paths(project_source_root, p)])
|
||||
project_source_root / p])
|
||||
endif
|
||||
endforeach
|
||||
endif
|
||||
@ -3734,101 +3731,67 @@ run_target(
|
||||
depends : [man, libsystemd, libudev],
|
||||
command : [check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
|
||||
|
||||
############################################################
|
||||
|
||||
if dbus_docs.length() > 0
|
||||
custom_target(
|
||||
'update-dbus-docs',
|
||||
output : 'update-dbus-docs',
|
||||
command : [update_dbus_docs_py,
|
||||
'--build-dir=@0@'.format(project_build_root),
|
||||
'@INPUT@'],
|
||||
input : dbus_docs)
|
||||
|
||||
if conf.get('BUILD_MODE_DEVELOPER') == 1
|
||||
test('dbus-docs-fresh',
|
||||
update_dbus_docs_py,
|
||||
args : ['--build-dir=@0@'.format(project_build_root),
|
||||
'--test'] + dbus_docs)
|
||||
endif
|
||||
endif
|
||||
|
||||
custom_target(
|
||||
'update-man-rules',
|
||||
output : 'update-man-rules',
|
||||
command : [sh, '-c',
|
||||
'cd @0@ && '.format(meson.build_root()) +
|
||||
'python3 @0@/tools/update-man-rules.py $(find @0@ -wholename "*/man/*.xml") >t && '.format(project_source_root) +
|
||||
'mv t @0@/man/rules/meson.build'.format(meson.current_source_dir())],
|
||||
depends : custom_entities_ent)
|
||||
alias_target('update-dbus-docs', update_dbus_docs)
|
||||
alias_target('update-man-rules', update_man_rules)
|
||||
|
||||
############################################################
|
||||
watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
|
||||
|
||||
status = [
|
||||
'@0@ @1@'.format(meson.project_name(), meson.project_version()),
|
||||
|
||||
'build mode: @0@'.format(get_option('mode')),
|
||||
'split /usr: @0@'.format(split_usr),
|
||||
'split bin-sbin: @0@'.format(split_bin),
|
||||
'prefix directory: @0@'.format(prefixdir),
|
||||
'rootprefix directory: @0@'.format(rootprefixdir),
|
||||
'sysconf directory: @0@'.format(sysconfdir),
|
||||
'include directory: @0@'.format(includedir),
|
||||
'lib directory: @0@'.format(libdir),
|
||||
'rootlib directory: @0@'.format(rootlibdir),
|
||||
'SysV init scripts: @0@'.format(sysvinit_path),
|
||||
'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
|
||||
'PAM modules directory: @0@'.format(pamlibdir),
|
||||
'PAM configuration directory: @0@'.format(pamconfdir),
|
||||
'libcryptsetup plugins directory: @0@'.format(libcryptsetup_plugins_dir),
|
||||
'RPM macros directory: @0@'.format(rpmmacrosdir),
|
||||
'modprobe.d directory: @0@'.format(modprobedir),
|
||||
'D-Bus policy directory: @0@'.format(dbuspolicydir),
|
||||
'D-Bus session directory: @0@'.format(dbussessionservicedir),
|
||||
'D-Bus system directory: @0@'.format(dbussystemservicedir),
|
||||
'bash completions directory: @0@'.format(bashcompletiondir),
|
||||
'zsh completions directory: @0@'.format(zshcompletiondir),
|
||||
'extra start script: @0@'.format(get_option('rc-local')),
|
||||
'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
|
||||
get_option('debug-tty')),
|
||||
'system UIDs: <=@0@ (alloc >=@1@)'.format(conf.get('SYSTEM_UID_MAX'),
|
||||
conf.get('SYSTEM_ALLOC_UID_MIN')),
|
||||
'system GIDs: <=@0@ (alloc >=@1@)'.format(conf.get('SYSTEM_GID_MAX'),
|
||||
conf.get('SYSTEM_ALLOC_GID_MIN')),
|
||||
'dynamic UIDs: @0@…@1@'.format(dynamic_uid_min, dynamic_uid_max),
|
||||
'container UID bases: @0@…@1@'.format(container_uid_base_min, container_uid_base_max),
|
||||
'static UID/GID allocations: @0@'.format(' '.join(static_ugids)),
|
||||
'/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
|
||||
'render group access mode: @0@'.format(get_option('group-render-mode')),
|
||||
'certificate root directory: @0@'.format(get_option('certificate-root')),
|
||||
'support URL: @0@'.format(support_url),
|
||||
'nobody user name: @0@'.format(nobody_user),
|
||||
'nobody group name: @0@'.format(nobody_group),
|
||||
'fallback hostname: @0@'.format(get_option('fallback-hostname')),
|
||||
|
||||
'default DNSSEC mode: @0@'.format(default_dnssec),
|
||||
'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
|
||||
'default mDNS mode: @0@'.format(default_mdns),
|
||||
'default LLMNR mode: @0@'.format(default_llmnr),
|
||||
'default cgroup hierarchy: @0@'.format(default_hierarchy),
|
||||
'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
|
||||
'default KillUserProcesses setting: @0@'.format(kill_user_processes),
|
||||
'default locale: @0@'.format(default_locale),
|
||||
'default user $PATH: @0@'.format(
|
||||
default_user_path != '' ? default_user_path : '(same as system services)'),
|
||||
'systemd service watchdog: @0@'.format(watchdog_opt)]
|
||||
|
||||
alt_dns_servers = '\n '.join(dns_servers.split(' '))
|
||||
alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
|
||||
status += [
|
||||
'default DNS servers: @0@'.format(alt_dns_servers),
|
||||
'default NTP servers: @0@'.format(alt_ntp_servers)]
|
||||
|
||||
alt_time_epoch = run_command('date', '-Is', '-u', '-d',
|
||||
'@@0@'.format(time_epoch)).stdout().strip()
|
||||
status += [
|
||||
'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
|
||||
|
||||
summary({
|
||||
'build mode' : get_option('mode'),
|
||||
'split /usr' : split_usr,
|
||||
'split bin-sbin' : split_bin,
|
||||
'prefix directory' : prefixdir,
|
||||
'rootprefix directory' : rootprefixdir,
|
||||
'sysconf directory' : sysconfdir,
|
||||
'include directory' : includedir,
|
||||
'lib directory' : libdir,
|
||||
'rootlib directory' : rootlibdir,
|
||||
'SysV init scripts' : sysvinit_path,
|
||||
'SysV rc?.d directories' : sysvrcnd_path,
|
||||
'PAM modules directory' : pamlibdir,
|
||||
'PAM configuration directory' : pamconfdir,
|
||||
'libcryptsetup plugins directory' : libcryptsetup_plugins_dir,
|
||||
'RPM macros directory' : rpmmacrosdir,
|
||||
'modprobe.d directory' : modprobedir,
|
||||
'D-Bus policy directory' : dbuspolicydir,
|
||||
'D-Bus session directory' : dbussessionservicedir,
|
||||
'D-Bus system directory' : dbussystemservicedir,
|
||||
'bash completions directory' : bashcompletiondir,
|
||||
'zsh completions directory' : zshcompletiondir,
|
||||
'extra start script' : get_option('rc-local'),
|
||||
'debug shell' : '@0@ @ @1@'.format(get_option('debug-shell'),
|
||||
get_option('debug-tty')),
|
||||
'system UIDs' : '<=@0@ (alloc >=@1@)'.format(conf.get('SYSTEM_UID_MAX'),
|
||||
conf.get('SYSTEM_ALLOC_UID_MIN')),
|
||||
'system GIDs' : '<=@0@ (alloc >=@1@)'.format(conf.get('SYSTEM_GID_MAX'),
|
||||
conf.get('SYSTEM_ALLOC_GID_MIN')),
|
||||
'dynamic UIDs' : '@0@…@1@'.format(dynamic_uid_min, dynamic_uid_max),
|
||||
'container UID bases' : '@0@…@1@'.format(container_uid_base_min, container_uid_base_max),
|
||||
'static UID/GID allocations' : ' '.join(static_ugids),
|
||||
'/dev/kvm access mode' : get_option('dev-kvm-mode'),
|
||||
'render group access mode' : get_option('group-render-mode'),
|
||||
'certificate root directory' : get_option('certificate-root'),
|
||||
'support URL' : support_url,
|
||||
'nobody user name' : nobody_user,
|
||||
'nobody group name' : nobody_group,
|
||||
'fallback hostname' : get_option('fallback-hostname'),
|
||||
'default DNSSEC mode' : default_dnssec,
|
||||
'default DNS-over-TLS mode' : default_dns_over_tls,
|
||||
'default mDNS mode' : default_mdns,
|
||||
'default LLMNR mode' : default_llmnr,
|
||||
'default DNS servers' : dns_servers.split(' '),
|
||||
'default NTP servers' : ntp_servers.split(' '),
|
||||
'default cgroup hierarchy' : default_hierarchy,
|
||||
'default net.naming-scheme value' : default_net_naming_scheme,
|
||||
'default KillUserProcesses value' : kill_user_processes,
|
||||
'default locale' : default_locale,
|
||||
'default user $PATH' :
|
||||
default_user_path != '' ? default_user_path : '(same as system services)',
|
||||
'systemd service watchdog' : service_watchdog == '' ? 'disabled' : service_watchdog,
|
||||
'time epoch' : '@0@ (@1@)'.format(time_epoch, alt_time_epoch)})
|
||||
|
||||
# TODO:
|
||||
# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
|
||||
@ -3836,15 +3799,17 @@ status += [
|
||||
# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
|
||||
|
||||
if conf.get('ENABLE_EFI') == 1
|
||||
status += 'efi arch: @0@'.format(efi_arch)
|
||||
summary({'efi arch' : efi_arch},
|
||||
section : 'Extensible Firmware Interface')
|
||||
|
||||
if have_gnu_efi
|
||||
status += [
|
||||
'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
|
||||
'EFI CC @0@'.format(' '.join(efi_cc)),
|
||||
'EFI lds: @0@'.format(efi_lds),
|
||||
'EFI crt0: @0@'.format(efi_crt0),
|
||||
'EFI include directory: @0@'.format(efi_incdir)]
|
||||
summary({
|
||||
'EFI machine type' : EFI_MACHINE_TYPE_NAME,
|
||||
'EFI CC' : '@0@'.format(' '.join(efi_cc)),
|
||||
'EFI lds' : efi_lds,
|
||||
'EFI crt0' : efi_crt0,
|
||||
'EFI include directory' : efi_incdir},
|
||||
section : 'Extensible Firmware Interface')
|
||||
endif
|
||||
endif
|
||||
|
||||
@ -3999,13 +3964,10 @@ else
|
||||
missing += 'DNS-over-TLS'
|
||||
endif
|
||||
|
||||
status += [
|
||||
'',
|
||||
'enabled features: @0@'.format(', '.join(found)),
|
||||
'',
|
||||
'disabled features: @0@'.format(', '.join(missing)),
|
||||
'']
|
||||
message('\n '.join(status))
|
||||
summary({
|
||||
'enabled' : ', '.join(found),
|
||||
'disabled' : ', '.join(missing)},
|
||||
section : 'Features')
|
||||
|
||||
if rootprefixdir != rootprefix_default
|
||||
warning('\n' +
|
||||
|
||||
@ -12,7 +12,7 @@ if conf.get('ENABLE_NETWORKD') == 1
|
||||
|
||||
if install_sysconfdir
|
||||
meson.add_install_script('sh', '-c',
|
||||
mkdir_p.format(join_paths(sysconfdir, 'systemd/network')))
|
||||
mkdir_p.format(sysconfdir / 'systemd/network'))
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ if bashcompletiondir == ''
|
||||
if bash_completion.found()
|
||||
bashcompletiondir = bash_completion.get_pkgconfig_variable('completionsdir')
|
||||
else
|
||||
bashcompletiondir = join_paths(datadir, 'bash-completion/completions')
|
||||
bashcompletiondir = datadir / 'bash-completion/completions'
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
zshcompletiondir = get_option('zshcompletiondir')
|
||||
if zshcompletiondir == ''
|
||||
zshcompletiondir = join_paths(datadir, 'zsh/site-functions')
|
||||
zshcompletiondir = datadir / 'zsh/site-functions'
|
||||
endif
|
||||
|
||||
custom_target(
|
||||
|
||||
@ -71,14 +71,14 @@ if conf.get('ENABLE_EFI') == 1 and get_option('gnu-efi') != 'false'
|
||||
efi_libdir = get_option('efi-libdir')
|
||||
if efi_libdir == ''
|
||||
# New location first introduced with gnu-efi 3.0.11
|
||||
efi_libdir = join_paths('/usr/lib/gnuefi', EFI_MACHINE_TYPE_NAME)
|
||||
efi_libdir = '/usr/lib/gnuefi' / EFI_MACHINE_TYPE_NAME
|
||||
cmd = run_command(test, '-e', efi_libdir)
|
||||
|
||||
if cmd.returncode() != 0
|
||||
# Fall back to the old approach
|
||||
cmd = run_command(efi_cc + ['-print-multi-os-directory'])
|
||||
if cmd.returncode() == 0
|
||||
path = join_paths('/usr/lib', cmd.stdout().strip())
|
||||
path = '/usr/lib' / cmd.stdout().strip()
|
||||
cmd = run_command(env, 'realpath', '-e', path)
|
||||
if cmd.returncode() == 0
|
||||
efi_libdir = cmd.stdout().strip()
|
||||
@ -148,13 +148,13 @@ if have_gnu_efi
|
||||
|
||||
efi_location_map = [
|
||||
# New locations first introduced with gnu-efi 3.0.11
|
||||
[join_paths(efi_libdir, 'efi.lds'),
|
||||
join_paths(efi_libdir, 'crt0.o')],
|
||||
[efi_libdir / 'efi.lds',
|
||||
efi_libdir / 'crt0.o'],
|
||||
# Older locations...
|
||||
[join_paths(efi_libdir, 'gnuefi', 'elf_@0@_efi.lds'.format(gnu_efi_path_arch)),
|
||||
join_paths(efi_libdir, 'gnuefi', 'crt0-efi-@0@.o'.format(gnu_efi_path_arch))],
|
||||
[join_paths(efi_libdir, 'elf_@0@_efi.lds'.format(gnu_efi_path_arch)),
|
||||
join_paths(efi_libdir, 'crt0-efi-@0@.o'.format(gnu_efi_path_arch))]]
|
||||
[efi_libdir / 'gnuefi' / 'elf_@0@_efi.lds'.format(gnu_efi_path_arch),
|
||||
efi_libdir / 'gnuefi' / 'crt0-efi-@0@.o'.format(gnu_efi_path_arch)],
|
||||
[efi_libdir / 'elf_@0@_efi.lds'.format(gnu_efi_path_arch),
|
||||
efi_libdir / 'crt0-efi-@0@.o'.format(gnu_efi_path_arch)]]
|
||||
efi_lds = ''
|
||||
foreach location : efi_location_map
|
||||
if efi_lds == ''
|
||||
@ -191,7 +191,7 @@ if have_gnu_efi
|
||||
'-nostdlib',
|
||||
'-std=gnu99',
|
||||
'-isystem', efi_incdir,
|
||||
'-isystem', join_paths(efi_incdir, gnu_efi_path_arch),
|
||||
'-isystem', efi_incdir / gnu_efi_path_arch,
|
||||
'-I', fundamental_path,
|
||||
'-DSD_BOOT',
|
||||
'-include', efi_config_h,
|
||||
|
||||
@ -578,8 +578,7 @@ static int manager_setup_signals(Manager *m) {
|
||||
SIGRTMIN+22, /* systemd: set log level to LOG_DEBUG */
|
||||
SIGRTMIN+23, /* systemd: set log level to LOG_INFO */
|
||||
SIGRTMIN+24, /* systemd: Immediate exit (--user only) */
|
||||
|
||||
/* .. one free signal here ... */
|
||||
SIGRTMIN+25, /* systemd: reexecute manager */
|
||||
|
||||
/* Apparently Linux on hppa had fewer RT signals until v3.18,
|
||||
* SIGRTMAX was SIGRTMIN+25, and then SIGRTMIN was lowered,
|
||||
@ -2846,6 +2845,10 @@ static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t
|
||||
/* This is a nop on init */
|
||||
break;
|
||||
|
||||
case 25:
|
||||
m->objective = MANAGER_REEXECUTE;
|
||||
break;
|
||||
|
||||
case 26:
|
||||
case 29: /* compatibility: used to be mapped to LOG_TARGET_SYSLOG_OR_KMSG */
|
||||
manager_restore_original_log_target(m);
|
||||
|
||||
@ -210,9 +210,9 @@ meson.add_install_script('sh', '-c', mkdir_p.format(systemgeneratordir))
|
||||
meson.add_install_script('sh', '-c', mkdir_p.format(usergeneratordir))
|
||||
|
||||
if install_sysconfdir
|
||||
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'system')))
|
||||
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'user')))
|
||||
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(sysconfdir, 'xdg/systemd')))
|
||||
meson.add_install_script('sh', '-c', mkdir_p.format(pkgsysconfdir / 'system'))
|
||||
meson.add_install_script('sh', '-c', mkdir_p.format(pkgsysconfdir / 'user'))
|
||||
meson.add_install_script('sh', '-c', mkdir_p.format(sysconfdir / 'xdg/systemd'))
|
||||
endif
|
||||
|
||||
############################################################
|
||||
|
||||
@ -5,7 +5,7 @@ if conf.get('HAVE_LIBCRYPTSETUP_PLUGINS') == 1
|
||||
cryptsetup_token_c_args = ['-fvisibility=hidden']
|
||||
|
||||
cryptsetup_token_sym = files('cryptsetup-token.sym')
|
||||
cryptsetup_token_sym_path = join_paths(meson.current_source_dir(), 'cryptsetup-token.sym')
|
||||
cryptsetup_token_sym_path = meson.current_source_dir() / 'cryptsetup-token.sym'
|
||||
|
||||
if conf.get('HAVE_TPM2') == 1
|
||||
cryptsetup_token_systemd_tpm2_sources = files('''
|
||||
|
||||
@ -14,8 +14,8 @@ sources = '''
|
||||
|
||||
# for sd-boot
|
||||
fundamental_source_paths = []
|
||||
foreach s : sources
|
||||
fundamental_source_paths += join_paths(meson.current_source_dir(), s)
|
||||
foreach source : sources
|
||||
fundamental_source_paths += meson.current_source_dir() / source
|
||||
endforeach
|
||||
|
||||
# for libbasic
|
||||
|
||||
@ -62,7 +62,7 @@ endforeach
|
||||
|
||||
if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
|
||||
install_data('browse.html',
|
||||
install_dir : join_paths(pkgdatadir, 'gatewayd'))
|
||||
install_dir : pkgdatadir / 'gatewayd')
|
||||
|
||||
if get_option('create-log-dirs')
|
||||
meson.add_install_script('sh', '-c',
|
||||
|
||||
@ -15,7 +15,7 @@ if want_kernel_install
|
||||
|
||||
if install_sysconfdir
|
||||
meson.add_install_script('sh', '-c',
|
||||
mkdir_p.format(join_paths(sysconfdir, 'kernel/install.d')))
|
||||
mkdir_p.format(sysconfdir / 'kernel/install.d'))
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
@ -171,7 +171,7 @@ libsystemd_static = static_library(
|
||||
c_args : libsystemd_c_args)
|
||||
|
||||
libsystemd_sym = files('libsystemd.sym')
|
||||
libsystemd_sym_path = join_paths(meson.current_source_dir(), 'libsystemd.sym')
|
||||
libsystemd_sym_path = meson.current_source_dir() / 'libsystemd.sym'
|
||||
|
||||
static_libsystemd = get_option('static-libsystemd')
|
||||
static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
|
||||
|
||||
@ -19,10 +19,10 @@ libudev_sources = files(
|
||||
libudev_includes = [includes, include_directories('.')]
|
||||
|
||||
libudev_sym = files('libudev.sym')
|
||||
libudev_sym_path = join_paths(meson.current_source_dir(), 'libudev.sym')
|
||||
libudev_sym_path = meson.current_source_dir() / 'libudev.sym'
|
||||
|
||||
install_headers('libudev.h')
|
||||
libudev_h_path = join_paths(meson.current_source_dir(), 'libudev.h')
|
||||
libudev_h_path = meson.current_source_dir() / 'libudev.h'
|
||||
|
||||
libudev_basic = static_library(
|
||||
'udev-basic',
|
||||
|
||||
@ -20,8 +20,8 @@ endif
|
||||
# If you know a way that allows the same variables to be used
|
||||
# in sources list and concatenated to a string for test_env,
|
||||
# let me know.
|
||||
kbd_model_map = join_paths(meson.current_source_dir(), 'kbd-model-map')
|
||||
language_fallback_map = join_paths(meson.current_source_dir(), 'language-fallback-map')
|
||||
kbd_model_map = meson.current_source_dir() / 'kbd-model-map'
|
||||
language_fallback_map = meson.current_source_dir() / 'language-fallback-map'
|
||||
|
||||
if conf.get('ENABLE_LOCALED') == 1
|
||||
install_data('kbd-model-map',
|
||||
|
||||
@ -279,12 +279,28 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u
|
||||
}
|
||||
|
||||
} else if (ev.type == EV_KEY && ev.value == 0) {
|
||||
if (ev.code == KEY_RESTART) {
|
||||
if (b->manager->reboot_key_long_press_event_source) {
|
||||
|
||||
switch (ev.code) {
|
||||
|
||||
case KEY_POWER:
|
||||
case KEY_POWER2:
|
||||
if (b->manager->power_key_long_press_event_source) {
|
||||
/* Long press event timer is still pending and key release
|
||||
event happened. This means that key press duration was
|
||||
insufficient to trigger a long press event
|
||||
*/
|
||||
log_struct(LOG_INFO,
|
||||
LOG_MESSAGE("Power key pressed short."),
|
||||
"MESSAGE_ID=" SD_MESSAGE_POWER_KEY_STR);
|
||||
|
||||
b->manager->power_key_long_press_event_source = sd_event_source_unref(b->manager->power_key_long_press_event_source);
|
||||
|
||||
manager_handle_action(b->manager, INHIBIT_HANDLE_POWER_KEY, b->manager->handle_power_key, b->manager->power_key_ignore_inhibited, true);
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_RESTART:
|
||||
if (b->manager->reboot_key_long_press_event_source) {
|
||||
log_struct(LOG_INFO,
|
||||
LOG_MESSAGE("Reboot key pressed short."),
|
||||
"MESSAGE_ID=" SD_MESSAGE_REBOOT_KEY_STR);
|
||||
@ -293,6 +309,30 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u
|
||||
|
||||
manager_handle_action(b->manager, INHIBIT_HANDLE_REBOOT_KEY, b->manager->handle_reboot_key, b->manager->reboot_key_ignore_inhibited, true);
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_SLEEP:
|
||||
if (b->manager->suspend_key_long_press_event_source) {
|
||||
log_struct(LOG_INFO,
|
||||
LOG_MESSAGE("Suspend key pressed short."),
|
||||
"MESSAGE_ID=" SD_MESSAGE_SUSPEND_KEY_STR);
|
||||
|
||||
b->manager->suspend_key_long_press_event_source = sd_event_source_unref(b->manager->suspend_key_long_press_event_source);
|
||||
|
||||
manager_handle_action(b->manager, INHIBIT_HANDLE_SUSPEND_KEY, b->manager->handle_suspend_key, b->manager->suspend_key_ignore_inhibited, true);
|
||||
}
|
||||
break;
|
||||
case KEY_SUSPEND:
|
||||
if (b->manager->hibernate_key_long_press_event_source) {
|
||||
log_struct(LOG_INFO,
|
||||
LOG_MESSAGE("Hibernate key pressed short."),
|
||||
"MESSAGE_ID=" SD_MESSAGE_HIBERNATE_KEY_STR);
|
||||
|
||||
b->manager->hibernate_key_long_press_event_source = sd_event_source_unref(b->manager->hibernate_key_long_press_event_source);
|
||||
|
||||
manager_handle_action(b->manager, INHIBIT_HANDLE_HIBERNATE_KEY, b->manager->handle_hibernate_key, b->manager->hibernate_key_ignore_inhibited, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
} else if (ev.type == EV_SW && ev.value > 0) {
|
||||
|
||||
@ -22,8 +22,8 @@ if conf.get('ENABLE_PORTABLED') == 1
|
||||
install_data('org.freedesktop.portable1.policy',
|
||||
install_dir : polkitpolicydir)
|
||||
|
||||
install_data('profile/default/service.conf', install_dir : join_paths(profiledir, 'default'))
|
||||
install_data('profile/nonetwork/service.conf', install_dir : join_paths(profiledir, 'nonetwork'))
|
||||
install_data('profile/strict/service.conf', install_dir : join_paths(profiledir, 'strict'))
|
||||
install_data('profile/trusted/service.conf', install_dir : join_paths(profiledir, 'trusted'))
|
||||
install_data('profile/default/service.conf', install_dir : profiledir / 'default')
|
||||
install_data('profile/nonetwork/service.conf', install_dir : profiledir / 'nonetwork')
|
||||
install_data('profile/strict/service.conf', install_dir : profiledir / 'strict')
|
||||
install_data('profile/trusted/service.conf', install_dir : profiledir / 'trusted')
|
||||
endif
|
||||
|
||||
@ -77,7 +77,7 @@ foreach header : _systemd_headers + _not_installed_headers + [libudev_h_path]
|
||||
check_compilation_sh,
|
||||
args : cc.cmd_array() + ['-c', '-x'] + opt +
|
||||
['-Werror', '-include',
|
||||
join_paths(meson.current_source_dir(), header)])
|
||||
meson.current_source_dir() / header])
|
||||
endif
|
||||
endforeach
|
||||
endforeach
|
||||
|
||||
@ -153,7 +153,7 @@ endforeach
|
||||
|
||||
if install_sysconfdir_samples
|
||||
install_data('udev.conf',
|
||||
install_dir : join_paths(sysconfdir, 'udev'))
|
||||
install_dir : sysconfdir / 'udev')
|
||||
endif
|
||||
|
||||
custom_target(
|
||||
@ -167,7 +167,7 @@ custom_target(
|
||||
|
||||
if install_sysconfdir
|
||||
meson.add_install_script('sh', '-c',
|
||||
mkdir_p.format(join_paths(sysconfdir, 'udev/rules.d')))
|
||||
mkdir_p.format(sysconfdir / 'udev/rules.d'))
|
||||
endif
|
||||
|
||||
fuzzers += [
|
||||
|
||||
@ -23,5 +23,5 @@ custom_target(
|
||||
|
||||
if install_sysconfdir
|
||||
meson.add_install_script('sh', '-c',
|
||||
mkdir_p.format(join_paths(sysconfdir, 'sysctl.d')))
|
||||
mkdir_p.format(sysconfdir / 'sysctl.d'))
|
||||
endif
|
||||
|
||||
@ -140,7 +140,7 @@ if want_tests != 'false' and dmi_arches.contains(host_machine.cpu_family())
|
||||
endif
|
||||
|
||||
foreach p : out.stdout().split()
|
||||
source = join_paths(project_source_root, p)
|
||||
source = project_source_root / p
|
||||
name = 'dmidecode_' + p.split('/')[-1].split('.')[0]
|
||||
|
||||
test(name,
|
||||
|
||||
@ -52,6 +52,5 @@ endforeach
|
||||
|
||||
if enable_tmpfiles and install_sysconfdir
|
||||
meson.add_install_script(
|
||||
'sh', '-c',
|
||||
mkdir_p.format(join_paths(sysconfdir, 'tmpfiles.d')))
|
||||
'sh', '-c', mkdir_p.format(sysconfdir / 'tmpfiles.d'))
|
||||
endif
|
||||
|
||||
@ -307,17 +307,17 @@ install_data('user-.slice.d/10-defaults.conf',
|
||||
|
||||
if install_sysconfdir
|
||||
meson.add_install_script(meson_make_symlink,
|
||||
join_paths(pkgsysconfdir, 'user'),
|
||||
join_paths(sysconfdir, 'xdg/systemd/user'))
|
||||
pkgsysconfdir / 'user',
|
||||
sysconfdir / 'xdg/systemd/user')
|
||||
endif
|
||||
meson.add_install_script(meson_make_symlink,
|
||||
join_paths(dbussystemservicedir, 'org.freedesktop.systemd1.service'),
|
||||
join_paths(dbussessionservicedir, 'org.freedesktop.systemd1.service'))
|
||||
dbussystemservicedir / 'org.freedesktop.systemd1.service',
|
||||
dbussessionservicedir / 'org.freedesktop.systemd1.service')
|
||||
if conf.get('HAVE_SYSV_COMPAT') == 1
|
||||
foreach i : [1, 2, 3, 4, 5]
|
||||
meson.add_install_script(
|
||||
'sh', '-c',
|
||||
mkdir_p.format(join_paths(systemunitdir, 'runlevel@0@.target.wants'.format(i))))
|
||||
mkdir_p.format(systemunitdir / 'runlevel@0@.target.wants'.format(i)))
|
||||
endforeach
|
||||
endif
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user