123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #! /usr/bin/env python
- # encoding: utf-8
- import os
- from waflib import Errors, Utils
- from waflib import Context as mod
- class Context(mod.Context):
- cmd = 'all'
- def recurse(self, dirs, name=None, mandatory=True, once=True):
- try:
- cache = self.recurse_cache
- except:
- cache = self.recurse_cache = {}
- for d in Utils.to_list(dirs):
- if not os.path.isabs(d):
- # absolute paths only
- d = os.path.join(self.path.abspath(), d)
- WSCRIPT = os.path.join(d, 'wscript.py')
- WSCRIPT_FUN = 'wscript_' + (name or self.fun) + '.py'
- node = self.root.find_node(WSCRIPT_FUN)
- if node and (not once or node not in cache):
- cache[node] = True
- self.pre_recurse(node)
- try:
- function_code = node.read('rU')
- exec(compile(function_code, node.abspath(), 'exec'), self.exec_dict)
- finally:
- self.post_recurse(node)
- elif not node:
- node = self.root.find_node(WSCRIPT)
- if node and (not once or node not in cache):
- cache[node] = True
- self.pre_recurse(node)
- try:
- wscript_module = mod.load_module(node.abspath())
- user_function = getattr(wscript_module, (name or self.fun), None)
- if not user_function:
- if not mandatory:
- continue
- raise Errors.WafError('No function %s defined in %s' % (name or self.fun, node.abspath()))
- user_function(self)
- finally:
- self.post_recurse(node)
- elif not node:
- if not mandatory:
- continue
- raise Errors.WafError('No wscript file in directory %s' % d)
- mod.Context = Context
- mod.WSCRIPT_FILE = 'wscript.py'
|