From 1f6b4144f56f17061f47709bb683dcc3e2ac9fec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 16 Sep 2020 18:30:31 +0200 Subject: [PATCH 1/4] man: update autogenerated dbus docs Follow-up for 9df2cdd8ec. --- man/org.freedesktop.systemd1.xml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/man/org.freedesktop.systemd1.xml b/man/org.freedesktop.systemd1.xml index 3d83324108..48bef80de1 100644 --- a/man/org.freedesktop.systemd1.xml +++ b/man/org.freedesktop.systemd1.xml @@ -2655,6 +2655,8 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice { @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly i SystemCallErrorNumber = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly (bas) SystemCallLog = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s Personality = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly b LockPersonality = ...; @@ -3156,6 +3158,8 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice { + + @@ -3714,6 +3718,8 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice { + + @@ -4356,6 +4362,8 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket { @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly i SystemCallErrorNumber = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly (bas) SystemCallLog = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s Personality = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly b LockPersonality = ...; @@ -4883,6 +4891,8 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket { + + @@ -5441,6 +5451,8 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket { + + @@ -6009,6 +6021,8 @@ node /org/freedesktop/systemd1/unit/home_2emount { @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly i SystemCallErrorNumber = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly (bas) SystemCallLog = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s Personality = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly b LockPersonality = ...; @@ -6466,6 +6480,8 @@ node /org/freedesktop/systemd1/unit/home_2emount { + + @@ -6944,6 +6960,8 @@ node /org/freedesktop/systemd1/unit/home_2emount { + + @@ -7627,6 +7645,8 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap { @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly i SystemCallErrorNumber = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly (bas) SystemCallLog = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s Personality = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly b LockPersonality = ...; @@ -8070,6 +8090,8 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap { + + @@ -8534,6 +8556,8 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap { + + From 4c8e5f442b5557a32e7d97f451d3d685f2fe26b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 17 Sep 2020 09:02:16 +0200 Subject: [PATCH 2/4] meson: make "developer" mode the default This means that the dbus doc consistency checks will be enabled by default, including in the CI. I think that will work better than current state where people do not enable them and them follow-up patches for the docs like the parent commit must be had. --- docs/HACKING.md | 7 +++++++ meson.build | 1 + meson_options.txt | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/HACKING.md b/docs/HACKING.md index 990f78c9eb..7ec3dde95b 100644 --- a/docs/HACKING.md +++ b/docs/HACKING.md @@ -99,6 +99,13 @@ And after that, head over to your repo on GitHub and click "Compare & pull reque Happy hacking! +## Developer and release modes + +In the default meson configuration (`-Dmode=developer`), certain checks are +enabled that are suitable when hacking on systemd (such as internal +documentation consistency checks). Those are not useful when compiling for code +for distribution and can be disabled by setting `-Dmode=release`. + ## Fuzzers systemd includes fuzzers in `src/fuzz/` that use libFuzzer and are automatically diff --git a/meson.build b/meson.build index e6804900a6..f914ac582e 100644 --- a/meson.build +++ b/meson.build @@ -3503,6 +3503,7 @@ 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), diff --git a/meson_options.txt b/meson_options.txt index 1ad0969a1a..fc9e4379f3 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -4,7 +4,7 @@ option('version-tag', type : 'string', description : 'override the git version string') -option('mode', type : 'combo', choices : ['default', 'developer'], +option('mode', type : 'combo', choices : ['developer', 'release'], description : 'enable additional checks suitable for systemd development') option('split-usr', type : 'combo', choices : ['auto', 'true', 'false'], From 8aaf611b9a38b6687427d2d8109f5d36570ef8de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 18 Sep 2020 18:51:42 +0200 Subject: [PATCH 3/4] update-dbus-docs: skip test lxml is not available --- tools/update-dbus-docs.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/tools/update-dbus-docs.py b/tools/update-dbus-docs.py index 3500d9ce5e..255d7e180f 100755 --- a/tools/update-dbus-docs.py +++ b/tools/update-dbus-docs.py @@ -8,12 +8,11 @@ import os import shlex import subprocess import io -from lxml import etree -PARSER = etree.XMLParser(no_network=True, - remove_comments=False, - strip_cdata=False, - resolve_entities=False) +try: + from lxml import etree +except ModuleNotFoundError as e: + etree = e class NoCommand(Exception): pass @@ -24,6 +23,12 @@ BORING_INTERFACES = [ 'org.freedesktop.DBus.Properties', ] +def xml_parser(): + return etree.XMLParser(no_network=True, + remove_comments=False, + strip_cdata=False, + resolve_entities=False) + def print_method(declarations, elem, *, prefix, file, is_signal=False): name = elem.get('name') klass = 'signal' if is_signal else 'method' @@ -186,7 +191,7 @@ def subst_output(document, programlisting, stats): print(f'{executable} not found, ignoring', file=sys.stderr) return - xml = etree.fromstring(out, parser=PARSER) + xml = etree.fromstring(out, parser=xml_parser()) new_text, declarations, interfaces = xml_to_text(node, xml, only_interface=interface) programlisting.text = '\n' + new_text + ' ' @@ -250,7 +255,7 @@ def subst_output(document, programlisting, stats): def process(page): src = open(page).read() - xml = etree.fromstring(src, parser=PARSER) + xml = etree.fromstring(src, parser=xml_parser()) # print('parsing {}'.format(name), file=sys.stderr) if xml.tag != 'refentry': @@ -288,6 +293,10 @@ def parse_args(): if __name__ == '__main__': opts = parse_args() + if isinstance(etree, Exception): + print(etree, file=sys.stderr) + exit(77 if opts.test else 1) + if not os.path.exists(f'{opts.build_dir}/systemd'): exit(f"{opts.build_dir}/systemd doesn't exist. Use --build-dir=.") From 198fda4f48c99511ad34e436293cfc31c1096056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 20 Sep 2020 13:15:44 +0200 Subject: [PATCH 4/4] update-dbus-docs: skip test if python is too old --- tools/update-dbus-docs.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tools/update-dbus-docs.py b/tools/update-dbus-docs.py index 255d7e180f..14ae30f33c 100755 --- a/tools/update-dbus-docs.py +++ b/tools/update-dbus-docs.py @@ -5,7 +5,6 @@ import argparse import collections import sys import os -import shlex import subprocess import io @@ -14,6 +13,11 @@ try: except ModuleNotFoundError as e: etree = e +try: + from shlex import join as shlex_join +except ImportError as e: + shlex_join = e + class NoCommand(Exception): pass @@ -183,7 +187,7 @@ def subst_output(document, programlisting, stats): interface = programlisting.get('interface') argv = [f'{opts.build_dir}/{executable}', f'--bus-introspect={interface}'] - print(f'COMMAND: {shlex.join(argv)}') + print(f'COMMAND: {shlex_join(argv)}') try: out = subprocess.check_output(argv, text=True) @@ -293,9 +297,10 @@ def parse_args(): if __name__ == '__main__': opts = parse_args() - if isinstance(etree, Exception): - print(etree, file=sys.stderr) - exit(77 if opts.test else 1) + for item in (etree, shlex_join): + if isinstance(item, Exception): + print(item, file=sys.stderr) + exit(77 if opts.test else 1) if not os.path.exists(f'{opts.build_dir}/systemd'): exit(f"{opts.build_dir}/systemd doesn't exist. Use --build-dir=.")