summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2014-02-12 02:58:41 -0500
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2014-02-12 03:04:57 -0500
commit32dcef3ab1eb91ee469c3246ef859578dccd8a45 (patch)
treee8466f7e96b0db6e0913f003c4fbfa4e74a0e768
parentfeef0842cfa8abe8b76c16e026217bad7e90f283 (diff)
build-sys: make lxml required when generating indices
Since the manpage indices generated without lxml would be missing some parts, it doesn't make sense to keep lxml optional anymore.
-rw-r--r--README2
-rw-r--r--configure.ac4
-rw-r--r--tools/xml_helper.py27
3 files changed, 12 insertions, 21 deletions
diff --git a/README b/README
index 509b45f6fd..9aa63128dd 100644
--- 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
diff --git a/configure.ac b/configure.ac
index d92f1fe015..59650a256d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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"],
diff --git a/tools/xml_helper.py b/tools/xml_helper.py
index 0d91a17bbc..e87126f2f7 100644
--- a/tools/xml_helper.py
+++ b/tools/xml_helper.py
@@ -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')