summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2022-03-22 21:51:33 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-03-23 11:37:35 +0900
commit77d45f1f8302ebe4cb9be680c3f395db839fc864 (patch)
treecd6b544fb6004a175efd7ea96e7aea739a341b56
parent14acae357bb7928cadb10335951157559a39ac2e (diff)
downloadsystemd-77d45f1f8302ebe4cb9be680c3f395db839fc864.tar.gz
meson: replace sh+find with an internal glob in the python helper
As suggested in https://github.com/systemd/systemd/pull/22810#discussion_r831708052 This makes the whole thing simpler. A glob is passed to helper which then resolves it on its own. This way it's trivial to call the helper with a different set of files for testing.
-rw-r--r--man/meson.build7
-rw-r--r--meson.build1
-rwxr-xr-xtools/update-man-rules.py21
3 files changed, 19 insertions, 10 deletions
diff --git a/man/meson.build b/man/meson.build
index 069772467e..83b368115b 100644
--- a/man/meson.build
+++ b/man/meson.build
@@ -233,8 +233,7 @@ 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())],
+ command : [update_man_rules_py,
+ '@0@/man/*.xml'.format(project_source_root),
+ '@0@/rules/meson.build'.format(meson.current_source_dir())],
depends : custom_entities_ent)
diff --git a/meson.build b/meson.build
index 05dcc79cfa..7de1baaf70 100644
--- a/meson.build
+++ b/meson.build
@@ -1803,6 +1803,7 @@ make_directive_index_py = find_program('tools/make-directive-index.py')
make_man_index_py = find_program('tools/make-man-index.py')
meson_render_jinja2 = find_program('tools/meson-render-jinja2.py')
update_dbus_docs_py = find_program('tools/update-dbus-docs.py')
+update_man_rules_py = find_program('tools/update-man-rules.py')
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')
diff --git a/tools/update-man-rules.py b/tools/update-man-rules.py
index 31ed91c432..3a8c31dc35 100755
--- a/tools/update-man-rules.py
+++ b/tools/update-man-rules.py
@@ -3,9 +3,10 @@
from __future__ import print_function
import collections
+import glob
import sys
+from pathlib import Path
import pprint
-from os.path import basename
from xml_helper import xml_parse
def man(page, number):
@@ -56,7 +57,8 @@ manpages = ['''
MESON_FOOTER = '''\
]
-# Really, do not edit.'''
+# Really, do not edit.
+'''
def make_mesonfile(rules, dist_files):
# reformat rules as
@@ -76,13 +78,20 @@ def make_mesonfile(rules, dist_files):
return '\n'.join((MESON_HEADER, pprint.pformat(lines)[1:-1], MESON_FOOTER))
if __name__ == '__main__':
- pages = sys.argv[1:]
+ source_glob = sys.argv[1]
+ target = Path(sys.argv[2])
+
+ pages = glob.glob(source_glob)
pages = (p for p in pages
- if basename(p) not in {
+ if Path(p).name not in {
'systemd.directives.xml',
'systemd.index.xml',
'directives-template.xml'})
rules = create_rules(pages)
- dist_files = (basename(p) for p in pages)
- print(make_mesonfile(rules, dist_files))
+ dist_files = (Path(p).name for p in pages)
+ text = make_mesonfile(rules, dist_files)
+
+ tmp = target.with_suffix('.tmp')
+ tmp.write_text(text)
+ tmp.rename(target)