summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Deegan <bill@baddogconsulting.com>2016-05-23 10:00:43 -0700
committerWilliam Deegan <bill@baddogconsulting.com>2016-05-23 10:00:43 -0700
commit561eda349061019df9c8aa904de62896b12472c0 (patch)
treee47a01a86d0f782277ba672c0730ad9a80360ed2
parent2b20141f5bc6fb7aedd9a24e4c8079e82d52d260 (diff)
downloadscons-git-561eda349061019df9c8aa904de62896b12472c0.tar.gz
use old tool loading code for py2, and new code (not quite working yet) for py3
-rw-r--r--src/engine/SCons/Tool/__init__.py101
1 files changed, 53 insertions, 48 deletions
diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py
index 159005310..d75d7caea 100644
--- a/src/engine/SCons/Tool/__init__.py
+++ b/src/engine/SCons/Tool/__init__.py
@@ -115,57 +115,62 @@ class Tool(object):
oldpythonpath = sys.path
sys.path = self.toolpath + sys.path
- try:
- # Try site_tools first
- return importlib.import_module(self.name)
- except ImportError as e:
- # Then try modules in main distribution
+
+ if False and sys.version_info[0] < 3:
+ # Py 2 code
try:
- return importlib.import_module('SCons.Tool.'+self.name)
+ try:
+ file, path, desc = imp.find_module(self.name, self.toolpath)
+ try:
+ return imp.load_module(self.name, file, path, desc)
+
+ finally:
+ if file:
+ file.close()
+ except ImportError as e:
+ if str(e)!="No module named %s"%self.name:
+ raise SCons.Errors.EnvironmentError(e)
+ try:
+ import zipimport
+ except ImportError:
+ pass
+ else:
+ for aPath in self.toolpath:
+ try:
+ importer = zipimport.zipimporter(aPath)
+ return importer.load_module(self.name)
+ except ImportError as e:
+ pass
+ finally:
+ sys.path = oldpythonpath
+ else:
+ # Py 3 code
+ try:
+ # Try site_tools first
+ return importlib.import_module(self.name)
except ImportError as e:
- if str(e) != "No module named %s" % self.name:
- raise SCons.Errors.EnvironmentError(e)
+ # Then try modules in main distribution
try:
- import zipimport
- except ImportError:
- pass
- else:
- for aPath in self.toolpath:
- try:
- importer = zipimport.zipimporter(aPath)
- return importer.load_module(self.name)
- except ImportError as e:
- pass
-
- finally:
- sys.path = oldpythonpath
-
- # old code
- # try:
- # try:
- # file, path, desc = imp.find_module(self.name, self.toolpath)
- # try:
- # return imp.load_module(self.name, file, path, desc)
- #
- # finally:
- # if file:
- # file.close()
- # except ImportError as e:
- # if str(e)!="No module named %s"%self.name:
- # raise SCons.Errors.EnvironmentError(e)
- # try:
- # import zipimport
- # except ImportError:
- # pass
- # else:
- # for aPath in self.toolpath:
- # try:
- # importer = zipimport.zipimporter(aPath)
- # return importer.load_module(self.name)
- # except ImportError as e:
- # pass
- # finally:
- # sys.path = oldpythonpath
+ return importlib.import_module('SCons.Tool.'+self.name)
+ except ImportError as e:
+ if str(e) != "No module named %s" % self.name:
+ raise SCons.Errors.EnvironmentError(e)
+ try:
+ import zipimport
+ except ImportError:
+ pass
+ else:
+ for aPath in self.toolpath:
+ try:
+ importer = zipimport.zipimporter(aPath)
+ return importer.load_module(self.name)
+ except ImportError as e:
+ pass
+
+ finally:
+ sys.path = oldpythonpath
+
+
full_name = 'SCons.Tool.' + self.name
try: