# want to start everything, which means first handling any relevant
# options that might cause us to chdir somewhere (-C, -D, -U, -u).
if options.directory:
- cdir = _create_path(options.directory)
- try:
- os.chdir(cdir)
- except OSError:
- sys.stderr.write("Could not change directory to %s\n" % cdir)
+ script_dir = os.path.abspath(_create_path(options.directory))
+ else:
+ script_dir = os.getcwd()
target_top = None
if options.climb_up:
target_top = '.' # directory to prepend to targets
- script_dir = os.getcwd() # location of script
while script_dir and not _SConstruct_exists(script_dir,
options.repository,
options.file):
target_top = os.path.join(last_part, target_top)
else:
script_dir = ''
- if script_dir and script_dir != os.getcwd():
- display("scons: Entering directory `%s'" % script_dir)
+
+ if script_dir and script_dir != os.getcwd():
+ display("scons: Entering directory `%s'" % script_dir)
+ try:
os.chdir(script_dir)
+ except OSError:
+ sys.stderr.write("Could not change directory to %s\n" % script_dir)
# Now that we're in the top-level SConstruct directory, go ahead
# and initialize the FS object that represents the file system,
""")
test.run(arguments = '-C sub .',
- stdout = test.wrap_stdout(read_str = '%s\n' % wpath,
- build_str = "scons: `.' is up to date.\n"))
+ stdout = "scons: Entering directory `%s'\n" % wpath_sub \
+ + test.wrap_stdout(read_str = '%s\n' % wpath,
+ build_str = "scons: `.' is up to date.\n"))
test.run(arguments = '-C sub -C dir .',
- stdout = test.wrap_stdout(read_str = '%s\n' % wpath_sub_foo_bar,
- build_str = "scons: `.' is up to date.\n"))
+ stdout = "scons: Entering directory `%s'\n" % wpath_sub_dir \
+ + test.wrap_stdout(read_str = '%s\n' % wpath_sub_foo_bar,
+ build_str = "scons: `.' is up to date.\n"))
test.run(arguments = ".",
stdout = test.wrap_stdout(read_str = 'SConstruct %s\n' % wpath,
build_str = "scons: `.' is up to date.\n"))
test.run(arguments = '--directory=sub/dir .',
- stdout = test.wrap_stdout(read_str = '%s\n' % wpath_sub_foo_bar,
- build_str = "scons: `.' is up to date.\n"))
+ stdout = "scons: Entering directory `%s'\n" % wpath_sub_dir \
+ + test.wrap_stdout(read_str = '%s\n' % wpath_sub_foo_bar,
+ build_str = "scons: `.' is up to date.\n"))
test.run(arguments = '-C %s -C %s .' % (wpath_sub_dir, wpath_sub),
- stdout = test.wrap_stdout(read_str = '%s\n' % wpath,
- build_str = "scons: `.' is up to date.\n"))
+ stdout = "scons: Entering directory `%s'\n" % wpath_sub \
+ + test.wrap_stdout(read_str = '%s\n' % wpath,
+ build_str = "scons: `.' is up to date.\n"))
test.pass_test()