lit: execfile() isn't present in Python 3.3
authorAlp Toker <alp@nuanti.com>
Sat, 11 Jan 2014 13:27:28 +0000 (13:27 +0000)
committerAlp Toker <alp@nuanti.com>
Sat, 11 Jan 2014 13:27:28 +0000 (13:27 +0000)
On the other hand, exec(compile()) doesn't work in older Python versions in the
2.x series.

This commit introduces exec(compile()) with a fallback to plain exec(). That'll
hopefully hit the sweet spot in terms of version support.

Followup to r198766 which added enhanced source locations for lit cfg parsing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199006 91177308-0d34-0410-b5e6-96231b3b80d8

utils/lit/lit/TestingConfig.py

index 92f9a82358eb536f619e65f7547e2ab1cdedbd66..97e0de30470ae425c661cf85f3c59a68b6ad4107 100644 (file)
@@ -1,7 +1,7 @@
 import os
 import sys
 
-OldPy = sys.version_info[0] == 2 and sys.version_info[1] < 6
+OldPy = sys.version_info[0] == 2 and sys.version_info[1] < 7
 
 class TestingConfig:
     """"
@@ -75,13 +75,12 @@ class TestingConfig:
 
         # Load the config script data.
         data = None
-        if OldPy:
-            f = open(path)
-            try:
-                data = f.read()
-            except:
-                litConfig.fatal('unable to load config file: %r' % (path,))
-            f.close()
+        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())
@@ -92,7 +91,7 @@ class TestingConfig:
             if OldPy:
                 exec("exec data in cfg_globals")
             else:
-                execfile(path, cfg_globals)
+                exec(compile(data, path, 'exec'), cfg_globals, None)
             if litConfig.debug:
                 litConfig.note('... loaded config %r' % path)
         except SystemExit: