github.com/hwaf/hwaf@v0.0.0-20140814122253-5465f73b20f1/py-hwaftools/orch/bundle/driver.py (about)

     1  #!/usr/bin/env python
     2  # encoding: ISO8859-1
     3  
     4  import os
     5  import sys
     6  from pkgutil import get_data
     7  from glob import glob
     8  import zipfile
     9  
    10  cwd = os.getcwd()
    11  
    12  def dump_out(what):
    13      if os.path.exists(what):
    14          print ('%s already produced' % what)
    15          return
    16      print 'Dumping %s' % what
    17      with open(what, 'w') as fp:
    18          data = get_data('bundle', what)
    19          fp.write(data)
    20  
    21  def prepare_waf():
    22      
    23      if not os.path.exists('waf'):
    24          dump_out('waf')
    25  
    26      os.system('chmod +x waf')
    27  
    28      ret = os.system('./waf --version')
    29      if ret != 0:
    30          print ('Failed to run waf')
    31          sys.exit (ret)
    32          
    33      wafdir = glob('.waf-*')
    34      if not wafdir:
    35          print ('No .waf-* directory produced')
    36          sys.exit(1)
    37      return wafdir[0]
    38  
    39  def unzip_to(filename, todir = '.'):
    40      if not os.path.exists(filename):
    41          dump_out(filename)
    42      zf = zipfile.ZipFile(filename, 'r')
    43      zf.extractall(todir)
    44  
    45  def remove(*args):
    46      for dead in args:
    47          if os.path.exists(dead):
    48              print 'Removing %s' % dead
    49              os.remove(dead)
    50  
    51  def wafdir2wafver(wafdir):
    52      return wafdir.split('-')[1]
    53  
    54  def assure_unpack():
    55      wafdir = glob('.waf-*')
    56      if wafdir and os.path.exists(wafdir[0]):
    57          return wafdir[0]
    58  
    59      wafdir = prepare_waf()
    60      dump_out('wscript')
    61      unzip_to('orch.zip',wafdir)
    62      unzip_to('cfg.zip')
    63      remove('cfg.zip', 'orch.zip', 'waf')
    64      return wafdir
    65  
    66  def main():
    67      wafdir = assure_unpack()
    68      wafver = wafdir2wafver(wafdir)
    69  
    70      sys.path.insert(0, os.path.realpath(wafdir))
    71      from waflib import Scripting
    72      Scripting.waf_entry_point(cwd, wafver, wafdir)
    73