diff options
author | igo95862 <igo95862@yandex.ru> | 2021-07-24 10:30:42 +0300 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2021-12-10 08:51:58 +0100 |
commit | e3c689245562ec5eaf06730ef33d697efccf0d62 (patch) | |
tree | 445260de86947d6d0853944b7ab04387fb6d2c5c /tools | |
parent | 082c67616511c7c08627eaf19af7e59a7f360479 (diff) | |
download | systemd-e3c689245562ec5eaf06730ef33d697efccf0d62.tar.gz |
Export D-Bus interfaces to /usr/share/dbus-1/interfaces
Pass -Ddbus-interfaces-dir=no to meson to disable export
Interfaces from:
org.freedesktop.home1
org.freedesktop.hostname1
org.freedesktop.import1
org.freedesktop.locale1
org.freedesktop.LogControl1
org.freedesktop.login1
org.freedesktop.machine1
org.freedesktop.oom1
org.freedesktop.portable1
org.freedesktop.resolve1
org.freedesktop.systemd1
org.freedesktop.timedate1
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/dbus_exporter.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tools/dbus_exporter.py b/tools/dbus_exporter.py new file mode 100755 index 0000000000..4da8b82af4 --- /dev/null +++ b/tools/dbus_exporter.py @@ -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() |