build-sys: move python helpers to tools directory Note that make-man-rules.py is missing in EXTRA_DIST=, this patch fixes this mistake too.
build-sys,man: use XML entities to substite strings This makes it easier to add substitutions to man pages, avoiding the separate transformation step. mkdir -p's are removed from the rule, because xsltproc will will create directories on it's own. All in all, two or three forks per man page are avoided, which should make things marginally faster. Unfortunately python parsers must too be tweaked to handle entities. This isn't particularly easy: with lxml a custom Resolver can be used, but the stdlib etree doesn't support external entities *at all*. So when running without lxml, the entities are just removed. Right now it doesn't matter, since the entities are not indexed anyway. But I intend to add indexing of filenames in the near future, and then the index generated without lxml might be missing a few lines. Oh well.
man: use lxml for faster generation and pretty printing
build-sys: check if manpage ids match file names Commit ed1553a fixed current errors, but this error is easy to make. A wrong id messes up the indexes and linking, so it is better to catch this automatically.
build-sys: create Makefile-man.am automatically man rules were repeating the same information in too many places, which was error prone. Those rules can be easily generated from .xml files. For efficiency and because python is not a required dependency, Makefile-man.am is only regenerated when requested with make update-man-list If no metadata in man/*.xml changed, this file should not change. So only when a new man page or a new alias is added, this file should show up in 'git diff'. The change should then be committed. If the support for building from git without python was dropped, we could drop Makefile-man.am from version control. This would also increase the partial build time (since more stuff would be rebuild whenever sources in man/*.xml would be modified), so it would probably wouldn't be worth it.
make-man-index: work around UnicodeDecodeError
man: generate xml not html for index This way we also get a man page. The output is not as polished. I hope that it doesn't matter too much. index.html is not generated now, the page is called systemd.index.html. If necessary, an install hook should be added.
build-sys: invoke scripts with $PYTHON during build Python binary to be used during compilation can be set with ./configure PYTHON=... The she-bang line is removed, since it is not used anymore.
python: change license to LGPL 2.1 The original license has been MIT for this code, but David Strauss (its original author) agreed to relicense it to LGPL 2.1 for inclusion in systemd.
make-man-index.py: compatibility with Python 3 Despite its name, ElementTree.tostring() returns already-encoded bytes() instead of a string in Python 3; sys.stdout doesn't like that.
make-man-index.py: pretty-print HTML
man: actually generate h2 headers for letters in index as we meant to
man: include number of man pages in index page
man: set description in italics in the index
man: show man page summary in index, too
min: generate an index page for all man pages This makes use of python, if it is available