Mesa (master): scons: Fix the Python dependency scanner.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Fri Oct 14 15:53:35 UTC 2016


Module: Mesa
Branch: master
Commit: b12606b693210fb6b327ec7cc7be6d9f79940198
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b12606b693210fb6b327ec7cc7be6d9f79940198

Author: Jose Fonseca <jfonseca at vmware.com>
Date:   Fri Oct 14 16:51:56 2016 +0100

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.

---

 scons/custom.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/scons/custom.py b/scons/custom.py
index e66f496..bdb4039 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():




More information about the mesa-commit mailing list