diff --git a/Makefile-man.am b/Makefile-man.am index 76b794a27b..d54d67cf11 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -1,3 +1,6 @@ +# Do not edit. Generated by make-man-rules.py. +# Regenerate with 'make man-list-update'. + MANPAGES += \ man/bootup.7 \ man/daemon.7 \ @@ -292,6 +295,9 @@ if ENABLE_BOOTCHART MANPAGES += \ man/bootchart.conf.5 \ man/systemd-bootchart.1 +MANPAGES_ALIAS += \ + # + endif if ENABLE_HOSTNAMED @@ -396,6 +402,9 @@ endif if HAVE_MYHOSTNAME MANPAGES += \ man/nss-myhostname.8 +MANPAGES_ALIAS += \ + # + endif if HAVE_PAM @@ -464,4 +473,7 @@ if HAVE_PYTHON MANPAGES += \ man/systemd.directives.7 \ man/systemd.index.7 +MANPAGES_ALIAS += \ + # + endif diff --git a/Makefile.am b/Makefile.am index ba55a7e1b6..f73e8a6e74 100644 --- a/Makefile.am +++ b/Makefile.am @@ -502,6 +502,13 @@ CLEANFILES += \ if HAVE_PYTHON NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) + +XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml) +update-man-list: make-man-rules.py $(XML_GLOB) + $(AM_V_GEN)$(PYTHON) $^ > $(top_srcdir)/Makefile-man.tmp + $(AM_V_at)mv $(top_srcdir)/Makefile-man.tmp $(top_srcdir)/Makefile-man.am + @echo "Makefile-man.am has been regenerated" + man/systemd.index.xml: make-man-index.py $(NON_INDEX_XML_FILES) $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(PYTHON) $^ > $@ diff --git a/make-directive-index.py b/make-directive-index.py index ab40997a98..b06a54c1d5 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -23,7 +23,7 @@ import xml.etree.ElementTree as tree import re TEMPLATE = '''\ - + systemd.directives diff --git a/make-man-index.py b/make-man-index.py index 2dbc2da995..f829d98b6a 100755 --- a/make-man-index.py +++ b/make-man-index.py @@ -24,7 +24,7 @@ import sys MDASH = ' — ' if sys.version_info.major >= 3 else ' -- ' TEMPLATE = '''\ - + systemd.index diff --git a/make-man-rules.py b/make-man-rules.py new file mode 100644 index 0000000000..b88b43ac3d --- /dev/null +++ b/make-man-rules.py @@ -0,0 +1,92 @@ +# -*- Mode: python; coding: utf-8; indent-tabs-mode: nil -*- */ +# +# This file is part of systemd. +# +# Copyright 2013 Zbigniew Jędrzejewski-Szmek +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +from __future__ import print_function +import xml.etree.ElementTree as tree +import collections +import sys + +SECTION = '''\ +MANPAGES += \\ + {manpages} +MANPAGES_ALIAS += \\ + {aliases} +{rules} +''' + +CONDITIONAL = '''\ +if {conditional} +''' \ ++ SECTION + \ +'''\ +endif +''' + +HEADER = '''\ +# Do not edit. Generated by make-man-rules.py. +# Regenerate with 'make update-man-list'. + +''' + +def man(page, number): + return 'man/{}.{}'.format(page, number) + +def add_rules(rules, name): + xml = tree.parse(name) + # print('parsing {}'.format(name), file=sys.stderr) + conditional = xml.getroot().get('conditional') or '' + rulegroup = rules[conditional] + refmeta = xml.find('./refmeta') + title = refmeta.find('./refentrytitle').text + number = refmeta.find('./manvolnum').text + refnames = xml.findall('./refnamediv/refname') + target = man(refnames[0].text, number) + if title != refnames[0].text: + raise ValueError('refmeta and refnamediv disagree: ' + name) + for refname in refnames: + assert all(refname not in group + for group in rules.values()), "duplicate page name" + alias = man(refname.text, number) + rulegroup[alias] = target + # print('{} => {} [{}]'.format(alias, target, conditional), file=sys.stderr) + +def create_rules(*xml_files): + " {conditional => {alias-name => source-name}} " + rules = collections.defaultdict(dict) + for name in xml_files: + add_rules(rules, name) + return rules + +def mjoin(files): + return ' \\\n\t'.join(sorted(files) or '#') + +def make_makefile(rules): + return HEADER + '\n'.join( + (CONDITIONAL if conditional else SECTION).format( + manpages=mjoin(set(rulegroup.values())), + aliases=mjoin(k for k,v in rulegroup.items() if k != v), + rules='\n'.join('{}: {}'.format(k,v) + for k,v in sorted(rulegroup.items()) + if k != v), + conditional=conditional) + for conditional,rulegroup in sorted(rules.items())) + +if __name__ == '__main__': + rules = create_rules(*sys.argv[1:]) + print(make_makefile(rules), end='') diff --git a/man/binfmt.d.xml b/man/binfmt.d.xml index 07ae0ac231..8c5083cafb 100644 --- a/man/binfmt.d.xml +++ b/man/binfmt.d.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + binfmt.d diff --git a/man/bootchart.conf.xml b/man/bootchart.conf.xml index d2b09638c1..419554e2d1 100644 --- a/man/bootchart.conf.xml +++ b/man/bootchart.conf.xml @@ -25,7 +25,7 @@ along with systemd; If not, see . --> - + bootchart.conf systemd diff --git a/man/crypttab.xml b/man/crypttab.xml index f976bdaa25..a94163b4b2 100644 --- a/man/crypttab.xml +++ b/man/crypttab.xml @@ -25,7 +25,7 @@ The Red Hat version has been written by Miloslav Trmac . --> - + crypttab diff --git a/man/hostnamectl.xml b/man/hostnamectl.xml index a29d2f5b75..07d363420c 100644 --- a/man/hostnamectl.xml +++ b/man/hostnamectl.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + hostnamectl diff --git a/man/localectl.xml b/man/localectl.xml index 7563eb513c..3e5b812dac 100644 --- a/man/localectl.xml +++ b/man/localectl.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + localectl diff --git a/man/loginctl.xml b/man/loginctl.xml index 90b6f1e110..ba0352cf61 100644 --- a/man/loginctl.xml +++ b/man/loginctl.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + loginctl diff --git a/man/logind.conf.xml b/man/logind.conf.xml index b602e2a5f5..d223514e0e 100644 --- a/man/logind.conf.xml +++ b/man/logind.conf.xml @@ -22,7 +22,7 @@ along with systemd; If not, see . --> - + logind.conf systemd diff --git a/man/modules-load.d.xml b/man/modules-load.d.xml index bcc4d12561..ea4f524048 100644 --- a/man/modules-load.d.xml +++ b/man/modules-load.d.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + modules-load.d diff --git a/man/nss-myhostname.xml b/man/nss-myhostname.xml index bd3f635692..46b7471b06 100644 --- a/man/nss-myhostname.xml +++ b/man/nss-myhostname.xml @@ -22,7 +22,7 @@ along with systemd; If not, see . --> - + nss-myhostname diff --git a/man/sd-login.xml b/man/sd-login.xml index c02ad0c146..697259564d 100644 --- a/man/sd-login.xml +++ b/man/sd-login.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd-login diff --git a/man/sd-readahead.xml b/man/sd-readahead.xml index cebaa5da2b..ee7c936813 100644 --- a/man/sd-readahead.xml +++ b/man/sd-readahead.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd-readahead diff --git a/man/sd_get_seats.xml b/man/sd_get_seats.xml index 17adcef745..a300a05751 100644 --- a/man/sd_get_seats.xml +++ b/man/sd_get_seats.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_get_seats diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml index 35cb6b368b..2c4d05dcb9 100644 --- a/man/sd_login_monitor_new.xml +++ b/man/sd_login_monitor_new.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_login_monitor_new diff --git a/man/sd_pid_get_session.xml b/man/sd_pid_get_session.xml index 9517795f78..511fcf3ede 100644 --- a/man/sd_pid_get_session.xml +++ b/man/sd_pid_get_session.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_pid_get_session diff --git a/man/sd_readahead.xml b/man/sd_readahead.xml index a1fc6f178f..39e34698d4 100644 --- a/man/sd_readahead.xml +++ b/man/sd_readahead.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_readahead diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml index b1d6d20edf..07e018de13 100644 --- a/man/sd_seat_get_active.xml +++ b/man/sd_seat_get_active.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_seat_get_active diff --git a/man/sd_session_is_active.xml b/man/sd_session_is_active.xml index 1fa7457f78..76f6f9544c 100644 --- a/man/sd_session_is_active.xml +++ b/man/sd_session_is_active.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_session_is_active diff --git a/man/sd_uid_get_state.xml b/man/sd_uid_get_state.xml index b7bc944b14..cc8fc0f5b6 100644 --- a/man/sd_uid_get_state.xml +++ b/man/sd_uid_get_state.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_uid_get_state diff --git a/man/systemd-binfmt.service.xml b/man/systemd-binfmt.service.xml index 1db735a826..748e41780a 100644 --- a/man/systemd-binfmt.service.xml +++ b/man/systemd-binfmt.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-binfmt.service diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml index 0df7c4bcf4..f31d4a0a6c 100644 --- a/man/systemd-bootchart.xml +++ b/man/systemd-bootchart.xml @@ -25,7 +25,7 @@ along with systemd; If not, see . --> - + systemd-bootchart systemd diff --git a/man/systemd-cryptsetup-generator.xml b/man/systemd-cryptsetup-generator.xml index c5f8d2a9d8..292e967bea 100644 --- a/man/systemd-cryptsetup-generator.xml +++ b/man/systemd-cryptsetup-generator.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-cryptsetup-generator diff --git a/man/systemd-cryptsetup@.service.xml b/man/systemd-cryptsetup@.service.xml index abbb9d78f2..6fa2e0cdd0 100644 --- a/man/systemd-cryptsetup@.service.xml +++ b/man/systemd-cryptsetup@.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-cryptsetup@.service diff --git a/man/systemd-hostnamed.service.xml b/man/systemd-hostnamed.service.xml index d9c1911018..fe64a62fbe 100644 --- a/man/systemd-hostnamed.service.xml +++ b/man/systemd-hostnamed.service.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + systemd-hostnamed.service diff --git a/man/systemd-journal-gatewayd.service.xml b/man/systemd-journal-gatewayd.service.xml index 44cd6167f5..0b6fd706a6 100644 --- a/man/systemd-journal-gatewayd.service.xml +++ b/man/systemd-journal-gatewayd.service.xml @@ -21,7 +21,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-journal-gatewayd.service diff --git a/man/systemd-localed.service.xml b/man/systemd-localed.service.xml index 6cefc4265f..1551e6a2ba 100644 --- a/man/systemd-localed.service.xml +++ b/man/systemd-localed.service.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + systemd-localed.service diff --git a/man/systemd-logind.service.xml b/man/systemd-logind.service.xml index 00f34051a3..523a63b4f3 100644 --- a/man/systemd-logind.service.xml +++ b/man/systemd-logind.service.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + systemd-logind.service diff --git a/man/systemd-modules-load.service.xml b/man/systemd-modules-load.service.xml index ea10be2234..1d33b8eec6 100644 --- a/man/systemd-modules-load.service.xml +++ b/man/systemd-modules-load.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-modules-load.service diff --git a/man/systemd-quotacheck.service.xml b/man/systemd-quotacheck.service.xml index 2ffee9158e..ff04e582de 100644 --- a/man/systemd-quotacheck.service.xml +++ b/man/systemd-quotacheck.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-quotacheck.service diff --git a/man/systemd-random-seed-load.service.xml b/man/systemd-random-seed-load.service.xml index 87f563e293..693c008a2d 100644 --- a/man/systemd-random-seed-load.service.xml +++ b/man/systemd-random-seed-load.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-random-seed-load.service diff --git a/man/systemd-readahead-replay.service.xml b/man/systemd-readahead-replay.service.xml index 66d253454b..3d7d9f5424 100644 --- a/man/systemd-readahead-replay.service.xml +++ b/man/systemd-readahead-replay.service.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + systemd-readahead-replay.service diff --git a/man/systemd-timedated.service.xml b/man/systemd-timedated.service.xml index ea2abc5765..c82c0ff439 100644 --- a/man/systemd-timedated.service.xml +++ b/man/systemd-timedated.service.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + systemd-timedated.service diff --git a/man/systemd-user-sessions.service.xml b/man/systemd-user-sessions.service.xml index 9214ec9c35..fc93e2dc2f 100644 --- a/man/systemd-user-sessions.service.xml +++ b/man/systemd-user-sessions.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-user-sessions.service diff --git a/man/systemd-vconsole-setup.service.xml b/man/systemd-vconsole-setup.service.xml index df1b1a16b6..3c50799cbd 100644 --- a/man/systemd-vconsole-setup.service.xml +++ b/man/systemd-vconsole-setup.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-vconsole-setup.service diff --git a/man/timedatectl.xml b/man/timedatectl.xml index 4f34bb7b73..a8e78ae8d3 100644 --- a/man/timedatectl.xml +++ b/man/timedatectl.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + timedatectl diff --git a/man/vconsole.conf.xml b/man/vconsole.conf.xml index 45156b7447..f60b571b72 100644 --- a/man/vconsole.conf.xml +++ b/man/vconsole.conf.xml @@ -22,7 +22,7 @@ along with systemd; If not, see . --> - + vconsole.conf systemd