From b2612c5887686e9d3640587f0dc7a479a970ac14 Mon Sep 17 00:00:00 2001 From: stevenknight Date: Tue, 16 Apr 2002 12:30:36 +0000 Subject: [PATCH] Fix importing of modules from the SConscript directory (Anthony Roach) git-svn-id: http://scons.tigris.org/svn/scons/trunk@334 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- src/CHANGES.txt | 3 +++ src/engine/SCons/Script/SConscript.py | 10 +++++++++- test/SConscript.py | 6 ++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/CHANGES.txt b/src/CHANGES.txt index b14aa57a..019b8e70 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 eb1a13e9..f30652d8 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 d9c7748c..0062be63 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') -- 2.26.2