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')