summaryrefslogtreecommitdiff
path: root/scons
diff options
context:
space:
mode:
authorJose Fonseca <jfonseca@vmware.com>2016-10-14 16:51:56 +0100
committerJose Fonseca <jfonseca@vmware.com>2016-10-14 16:52:13 +0100
commitb12606b693210fb6b327ec7cc7be6d9f79940198 (patch)
tree89f77362579eb360fdce58f7c2819369ad193ac8 /scons
parentc6d17701c823f10ce6d04e4ccb5df09b0186bfbd (diff)
scons: Fix the Python dependency scanner.
modulefinder wasn't searching for dependencies in the script dir. It's not capable of detecting the sys.path manipulations scripts do internally neither. This change fixes the first issue, and hacks around the second. Honestly, I've come to the conclusion that automatic Python dependency it will always be too brittle. I think we should start manually typing the dependencies like we do in automake. At very least it will enable any person to eyeball and spot/fix missing dependencies, without dig into SCons internals.
Diffstat (limited to 'scons')
-rw-r--r--scons/custom.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/scons/custom.py b/scons/custom.py
index e66f496962..bdb4039b8a 100644
--- a/scons/custom.py
+++ b/scons/custom.py
@@ -103,8 +103,14 @@ def python_scan(node, env, path):
# http://www.scons.org/doc/0.98.5/HTML/scons-user/c2781.html#AEN2789
# https://docs.python.org/2/library/modulefinder.html
contents = node.get_contents()
- source_dir = node.get_dir()
- finder = modulefinder.ModuleFinder()
+
+ # Tell ModuleFinder to search dependencies in the script dir, and the glapi
+ # dirs
+ source_dir = node.get_dir().abspath
+ GLAPI = env.Dir('#src/mapi/glapi/gen').abspath
+ path = [source_dir, GLAPI] + sys.path
+
+ finder = modulefinder.ModuleFinder(path=path)
finder.run_script(node.abspath)
results = []
for name, mod in finder.modules.iteritems():