summaryrefslogtreecommitdiff
path: root/tools/xml_helper.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/xml_helper.py')
-rw-r--r--tools/xml_helper.py27
1 files changed, 24 insertions, 3 deletions
diff --git a/tools/xml_helper.py b/tools/xml_helper.py
index e87126f2f7..862930e59c 100644
--- a/tools/xml_helper.py
+++ b/tools/xml_helper.py
@@ -18,17 +18,38 @@
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
from lxml import etree as tree
+import os.path
+
+shared = { 'custom-entities.ent',
+ 'less-variables.xml',
+ 'standard-conf.xml',
+ 'standard-options.xml',
+ 'user-system-options.xml' }
class CustomResolver(tree.Resolver):
def resolve(self, url, id, context):
- if 'custom-entities.ent' in url:
- return self.resolve_filename('man/custom-entities.ent', context)
+ basename = os.path.basename(url)
+ if not basename in shared:
+ return None
+
+ topsrcdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
+ makename = os.path.join('$(topsrcdir)', 'man', basename)
+ lxmlname = os.path.join(topsrcdir, 'man', basename)
+ if basename == 'custom-entities.ent':
+ makename = os.path.join('$(topoutdir)', 'man', basename)
+ lxmlname += '.in'
+
+ _deps.add(makename)
+ return self.resolve_filename(lxmlname, context)
_parser = tree.XMLParser()
_parser.resolvers.add(CustomResolver())
+_deps = set()
def xml_parse(page):
+ _deps.clear()
doc = tree.parse(page, _parser)
doc.xinclude()
- return doc
+ return doc, _deps
def xml_print(xml):
return tree.tostring(xml, pretty_print=True, encoding='utf-8')