mirror of
https://github.com/systemd/systemd
synced 2026-04-10 09:04:50 +02:00
Compare commits
6 Commits
e67a5c14f0
...
ea5e55b311
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ea5e55b311 | ||
|
|
e3c6892455 | ||
|
|
082c676165 | ||
|
|
ee1eecfe4d | ||
|
|
2dd9285bac | ||
|
|
9dc78edccc |
@ -171,7 +171,7 @@
|
||||
<para><varname>KERNEL_INSTALL_MACHINE_ID=</varname> is set for the plugins to the desired <replaceable>MACHINE-ID</replaceable> –
|
||||
either 32 hexadecimal characters or the special value <literal>Default</literal>.</para>
|
||||
<para><varname>KERNEL_INSTALL_BOOT_ROOT=</varname> is set for the plugins to the root directory (mount point, usually) of the hierarchy
|
||||
where boot-loader entries, kernel images, and associated resources should be placed. Can be overriden by setting <varname>BOOT_ROOT=</varname>.</para>
|
||||
where boot-loader entries, kernel images, and associated resources should be placed. Can be overridden by setting <varname>BOOT_ROOT=</varname>.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@ -1551,7 +1551,7 @@ Table=1234</programlisting></para>
|
||||
<term><varname>IPServiceType=</varname></term>
|
||||
<listitem>
|
||||
<para>Takes one of the special values <literal>none</literal>, <literal>CS6</literal>, or
|
||||
<literal>CS4</literal>. When <literal>none</literal> no IP sevice type is set to the packet
|
||||
<literal>CS4</literal>. When <literal>none</literal> no IP service type is set to the packet
|
||||
sent from the DHCPv4 client. When <literal>CS6</literal> (network control) or
|
||||
<literal>CS4</literal> (realtime), the corresponding service type will be set. Defaults to
|
||||
<literal>CS6</literal>.</para>
|
||||
|
||||
37
meson.build
37
meson.build
@ -1693,6 +1693,7 @@ update_hwdb_sh = find_program('tools/update-hwdb.sh')
|
||||
update_hwdb_autosuspend_sh = find_program('tools/update-hwdb-autosuspend.sh')
|
||||
update_syscall_tables_sh = find_program('tools/update-syscall-tables.sh')
|
||||
xml_helper_py = find_program('tools/xml_helper.py')
|
||||
export_dbus_interfaces_py = find_program('tools/dbus_exporter.py')
|
||||
|
||||
#####################################################################
|
||||
|
||||
@ -1708,6 +1709,13 @@ add_project_arguments('-include', 'config.h', language : 'c')
|
||||
# usually, but not always, installed in /bin.
|
||||
public_programs = []
|
||||
|
||||
# D-Bus introspection XML export
|
||||
dbus_programs = []
|
||||
dbus_interfaces_dir = get_option('dbus-interfaces-dir')
|
||||
if dbus_interfaces_dir == ''
|
||||
dbus_interfaces_dir = get_option('datadir') + '/dbus-1'
|
||||
endif
|
||||
|
||||
tests = []
|
||||
fuzzers = []
|
||||
|
||||
@ -1975,7 +1983,7 @@ endforeach
|
||||
|
||||
############################################################
|
||||
|
||||
executable(
|
||||
dbus_programs += executable(
|
||||
'systemd',
|
||||
systemd_sources,
|
||||
include_directories : includes,
|
||||
@ -2144,7 +2152,7 @@ if conf.get('HAVE_BLKID') == 1
|
||||
endif
|
||||
|
||||
if conf.get('ENABLE_RESOLVE') == 1
|
||||
executable(
|
||||
dbus_programs += executable(
|
||||
'systemd-resolved',
|
||||
systemd_resolved_sources,
|
||||
include_directories : resolve_includes,
|
||||
@ -2181,7 +2189,7 @@ if conf.get('ENABLE_RESOLVE') == 1
|
||||
endif
|
||||
|
||||
if conf.get('ENABLE_LOGIND') == 1
|
||||
executable(
|
||||
dbus_programs += executable(
|
||||
'systemd-logind',
|
||||
systemd_logind_sources,
|
||||
include_directories : includes,
|
||||
@ -2327,7 +2335,7 @@ public_programs += executable(
|
||||
install_dir : rootbindir)
|
||||
|
||||
if conf.get('ENABLE_PORTABLED') == 1
|
||||
executable(
|
||||
dbus_programs += executable(
|
||||
'systemd-portabled',
|
||||
systemd_portabled_sources,
|
||||
include_directories : includes,
|
||||
@ -2407,7 +2415,7 @@ if conf.get('ENABLE_HOMED') == 1
|
||||
install : true,
|
||||
install_dir : rootlibexecdir)
|
||||
|
||||
executable(
|
||||
dbus_programs += executable(
|
||||
'systemd-homed',
|
||||
systemd_homed_sources,
|
||||
include_directories : home_includes,
|
||||
@ -2610,7 +2618,7 @@ if conf.get('ENABLE_XDG_AUTOSTART') == 1
|
||||
endif
|
||||
|
||||
if conf.get('ENABLE_HOSTNAMED') == 1
|
||||
executable(
|
||||
dbus_programs += executable(
|
||||
'systemd-hostnamed',
|
||||
'src/hostname/hostnamed.c',
|
||||
include_directories : includes,
|
||||
@ -2637,7 +2645,7 @@ if conf.get('ENABLE_LOCALED') == 1
|
||||
deps = []
|
||||
endif
|
||||
|
||||
executable(
|
||||
dbus_programs += executable(
|
||||
'systemd-localed',
|
||||
systemd_localed_sources,
|
||||
include_directories : includes,
|
||||
@ -2657,7 +2665,7 @@ if conf.get('ENABLE_LOCALED') == 1
|
||||
endif
|
||||
|
||||
if conf.get('ENABLE_TIMEDATED') == 1
|
||||
executable(
|
||||
dbus_programs += executable(
|
||||
'systemd-timedated',
|
||||
'src/timedate/timedated.c',
|
||||
include_directories : includes,
|
||||
@ -2701,7 +2709,7 @@ if conf.get('ENABLE_TIMESYNCD') == 1
|
||||
endif
|
||||
|
||||
if conf.get('ENABLE_MACHINED') == 1
|
||||
executable(
|
||||
dbus_programs += executable(
|
||||
'systemd-machined',
|
||||
systemd_machined_sources,
|
||||
include_directories : includes,
|
||||
@ -2726,7 +2734,7 @@ if conf.get('ENABLE_MACHINED') == 1
|
||||
endif
|
||||
|
||||
if conf.get('ENABLE_IMPORTD') == 1
|
||||
executable(
|
||||
dbus_programs += executable(
|
||||
'systemd-importd',
|
||||
systemd_importd_sources,
|
||||
include_directories : includes,
|
||||
@ -2885,7 +2893,7 @@ if conf.get('ENABLE_PSTORE') == 1
|
||||
endif
|
||||
|
||||
if conf.get('ENABLE_OOMD') == 1
|
||||
executable('systemd-oomd',
|
||||
dbus_programs += executable('systemd-oomd',
|
||||
systemd_oomd_sources,
|
||||
include_directories : includes,
|
||||
link_with : [libshared],
|
||||
@ -3829,6 +3837,13 @@ run_target(
|
||||
alias_target('update-dbus-docs', update_dbus_docs)
|
||||
alias_target('update-man-rules', update_man_rules)
|
||||
|
||||
custom_target(
|
||||
'export-dbus-interfaces',
|
||||
output : 'interfaces',
|
||||
install : dbus_interfaces_dir != 'no',
|
||||
install_dir : dbus_interfaces_dir,
|
||||
command : [export_dbus_interfaces_py, '@OUTPUT@', dbus_programs])
|
||||
|
||||
############################################################
|
||||
|
||||
alt_time_epoch = run_command('date', '-Is', '-u', '-d', '@@0@'.format(time_epoch),
|
||||
|
||||
@ -479,3 +479,6 @@ option('analyze', type: 'boolean', value: 'true',
|
||||
|
||||
option('bpf-framework', type : 'combo', choices : ['auto', 'true', 'false'],
|
||||
description: 'build BPF programs from source code in restricted C')
|
||||
|
||||
option('dbus-interfaces-dir', type : 'string',
|
||||
description : 'export D-Bus introspection XML as standalone files')
|
||||
|
||||
@ -551,10 +551,19 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
if (arg_lines == ARG_LINES_DEFAULT)
|
||||
arg_lines = 1000;
|
||||
|
||||
arg_boot = true;
|
||||
arg_boot_id = SD_ID128_NULL;
|
||||
arg_boot_offset = 0;
|
||||
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
arg_follow = true;
|
||||
|
||||
arg_boot = true;
|
||||
arg_boot_id = SD_ID128_NULL;
|
||||
arg_boot_offset = 0;
|
||||
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
|
||||
@ -1196,7 +1196,7 @@ int link_build_json(Link *link, JsonVariant **ret) {
|
||||
JSON_BUILD_PAIR_STRING_NON_EMPTY("SSID", link->ssid),
|
||||
JSON_BUILD_PAIR_ETHER_ADDR_NON_NULL("BSSID", &link->bssid),
|
||||
/* link state */
|
||||
JSON_BUILD_PAIR_STRING("SetupState", link_state_to_string(link->state)),
|
||||
JSON_BUILD_PAIR_STRING("AdministrativeState", link_state_to_string(link->state)),
|
||||
JSON_BUILD_PAIR_STRING("OperationalState", link_operstate_to_string(link->operstate)),
|
||||
JSON_BUILD_PAIR_STRING("CarrierState", link_carrier_state_to_string(link->carrier_state)),
|
||||
JSON_BUILD_PAIR_STRING("AddressState", link_address_state_to_string(link->address_state)),
|
||||
|
||||
@ -121,7 +121,7 @@ struct JsonVariant {
|
||||
|
||||
/* Let's make sure this structure isn't increased in size accidentally. This check is only for our most relevant arch
|
||||
* (x86-64). */
|
||||
#ifdef __x86_64__
|
||||
#if defined(__x86_64__) && __SIZEOF_POINTER__ == 8
|
||||
assert_cc(sizeof(JsonVariant) == 40U);
|
||||
assert_cc(INLINE_STRING_MAX == 7U);
|
||||
#endif
|
||||
|
||||
@ -4,36 +4,52 @@ if install_tests
|
||||
testdata_dir = testsdir + '/testdata/'
|
||||
|
||||
install_subdir('journal-data',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('units',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('test-execute',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('test-path',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('test-path-util',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('test-umount',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('test-network-generator-conversion',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('testsuite-04.units',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('testsuite-06.units',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('testsuite-10.units',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('testsuite-11.units',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('testsuite-16.units',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('testsuite-28.units',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('testsuite-30.units',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('testsuite-52.units',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
install_subdir('testsuite-63.units',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
|
||||
install_data(kbd_model_map,
|
||||
@ -53,6 +69,7 @@ if install_tests
|
||||
|
||||
if conf.get('ENABLE_RESOLVE') == 1
|
||||
install_subdir('test-resolve',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
endif
|
||||
|
||||
@ -75,6 +92,7 @@ if install_tests and conf.get('ENABLE_SYSUSERS') == 1
|
||||
install_data(test_sysusers_sh,
|
||||
install_dir : testsdir)
|
||||
install_subdir('test-sysusers',
|
||||
exclude_files : '.gitattributes',
|
||||
install_dir : testdata_dir)
|
||||
endif
|
||||
|
||||
|
||||
61
tools/dbus_exporter.py
Executable file
61
tools/dbus_exporter.py
Executable file
@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env python3
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
from argparse import ArgumentParser
|
||||
from pathlib import Path
|
||||
from subprocess import run, PIPE
|
||||
|
||||
|
||||
def extract_interfaces_xml(output_dir, executable):
|
||||
list_interfaces_process = run(
|
||||
args=[executable.absolute(), '--bus-introspect', 'list'],
|
||||
stdout=PIPE,
|
||||
check=True,
|
||||
universal_newlines=True,
|
||||
)
|
||||
|
||||
interfaces_lines = list_interfaces_process.stdout.splitlines()
|
||||
|
||||
interface_names = [x.split()[1] for x in interfaces_lines]
|
||||
|
||||
for interface_name in interface_names:
|
||||
interface_introspection_run = run(
|
||||
args=[executable.absolute(), '--bus-introspect', interface_name],
|
||||
stdout=PIPE,
|
||||
check=True,
|
||||
universal_newlines=True,
|
||||
)
|
||||
|
||||
interface_file_name = output_dir / (interface_name + '.xml')
|
||||
with open(interface_file_name, mode='w') as f:
|
||||
f.write(interface_introspection_run.stdout)
|
||||
interface_file_name.chmod(0o644)
|
||||
|
||||
|
||||
def iterate_executables(output_dir, executables):
|
||||
output_dir.mkdir(mode=0o755, exist_ok=True)
|
||||
|
||||
for exe in executables:
|
||||
extract_interfaces_xml(output_dir, exe)
|
||||
|
||||
|
||||
def main():
|
||||
parser = ArgumentParser()
|
||||
|
||||
parser.add_argument(
|
||||
'output',
|
||||
type=Path,
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'executables',
|
||||
type=Path,
|
||||
nargs='+',
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
iterate_executables(args.output, args.executables)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Loading…
x
Reference in New Issue
Block a user