summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Tool
diff options
context:
space:
mode:
authorgrbd <garlicbready@googlemail.com>2017-06-13 13:23:08 (GMT)
committergrbd <garlicbready@googlemail.com>2017-06-13 13:23:08 (GMT)
commit23433f501b055457cc82ed8536af48cd08ebf219 (patch)
tree4ca0d2d55a0c8b57512eca0b15d3d2b679a8fe84 /src/engine/SCons/Tool
parenta057ea49ae3c10c5ddd2be6232a38b110fe7159c (diff)
downloadSCons-23433f501b055457cc82ed8536af48cd08ebf219.zip
SCons-23433f501b055457cc82ed8536af48cd08ebf219.tar.gz
SCons-23433f501b055457cc82ed8536af48cd08ebf219.tar.bz2
Added support for nested tools
Diffstat (limited to 'src/engine/SCons/Tool')
-rw-r--r--src/engine/SCons/Tool/__init__.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py
index 61b7788..e15c2f3 100644
--- a/src/engine/SCons/Tool/__init__.py
+++ b/src/engine/SCons/Tool/__init__.py
@@ -118,6 +118,16 @@ class Tool(object):
if hasattr(module, 'options'):
self.options = module.options
+ def _load_dotted_module(self, short_name, full_name, searchpaths=None):
+ splitname = short_name.split('.')
+ index = 0
+ srchpths = searchpaths
+ for item in splitname:
+ file, path, desc = imp.find_module(item, srchpths)
+ mod = imp.load_module(full_name, file, path, desc)
+ srchpths = [path]
+ return mod, file
+
def _tool_module(self):
oldpythonpath = sys.path
sys.path = self.toolpath + sys.path
@@ -127,10 +137,10 @@ class Tool(object):
# Py 2 code
try:
try:
- file, path, desc = imp.find_module(self.name, self.toolpath)
+ file = None
try:
- return imp.load_module(self.name, file, path, desc)
-
+ mod, file = self._load_dotted_module(self.name, self.name, self.toolpath)
+ return mod
finally:
if file:
file.close()
@@ -231,8 +241,7 @@ class Tool(object):
try:
smpath = sys.modules['SCons.Tool'].__path__
try:
- file, path, desc = imp.find_module(self.name, smpath)
- module = imp.load_module(full_name, file, path, desc)
+ module, file = self._load_dotted_module(self.name, full_name, smpath)
setattr(SCons.Tool, self.name, module)
if file:
file.close()