summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/CHANGES.txt3
-rw-r--r--src/engine/SCons/Script/SConscript.py10
-rw-r--r--test/SConscript.py6
3 files changed, 18 insertions, 1 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index b14aa57..019b8e7 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -100,6 +100,9 @@ RELEASE 0.07 -
- Change the -U option to -D. Make a new -U that builds just the
targets from the local SConscript file.
+ - Fixed use of sys.path so Python modules can be imported from
+ the SConscript directory.
+
RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py
index eb1a13e..f30652d 100644
--- a/src/engine/SCons/Script/SConscript.py
+++ b/src/engine/SCons/Script/SConscript.py
@@ -39,6 +39,7 @@ import SCons.Node.FS
import SCons.Util
import os
+import os.path
import string
import sys
@@ -105,8 +106,8 @@ def SConscript(script, exports=[]):
# push:
stack.append(Frame(exports))
-
old_dir = None
+ old_sys_path = sys.path
try:
# call:
if script == "-":
@@ -120,11 +121,18 @@ def SConscript(script, exports=[]):
if sconscript_chdir:
old_dir = os.getcwd()
os.chdir(str(script.dir))
+
+ # prepend the SConscript directory to sys.path so
+ # that Python modules in the SConscript directory can
+ # be easily imported.
+ sys.path = [os.path.abspath(str(script.dir))] + sys.path
+
exec file in stack[-1].globals
else:
sys.stderr.write("Ignoring missing SConscript '%s'\n" % script.path)
finally:
# pop:
+ sys.path = old_sys_path
frame = stack.pop()
SCons.Node.FS.default_fs.chdir(frame.prev_dir)
if old_dir:
diff --git a/test/SConscript.py b/test/SConscript.py
index d9c7748..0062be6 100644
--- a/test/SConscript.py
+++ b/test/SConscript.py
@@ -28,8 +28,14 @@ import TestSCons
test = TestSCons.TestSCons()
+test.write('foo.py', """
+foo = 4""")
+
test.write('SConstruct', """
import os
+import foo
+
+assert foo.foo == 4
print "SConstruct", os.getcwd()
SConscript('SConscript')