chiark / gitweb /
build-sys: make lxml required when generating indices
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 12 Feb 2014 07:58:41 +0000 (02:58 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 12 Feb 2014 08:04:57 +0000 (03:04 -0500)
Since the manpage indices generated without lxml would be missing some
parts, it doesn't make sense to keep lxml optional anymore.

README
configure.ac
tools/xml_helper.py

diff --git a/README b/README
index 509b45f..9aa6312 100644 (file)
--- a/README
+++ b/README
@@ -133,8 +133,8 @@ REQUIREMENTS:
         gperf
         gtkdocize (optional)
         python (optional)
+        python-lxml (optional, but required to build the indices)
         sphinx (optional)
-        python-lxml (entirely optional)
 
         When systemd-hostnamed is used, it is strongly recommended to
         install nss-myhostname to ensure that, in a world of
index d92f1fe..59650a2 100644 (file)
@@ -188,9 +188,11 @@ have_python=no
 AC_ARG_WITH([python],
         [AS_HELP_STRING([--without-python], [Disable building the man page index and systemd-python (default: test)])])
 
+have_lxml=no
 AS_IF([test "x$with_python" != "xno"], [
         AM_PATH_PYTHON(,, [:])
-        AS_IF([test "$PYTHON" != :], [have_python=yes])
+        AS_IF(["$PYTHON" -c 'import lxml' 2>/dev/null], [have_lxml=yes], [have_lxml=no])
+        AS_IF([test "$PYTHON" != : -a $have_lxml = yes], [have_python=yes])
 ])
 AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = "xyes"])
 AS_IF([test "x$PYTHON_BINARY" = "x"],
index 0d91a17..e87126f 100644 (file)
@@ -24,22 +24,11 @@ class CustomResolver(tree.Resolver):
         if 'custom-entities.ent' in url:
             return self.resolve_filename('man/custom-entities.ent', context)
 
-try:
-    _parser = tree.XMLParser()
-    _parser.resolvers.add(CustomResolver())
-    def xml_parse(page):
-        doc = tree.parse(page, _parser)
-        doc.xinclude()
-        return doc
-    def xml_print(xml):
-        return tree.tostring(xml, pretty_print=True, encoding='utf-8')
-
-except ImportError:
-    import xml.etree.ElementTree as tree
-    import re as _re
-    import io as _io
-
-    def xml_parse(page):
-        s = _re.sub(b'&[a-zA-Z0-9_]+;', b'', open(page, 'rb').read())
-        return tree.parse(_io.BytesIO(s))
-    xml_print = lambda xml: tree.tostring(xml, encoding='utf-8')
+_parser = tree.XMLParser()
+_parser.resolvers.add(CustomResolver())
+def xml_parse(page):
+    doc = tree.parse(page, _parser)
+    doc.xinclude()
+    return doc
+def xml_print(xml):
+    return tree.tostring(xml, pretty_print=True, encoding='utf-8')