.TP
.RI SConscriptChdir( value )
-When a non-zero
-.I value
-is specified,
-this instructs
+By default,
.B scons
-to change its working directory (chdir)
-to the directory in which each subsidiary
-SConscript file lives.
-Note that you may enable and disable
+changes its working directory
+to the directory in which each
+subsidiary SConscript file lives.
+This behavior may be disabled
+by specifying:
+.ES
+SConscriptChdir(0)
+.EE
+in which case
+.B scons
+will stay in the top-level directory
+while reading all SConscript files.
+(This may be necessary when building from repositories,
+when all the directories in which SConscript files may be found
+don't necessarily exist locally.)
+
+You may enable and disable
this ability by calling
SConscriptChdir()
multiple times:
.ES
-SConscriptChdir(1)
-SConscript('foo/SConscript') # will chdir to foo
SConscriptChdir(0)
-SConscript('bar/SConscript') # will not chdir to bar
+SConscript('foo/SConscript') # will not chdir to foo
+SConscriptChdir(1)
+SConscript('bar/SConscript') # will chdir to bar
.EE
.TP
This allows you to build in another directory by simply changing
there and pointing at the SConstruct file in another directory.
+ - Change the default SConscriptChdir() behavior to change to the
+ SConscript directory while it's being read.
+
From Lachlan O'Dea:
- Add SharedObject() support to the masm tool.
This is the twelfth alpha release of SCons. Please consult the
CHANGES.txt file for a list of specific changes since last release.
+ Please note the following important changes since release 0.11:
+
+ - The default behavior of SCons is now to change to the directory in
+ which an SConscript file resides while reading the SConscript file.
+ To disable this and restore the previous behavior of staying in the
+ top-level directory, specify the following in your SConstruct file:
+
+ SConscriptChdir(0)
+
Please note the following important changes since release 0.10:
- The default suffix for shared object files when using gcc has
global_exports = {}
# chdir flag
-sconscript_chdir = 0
+sconscript_chdir = 1
def SConscriptChdir(flag):
global sconscript_chdir
# in different Repositories. For now, cross that
# bridge when someone comes to it.
ldir = default_fs.Dir(f.dir.get_path(sd))
- default_fs.chdir(ldir, change_os_dir=sconscript_chdir)
+ try:
+ default_fs.chdir(ldir, change_os_dir=sconscript_chdir)
+ except OSError:
+ # There was no local directory, so we should be
+ # able to chdir to the Repository directory.
+ # Note that we do this directly, not through
+ # default_fs.chdir(), because we still need to
+ # interpret the stuff within the SConscript file
+ # relative to where we are logically.
+ os.chdir(f.rfile().dir.abspath)
# Append the SConscript directory to the beginning
# of sys.path so Python modules in the SConscript