Changeset 904702d for waflib/Context.py


Ignore:
Timestamp:
Mar 14, 2015, 6:06:10 PM (10 years ago)
Author:
Paul Brossier <piem@piem.org>
Branches:
feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master, pitchshift, sampler, timestretch, yinfft+
Children:
6d7acc8
Parents:
5525507
Message:

waf, waflib: update to 1.8.7

File:
1 edited

Legend:

Unmodified
Added
Removed
  • waflib/Context.py

    r5525507 r904702d  
    33# WARNING! Do not edit! http://waf.googlecode.com/git/docs/wafbook/single.html#_obtaining_the_waf_file
    44
    5 import os,imp,sys
     5import os,re,imp,sys
    66from waflib import Utils,Errors,Logs
    77import waflib.Node
    8 HEXVERSION=0x1070f00
    9 WAFVERSION="1.7.15"
    10 WAFREVISION="f63ac9793de2d4eaae884e55d4ff70a761dcbab2"
     8HEXVERSION=0x1080700
     9WAFVERSION="1.8.7"
     10WAFREVISION="e5056b9ade7bb224f53baab13a0ce136344ab602"
    1111ABI=98
    1212DBFILE='.wafpickle-%s-%d-%d'%(sys.platform,sys.hexversion,ABI)
     
    7272        def __hash__(self):
    7373                return id(self)
     74        def finalize(self):
     75                try:
     76                        logger=self.logger
     77                except AttributeError:
     78                        pass
     79                else:
     80                        Logs.free_logger(logger)
     81                        delattr(self,'logger')
    7482        def load(self,tool_list,*k,**kw):
    7583                tools=Utils.to_list(tool_list)
     
    9199                if self.cur_script:
    92100                        self.path=self.cur_script.parent
    93         def recurse(self,dirs,name=None,mandatory=True,once=True):
     101        def recurse(self,dirs,name=None,mandatory=True,once=True,encoding=None):
    94102                try:
    95103                        cache=self.recurse_cache
     
    106114                                self.pre_recurse(node)
    107115                                try:
    108                                         function_code=node.read('rU')
     116                                        function_code=node.read('rU',encoding)
    109117                                        exec(compile(function_code,node.abspath(),'exec'),self.exec_dict)
    110118                                finally:
     
    117125                                        self.pre_recurse(node)
    118126                                        try:
    119                                                 wscript_module=load_module(node.abspath())
     127                                                wscript_module=load_module(node.abspath(),encoding=encoding)
    120128                                                user_function=getattr(wscript_module,(name or self.fun),None)
    121129                                                if not user_function:
     
    141149                if'stderr'not in kw:
    142150                        kw['stderr']=subprocess.PIPE
     151                if Logs.verbose and not kw['shell']and not Utils.check_exe(cmd[0]):
     152                        raise Errors.WafError("Program %s not found!"%cmd[0])
    143153                try:
    144154                        if kw['stdout']or kw['stderr']:
     
    157167                                self.logger.debug('out: %s'%out)
    158168                        else:
    159                                 sys.stdout.write(out)
     169                                Logs.info(out,extra={'stream':sys.stdout,'c1':''})
    160170                if err:
    161171                        if not isinstance(err,str):
     
    164174                                self.logger.error('err: %s'%err)
    165175                        else:
    166                                 sys.stderr.write(err)
     176                                Logs.info(err,extra={'stream':sys.stderr,'c1':''})
    167177                return ret
    168178        def cmd_and_log(self,cmd,**kw):
     
    180190                else:
    181191                        to_ret=STDOUT
     192                if Logs.verbose and not kw['shell']and not Utils.check_exe(cmd[0]):
     193                        raise Errors.WafError("Program %s not found!"%cmd[0])
    182194                kw['stdout']=kw['stderr']=subprocess.PIPE
    183195                if quiet is None:
     
    223235                        sys.stderr.write(str(msg))
    224236                        sys.stderr.flush()
    225         def msg(self,msg,result,color=None):
    226                 self.start_msg(msg)
     237        def msg(self,*k,**kw):
     238                try:
     239                        msg=kw['msg']
     240                except KeyError:
     241                        msg=k[0]
     242                self.start_msg(msg,**kw)
     243                try:
     244                        result=kw['result']
     245                except KeyError:
     246                        result=k[1]
     247                color=kw.get('color',None)
    227248                if not isinstance(color,str):
    228249                        color=result and'GREEN'or'YELLOW'
    229                 self.end_msg(result,color)
    230         def start_msg(self,msg):
     250                self.end_msg(result,color,**kw)
     251        def start_msg(self,*k,**kw):
     252                if kw.get('quiet',None):
     253                        return
     254                msg=kw.get('msg',None)or k[0]
    231255                try:
    232256                        if self.in_msg:
     
    243267                        self.to_log(x)
    244268                Logs.pprint('NORMAL',"%s :"%msg.ljust(self.line_just),sep='')
    245         def end_msg(self,result,color=None):
     269        def end_msg(self,*k,**kw):
     270                if kw.get('quiet',None):
     271                        return
    246272                self.in_msg-=1
    247273                if self.in_msg:
    248274                        return
     275                result=kw.get('result',None)or k[0]
    249276                defcolor='GREEN'
    250277                if result==True:
     
    256283                        msg=str(result)
    257284                self.to_log(msg)
    258                 Logs.pprint(color or defcolor,msg)
     285                try:
     286                        color=kw['color']
     287                except KeyError:
     288                        if len(k)>1 and k[1]in Logs.colors_lst:
     289                                color=k[1]
     290                        else:
     291                                color=defcolor
     292                Logs.pprint(color,msg)
    259293        def load_special_tools(self,var,ban=[]):
    260294                global waf_dir
    261                 lst=self.root.find_node(waf_dir).find_node('waflib/extras').ant_glob(var)
    262                 for x in lst:
    263                         if not x.name in ban:
    264                                 load_tool(x.name.replace('.py',''))
     295                if os.path.isdir(waf_dir):
     296                        lst=self.root.find_node(waf_dir).find_node('waflib/extras').ant_glob(var)
     297                        for x in lst:
     298                                if not x.name in ban:
     299                                        load_tool(x.name.replace('.py',''))
     300                else:
     301                        from zipfile import PyZipFile
     302                        waflibs=PyZipFile(waf_dir)
     303                        lst=waflibs.namelist()
     304                        for x in lst:
     305                                if not re.match("waflib/extras/%s"%var.replace("*",".*"),var):
     306                                        continue
     307                                f=os.path.basename(x)
     308                                doban=False
     309                                for b in ban:
     310                                        r=b.replace("*",".*")
     311                                        if re.match(b,f):
     312                                                doban=True
     313                                if not doban:
     314                                        f=f.replace('.py','')
     315                                        load_tool(f)
    265316cache_modules={}
    266 def load_module(path):
     317def load_module(path,encoding=None):
    267318        try:
    268319                return cache_modules[path]
     
    271322        module=imp.new_module(WSCRIPT_FILE)
    272323        try:
    273                 code=Utils.readf(path,m='rU')
    274         except(IOError,OSError):
     324                code=Utils.readf(path,m='rU',encoding=encoding)
     325        except EnvironmentError:
    275326                raise Errors.WafError('Could not read the file %r'%path)
    276327        module_dir=os.path.dirname(path)
     
    280331        cache_modules[path]=module
    281332        return module
    282 def load_tool(tool,tooldir=None):
     333def load_tool(tool,tooldir=None,ctx=None):
    283334        if tool=='java':
    284335                tool='javaw'
    285         elif tool=='compiler_cc':
    286                 tool='compiler_c'
    287336        else:
    288337                tool=tool.replace('++','xx')
     
    299348                                sys.path.remove(d)
    300349        else:
    301                 global waf_dir
    302                 try:
    303                         os.stat(os.path.join(waf_dir,'waflib','extras',tool+'.py'))
    304                 except OSError:
     350                for x in('waflib.Tools.%s','waflib.extras.%s','waflib.%s','%s'):
    305351                        try:
    306                                 os.stat(os.path.join(waf_dir,'waflib','Tools',tool+'.py'))
    307                         except OSError:
    308                                 d=tool
    309                         else:
    310                                 d='waflib.Tools.%s'%tool
    311                 else:
    312                         d='waflib.extras.%s'%tool
    313                 __import__(d)
    314                 ret=sys.modules[d]
     352                                __import__(x%tool)
     353                                break
     354                        except ImportError:
     355                                x=None
     356                if x is None:
     357                        __import__(tool)
     358                ret=sys.modules[x%tool]
    315359                Context.tools[tool]=ret
    316360                return ret
Note: See TracChangeset for help on using the changeset viewer.