[llvm] r198766 - lit: Provide file location in cfg error messages

Alp Toker alp at nuanti.com
Sat Jan 11 01:35:43 PST 2014


On 11/01/2014 09:10, NAKAMURA Takumi wrote:
> I wonder execfile() would be py3-incompatible...??

Indeed it seems to have been removed in Python 3.3. The new syntax for 
providing source locations is apparently:

|exec(compile(open(filename,  "rb").read(),  filename,  'exec'),  globals,  locals)|


Do you have 3.3+ around to try this? If not I'll take a look in a couple 
of hours.

(It's unfortunate we have to keep chasing different versions of Python.)

Alp.

>
> 2014/1/8 Alp Toker <alp at nuanti.com>:
>> Author: alp
>> Date: Wed Jan  8 08:20:59 2014
>> New Revision: 198766
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=198766&view=rev
>> Log:
>> lit: Provide file location in cfg error messages
>>
>> Python doesn't do a good job at diagnosing string exec() so use execfile()
>> where available.
>>
>> This should be a timesaver when trying to get to the bottom of build bot
>> failures.
>>
>> Before:
>>
>>      File "llvm/utils/lit/lit/TestingConfig.py", line 93, in load_from_path
>>        exec("exec data in cfg_globals")
>>      File "<string>", line 1, in <module>
>>      File "<string>", line 194, in <module>
>>    NameError: name 'typo' is not defined
>>
>> After:
>>
>>      File "llvm/utils/lit/lit/TestingConfig.py", line 95, in load_from_path
>>      execfile(path, cfg_globals)
>>      File "clang/test/lit.cfg", line 194, in <module>
>>        typo
>>        ^~~~
>>    NameError: name 'typo' is not defined
>>
>> Modified:
>>      llvm/trunk/utils/lit/lit/TestingConfig.py
>>
>> Modified: llvm/trunk/utils/lit/lit/TestingConfig.py
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/TestingConfig.py?rev=198766&r1=198765&r2=198766&view=diff
>> ==============================================================================
>> --- llvm/trunk/utils/lit/lit/TestingConfig.py (original)
>> +++ llvm/trunk/utils/lit/lit/TestingConfig.py Wed Jan  8 08:20:59 2014
>> @@ -1,7 +1,7 @@
>>   import os
>>   import sys
>>
>> -PY2 = sys.version_info[0] < 3
>> +OldPy = sys.version_info[0] == 2 and sys.version_info[1] < 6
>>
>>   class TestingConfig:
>>       """"
>> @@ -74,12 +74,14 @@ class TestingConfig:
>>           """
>>
>>           # Load the config script data.
>> -        f = open(path)
>> -        try:
>> -            data = f.read()
>> -        except:
>> -            litConfig.fatal('unable to load config file: %r' % (path,))
>> -        f.close()
>> +        data = None
>> +        if OldPy:
>> +            f = open(path)
>> +            try:
>> +                data = f.read()
>> +            except:
>> +                litConfig.fatal('unable to load config file: %r' % (path,))
>> +            f.close()
>>
>>           # Execute the config script to initialize the object.
>>           cfg_globals = dict(globals())
>> @@ -87,10 +89,10 @@ class TestingConfig:
>>           cfg_globals['lit_config'] = litConfig
>>           cfg_globals['__file__'] = path
>>           try:
>> -            if PY2:
>> +            if OldPy:
>>                   exec("exec data in cfg_globals")
>>               else:
>> -                exec(data, cfg_globals)
>> +                execfile(path, cfg_globals)
>>               if litConfig.debug:
>>                   litConfig.note('... loaded config %r' % path)
>>           except SystemExit:
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

-- 
http://www.nuanti.com
the browser experts

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140111/b1f5e37d/attachment.html>


More information about the llvm-commits mailing list