def is_installed(self, environ, version=None, strict=False): if version is None: version = '3.1.2' options.set_debug(self.debug) limit = False antlr_root = None if 'ANTLR' in environ and environ['ANTLR']: antlr_root = environ['ANTLR'] limit = True classpaths = [] if not limit: try: pathlist = environ['CLASSPATH'] ## from java config for path in pathlist: classpaths.append(os.path.dirname(path)) except KeyError: pass try: antlr_root = os.environ['ANTLR_ROOT'] except KeyError: pass for d in programfiles_directories(): classpaths.append(os.path.join(d, 'ANTLR', 'lib')) try: java_home = None if 'JAVA_HOME' in environ.keys(): java_home = os.path.join(environ['JAVA_HOME'], 'lib') jarfile = find_file('antlr*' + version[0] + '*.jar', ['/usr/share/java', '/usr/local/share/java', '/opt/local/share/java', java_home, antlr_root,] + classpaths) self.environment['ANTLR'] = [environ['JAVA'], "-classpath", os.path.abspath(jarfile), "org.antlr.Tool",] self.found = True except ConfigError: if self.debug: print(sys.exc_info()[1]) return self.found
def make_doc(src_file, target_dir=None, stylesheet=None): (XSLTPROC, JAVA_SAXON, NET_SAXON) = range(3) src_dir = os.path.abspath(os.path.dirname(src_file)) if target_dir is None: pth = os.path.relpath(os.path.dirname(src_file)).split(os.sep)[1:] # pylint: disable=W0142 target_dir = os.path.join(options.target_build_dir, *pth) if stylesheet is None: stylesheet = 'http://docbook.sourceforge.net/release/fo/docbook.xsl' fop_exe = find_program('fop') java_exe = find_program('java') try: ## prefer xsltproc xslt_exe = [find_program('xsltproc')] which = XSLTPROC except Exception: # pylint: disable=W0703 try: classpaths = [] try: for path in os.environ['CLASSPATH'].split(os.pathsep): classpaths.append(os.path.dirname(path)) except KeyError: pass try: classpaths.append(os.path.join(os.environ['JAVA_HOME'], 'lib')) except KeyError: pass saxon_jar = find_file('saxon*.jar', ['/usr/share/java', '/usr/local/share/java', '/opt/local/share/java',] + classpaths) resolver_jar = find_file('resolver*.jar', ['/usr/share/java', '/usr/local/share/java', '/opt/local/share/java',] + classpaths) xslt_exe = [java_exe, '-classpath', os.pathsep.join([saxon_jar, resolver_jar]), '-jar', saxon_jar] which = JAVA_SAXON except Exception: # pylint: disable=W0703 xslt_exe = [find_program('saxon')] which = NET_SAXON if not os.path.exists(target_dir): mkdir(target_dir) copy_tree(src_dir, target_dir) ## Need to respect relative paths here = os.getcwd() os.chdir(target_dir) src_base = os.path.basename(src_file) fo_src = os.path.splitext(src_base)[0] + '.fo' pdf_dst = os.path.splitext(src_base)[0] + '.pdf' if which == XSLTPROC: cmd_line = xslt_exe + ['-xinclude', '-o', fo_src, stylesheet, src_base] elif which == JAVA_SAXON: cmd_line = xslt_exe + ['-o', fo_src, src_base, stylesheet] else: cmd_line = xslt_exe + [src_base, '-o:' + fo_src, '-xsl:' + stylesheet] if 'XML_CATALOG_FILES' in os.environ: cmd_line += ['-catalog:' + os.environ['XML_CATALOG_FILES']] subprocess.check_call(" ".join(cmd_line), shell=True) cmd_line = [fop_exe, '-fo', fo_src, '-pdf', pdf_dst] subprocess.check_call(" ".join(cmd_line), shell=True) os.chdir(here)