diff options
author | Steven Knight <knight@baldmt.com> | 2008-10-15 14:16:13 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2008-10-15 14:16:13 (GMT) |
commit | 96edb2c80e97965974608eb143500353425f8d8e (patch) | |
tree | 9c9cf4393cf506e6dce46601469c5489aa471044 /src | |
parent | 2d343867b73c005e7f429410d4e7956780770eb6 (diff) | |
download | SCons-96edb2c80e97965974608eb143500353425f8d8e.zip SCons-96edb2c80e97965974608eb143500353425f8d8e.tar.gz SCons-96edb2c80e97965974608eb143500353425f8d8e.tar.bz2 |
Support the -f option allowing specification of a different top-level
"SConstruct" file name to search for when using the -D, -U or -u options.
Diffstat (limited to 'src')
-rw-r--r-- | src/CHANGES.txt | 3 | ||||
-rw-r--r-- | src/engine/SCons/Script/Main.py | 15 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 57c6e22..516850e 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -18,6 +18,9 @@ RELEASE 1.X - XXX - Fix env.Append() and env.Prepend()'s ability to add a string to list-like variables like $CCFLAGS under Python 2.6. + - Support using the -f option to search for a different top-level + file name when walking up with the -D, -U or -u options. + RELEASE 1.1.0 - Thu, 09 Oct 2008 08:33:47 -0700 diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py index 22ca331..7b6b52b 100644 --- a/src/engine/SCons/Script/Main.py +++ b/src/engine/SCons/Script/Main.py @@ -600,12 +600,14 @@ def _scons_internal_error(): traceback.print_exc() sys.exit(2) -def _SConstruct_exists(dirname='', repositories=[]): +def _SConstruct_exists(dirname='', repositories=[], filelist=None): """This function checks that an SConstruct file exists in a directory. If so, it returns the path of the file. By default, it checks the current directory. """ - for file in ['SConstruct', 'Sconstruct', 'sconstruct']: + if not filelist: + filelist = ['SConstruct', 'Sconstruct', 'sconstruct'] + for file in filelist: sfile = os.path.join(dirname, file) if os.path.isfile(sfile): return sfile @@ -779,13 +781,15 @@ def _main(parser): 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): + while script_dir and not _SConstruct_exists(script_dir, + options.repository, + options.file): script_dir, last_part = os.path.split(script_dir) if last_part: target_top = os.path.join(last_part, target_top) else: script_dir = '' - if script_dir: + if script_dir and script_dir != os.getcwd(): display("scons: Entering directory `%s'" % script_dir) os.chdir(script_dir) @@ -804,7 +808,8 @@ def _main(parser): if options.file: scripts.extend(options.file) if not scripts: - sfile = _SConstruct_exists(repositories=options.repository) + sfile = _SConstruct_exists(repositories=options.repository, + filelist=options.file) if sfile: scripts.append(sfile) |