diff options
Diffstat (limited to 'BuildTools/DocBook/SCons')
| -rw-r--r-- | BuildTools/DocBook/SCons/DocBook.py | 21 |
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> |
Swift