github.com/hwaf/hwaf@v0.0.0-20140814122253-5465f73b20f1/py-hwaftools/orch/build.py (about) 1 #!/usr/bin/env python 2 ''' 3 The worch build tool for waf. 4 5 This calls the build context on every package in configured list of orch groups. 6 7 All worch feature methods are expected to be imported already. 8 9 FIXME: recursion to external wscript files has been removed. 10 ''' 11 12 import waflib.Logs as msg 13 from waflib.TaskGen import feats as available_features 14 from . import util, wafutil 15 16 17 def assert_features(pkgcfg): 18 features = util.string2list(pkgcfg['features']) 19 for feat in features: 20 assert feat in available_features.keys(), 'Unknown feature "%s" for package "%s"' % (feat, pkgcfg['package']) 21 22 23 def build(bld): 24 msg.debug ('orch: BUILD CALLED') 25 26 # batteries-included 27 from . import features 28 features.load() 29 30 # external tools 31 for pkgname, pkgdict in bld.env.orch_package_dict.items(): 32 tools = pkgdict.get('tools') 33 if not tools: continue 34 for tool in util.string2list(tools): 35 bld.load(tool) 36 37 from waflib.TaskGen import feats as available_features 38 msg.debug('orch: available features: %s' % (', '.join(sorted(available_features.keys())), )) 39 40 msg.info('Supported waf features: "%s"' % '", "'.join(sorted(available_features.keys()))) 41 msg.debug('orch: Build envs: %s' % ', '.join(sorted(bld.all_envs.keys()))) 42 43 for grpname in bld.env.orch_group_list: 44 45 msg.debug('orch: Adding group: "%s"' % grpname) 46 bld.add_group(grpname) 47 48 group = bld.env.orch_group_dict[grpname] 49 for package in group['packages']: 50 pkgname = package['package'] 51 52 assert_features(package) 53 54 pkgcfg = bld.env.orch_package_dict[pkgname] 55 bld.worch_package(pkgcfg) 56 57 58 bld.add_pre_fun(pre_process) 59 bld.add_post_fun(post_process) 60 msg.debug ('orch: BUILD CALLED [done]') 61 62 def pre_process(bld): 63 msg.debug('orch: PREPROCESS') 64 def post_process(bld): 65 msg.debug('orch: POSTPROCESS')