chiark / gitweb /
Remove (non.existent) support for logging to journald.
[elogind.git] / tools / make-man-rules.py
index 0d1ca244c467d0b8bba7fdd85d42bc0f9703eee9..5e61917d6032d62551219fc43f92e8012d712c89 100644 (file)
@@ -42,8 +42,14 @@ endif
 
 HEADER = '''\
 # Do not edit. Generated by make-man-rules.py.
 
 HEADER = '''\
 # Do not edit. Generated by make-man-rules.py.
-# Regenerate with 'make all update-man-list'.
-
+# To regenerate:
+#   1. Create, update, or remove source .xml files in man/
+#   2. Run 'make update-man-list'
+#   3. Run 'make man' to generate manpages
+#
+# To make a man page conditional on a configure switch add
+# attribute conditional="ENABLE_WHAT" or conditional="WITH_WHAT"
+# to <refentry> element.
 '''
 
 HTML_ALIAS_RULE = '''\
 '''
 
 HTML_ALIAS_RULE = '''\
@@ -53,8 +59,10 @@ HTML_ALIAS_RULE = '''\
 
 FOOTER = '''\
 
 
 FOOTER = '''\
 
+# Really, do not edit this file.
+
 EXTRA_DIST += \\
 EXTRA_DIST += \\
-       {files}
+       {dist_files}
 '''
 
 def man(page, number):
 '''
 
 def man(page, number):
@@ -66,6 +74,8 @@ def xml(file):
 def add_rules(rules, name):
     xml = xml_parse(name)
     # print('parsing {}'.format(name), file=sys.stderr)
 def add_rules(rules, name):
     xml = xml_parse(name)
     # print('parsing {}'.format(name), file=sys.stderr)
+    if xml.getroot().tag != 'refentry':
+        return
     conditional = xml.getroot().get('conditional') or ''
     rulegroup = rules[conditional]
     refmeta = xml.find('./refmeta')
     conditional = xml.getroot().get('conditional') or ''
     rulegroup = rules[conditional]
     refmeta = xml.find('./refmeta')
@@ -86,13 +96,17 @@ def create_rules(xml_files):
     " {conditional => {alias-name => source-name}} "
     rules = collections.defaultdict(dict)
     for name in xml_files:
     " {conditional => {alias-name => source-name}} "
     rules = collections.defaultdict(dict)
     for name in xml_files:
-        add_rules(rules, name)
+        try:
+            add_rules(rules, name)
+        except Exception:
+            print("Failed to process", name, file=sys.stderr)
+            raise
     return rules
 
 def mjoin(files):
     return ' \\\n\t'.join(sorted(files) or '#')
 
     return rules
 
 def mjoin(files):
     return ' \\\n\t'.join(sorted(files) or '#')
 
-def make_makefile(rules, files):
+def make_makefile(rules, dist_files):
     return HEADER + '\n'.join(
         (CONDITIONAL if conditional else SECTION).format(
             manpages=mjoin(set(rulegroup.values())),
     return HEADER + '\n'.join(
         (CONDITIONAL if conditional else SECTION).format(
             manpages=mjoin(set(rulegroup.values())),
@@ -105,9 +119,11 @@ def make_makefile(rules, files):
                                 if k != v),
             conditional=conditional)
         for conditional,rulegroup in sorted(rules.items())
                                 if k != v),
             conditional=conditional)
         for conditional,rulegroup in sorted(rules.items())
-        ) + FOOTER.format(files=mjoin(sorted(files)))
+        ) + FOOTER.format(dist_files=mjoin(sorted(dist_files)))
 
 if __name__ == '__main__':
     rules = create_rules(sys.argv[1:])
 
 if __name__ == '__main__':
     rules = create_rules(sys.argv[1:])
-    files = (xml(file) for file in sys.argv[1:])
-    print(make_makefile(rules, files), end='')
+    dist_files = (xml(file) for file in sys.argv[1:]
+                  if not file.endswith(".directives.xml") and
+                     not file.endswith(".index.xml"))
+    print(make_makefile(rules, dist_files), end='')