⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 external_runtime.py

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 PY
字号:
#!/usr/bin/env python## external_runtime.py: Generate external runtime files for SWIG#import sys, os, re, fileinputif __name__ == "__main__":  parent_dir = os.path.dirname(os.path.abspath(os.path.dirname(sys.argv[0])))  sys.path[0:0] = [ parent_dir, os.path.dirname(parent_dir) ]import generator.swigimport generator.util.executable_exec = generator.util.executableclass Generator(generator.swig.Generator):  """Generate external runtime files for SWIG"""  def write(self):    """Generate external runtimes"""    for lang in self.langs:      self.write_external_runtime(lang)  def write_makefile_rules(self, makefile):    """Write the makefile rules for generating external runtimes"""    makefile.write(      'GEN_SWIG_RUNTIME = cd $(top_srcdir) && $(PYTHON)' +      ' build/generator/swig/external_runtime.py build.conf $(SWIG)\n\n'    )    for lang in self.langs:      out = self._output_file(lang)      makefile.write(        'autogen-swig-%s: %s\n' % (self.short[lang], out) +        '%s: $(SWIG_CHECKOUT_FILES)\n' % out +        '\t$(GEN_SWIG_RUNTIME) %s\n\n' % lang      )    makefile.write('\n')  def write_external_runtime(self, lang):    """Generate external runtime header files for each SWIG language"""    # Runtime library names    runtime_library = {      "python": "pyrun.swg", "perl":"perlrun.swg", "ruby":"rubydef.swg"    }    # Build runtime files    out = self._output_file(lang)    if self.version() == 103024:      out_file = open(out, "w")      out_file.write(open("%s/swigrun.swg" % self.proxy_dir).read())      out_file.write(open("%s/common.swg" % self.proxy_dir).read())      out_file.write(        open("%s/%s" % (self.proxy_dir, runtime_library[lang])).read())      if lang != "ruby":        out_file.write(open("%s/runtime.swg" % self.proxy_dir).read())      out_file.close()    else:      _exec.run("%s -%s -external-runtime %s" % (self.swig_path, lang, out))    if lang == "ruby" and self.version() >= 103026 and self.version() < 103028:      # SWIG 1.3.26-27 should include rubytracking.swg in their      # external runtime, but they don't.      runtime = open(out).read()      tracking = open("%s/rubytracking.swg" % self.proxy_dir).read();      out_file = open(out, "w")      out_file.write(tracking)      out_file.write(runtime)      out_file.close()    # SWIG 1.3.25 and earlier use the wrong number of arguments in calls to    # SWIG_GetModule. We fix this below.    if self.version() <= 103025:      for line in fileinput.input(out, inplace=1):        sys.stdout.write(          re.sub(r"SWIG_GetModule\(\)", "SWIG_GetModule(NULL)", line)        )  def _output_file(self, lang):    """Return the output filename of the runtime for the given language"""     return '%s/swig_%s_external_runtime.swg' % (self.proxy_dir, lang)if __name__ == "__main__":  if len(sys.argv) != 4:    print "Usage: %s build.conf swig"    print "Generates external runtime files for SWIG"  else:    gen = Generator(sys.argv[1], sys.argv[2])    gen.write_external_runtime(sys.argv[3])

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -