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