summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'BuildTools/DocBook/SCons')
-rw-r--r--BuildTools/DocBook/SCons/DocBook.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/BuildTools/DocBook/SCons/DocBook.py b/BuildTools/DocBook/SCons/DocBook.py
index ffb0bfc..d7c95ba 100644
--- a/BuildTools/DocBook/SCons/DocBook.py
+++ b/BuildTools/DocBook/SCons/DocBook.py
@@ -1,16 +1,29 @@
################################################################################
# DocBook pseudobuilder
################################################################################
import SCons.Util, SCons.Action
import xml.dom.minidom, re, os.path, sys
+def maybeBytesToString(s):
+ if isinstance(s, bytes):
+ return s.decode('utf-8')
+ return s
+
+def prepareForWrite(s):
+ try:
+ if isinstance(s, unicode):
+ return s.encode('utf-8')
+ except NameError:
+ pass
+ return s
+
def generate(env) :
# Location of stylesheets and catalogs
docbook_dir = "#/BuildTools/DocBook"
docbook_xsl_style_dir = env.Dir(docbook_dir + "/Stylesheets").abspath
docbook_xml_catalog = env.File("catalog.xml").abspath
if "DOCBOOK_XML_DIR" in env :
docbook_xml_dir = env.Dir("$DOCBOOK_XML_DIR").abspath
else :
docbook_xml_dir = env.Dir("#/3rdParty/DocBook/XML").abspath
@@ -26,27 +39,27 @@ def generate(env) :
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="public">
<rewriteSystem
systemIdStartString="http://www.oasis-open.org/docbook/xml/4.5/"
rewritePrefix="%(docbook_xml_dir)s/" />
<rewriteSystem
systemIdStartString="docbook-xsl:/"
rewritePrefix="%(docbook_xsl_dir)s/" />
</catalog>"""
- docbook_xml_dir = source[0].get_contents()
- docbook_xsl_dir = source[1].get_contents()
+ docbook_xml_dir = maybeBytesToString(source[0].get_contents())
+ docbook_xsl_dir = maybeBytesToString(source[1].get_contents())
if env["PLATFORM"] == "win32" :
docbook_xml_dir = docbook_xml_dir.replace("\\","/")
docbook_xsl_dir = docbook_xsl_dir.replace("\\","/")
file = open(target[0].abspath, "w")
file.write(catalog % {
- "docbook_xml_dir" : docbook_xml_dir,
- "docbook_xsl_dir" : docbook_xsl_dir,
+ "docbook_xml_dir" : prepareForWrite(docbook_xml_dir),
+ "docbook_xsl_dir" : prepareForWrite(docbook_xsl_dir),
})
file.close()
# Generates a FOP config file
def buildFopConfig(target, source, env) :
fopcfg = """<fop version=\"1.0\">
<renderers>
<renderer mime=\"application/pdf\">
<fonts>