summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWilliam Deegan <bill@baddogconsulting.com>2016-05-19 02:58:51 (GMT)
committerWilliam Deegan <bill@baddogconsulting.com>2016-05-19 02:58:51 (GMT)
commit7d7012b21a1434ab03cead57e4b8926c8b5ef153 (patch)
tree25e9431823fff5fbb692bf108c14b99676d3699d /src
parent839045dc79c4a02d971bad84265d08474c20d098 (diff)
downloadSCons-7d7012b21a1434ab03cead57e4b8926c8b5ef153.zip
SCons-7d7012b21a1434ab03cead57e4b8926c8b5ef153.tar.gz
SCons-7d7012b21a1434ab03cead57e4b8926c8b5ef153.tar.bz2
fix for module loading to us importlib instead of imp (which no longer works in pyton3)
Diffstat (limited to 'src')
-rw-r--r--src/engine/SCons/Tool/__init__.py68
1 files changed, 48 insertions, 20 deletions
diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py
index 4cd242b..87ebb98 100644
--- a/src/engine/SCons/Tool/__init__.py
+++ b/src/engine/SCons/Tool/__init__.py
@@ -38,11 +38,13 @@ tool definition.
__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
import imp
+import importlib
import sys
import re
import os
import shutil
+
import SCons.Builder
import SCons.Errors
import SCons.Node.FS
@@ -114,30 +116,56 @@ class Tool(object):
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
+ 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:
- 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
+ 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
+
full_name = 'SCons.Tool.' + self.name
try:
return sys.modules[full_name]