summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Script
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/Script')
-rw-r--r--src/engine/SCons/Script/SConscript.py7
-rw-r--r--src/engine/SCons/Script/__init__.py16
2 files changed, 19 insertions, 4 deletions
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py
index 48c4046..e088c99 100644
--- a/src/engine/SCons/Script/SConscript.py
+++ b/src/engine/SCons/Script/SConscript.py
@@ -167,7 +167,7 @@ def SConscript(*ls, **kw):
else:
f = SCons.Node.FS.default_fs.File(str(fn))
if f.exists():
- file = open(str(f), "r")
+ file = open(f.rstr(), "r")
SCons.Node.FS.default_fs.chdir(f.dir)
if sconscript_chdir:
old_dir = os.getcwd()
@@ -276,10 +276,13 @@ def BuildDefaultGlobals():
globals['FindFile'] = FindFile
globals['GetBuildPath'] = GetBuildPath
globals['GetCommandHandler'] = SCons.Action.GetCommandHandler
+ globals['GetLaunchDir'] = GetLaunchDir
globals['Help'] = Help
globals['Import'] = Import
globals['Library'] = SCons.Defaults.StaticLibrary
globals['Object'] = SCons.Defaults.StaticObject
+ globals['Repository'] = SCons.Node.FS.default_fs.Repository
+ globals['SetBuildSignatureType'] = SetBuildSignatureType
globals['StaticLibrary'] = SCons.Defaults.StaticLibrary
globals['StaticObject'] = SCons.Defaults.StaticObject
globals['SharedLibrary'] = SCons.Defaults.SharedLibrary
@@ -294,6 +297,4 @@ def BuildDefaultGlobals():
globals['Split'] = SCons.Util.Split
globals['Tool'] = SCons.Tool.Tool
globals['WhereIs'] = SCons.Util.WhereIs
- globals['GetLaunchDir'] = GetLaunchDir
- globals['SetBuildSignatureType'] = SetBuildSignatureType
return globals
diff --git a/src/engine/SCons/Script/__init__.py b/src/engine/SCons/Script/__init__.py
index 66b4fd7..10794f5 100644
--- a/src/engine/SCons/Script/__init__.py
+++ b/src/engine/SCons/Script/__init__.py
@@ -185,6 +185,7 @@ target_top = None
exit_status = 0 # exit status, assume success by default
profiling = 0
max_drift = None
+repositories = []
# utility functions
@@ -792,7 +793,11 @@ def options_init():
# long = ['warn-undefined-variables'],
# help = "Warn when an undefined variable is referenced.")
- Option(func = opt_not_yet, future = 1,
+ def opt_Y(opt, arg):
+ global repositories
+ repositories.append(arg)
+
+ Option(func = opt_Y,
short = 'Y', long = ['repository'], arg = 'REPOSITORY',
help = "Search REPOSITORY for source and target files.")
@@ -825,10 +830,15 @@ def _SConstruct_exists(dirname=''):
If so, it returns the path of the file. By default, it checks the
current directory.
"""
+ global repositories
for file in ['SConstruct', 'Sconstruct', 'sconstruct']:
sfile = os.path.join(dirname, file)
if os.path.isfile(sfile):
return sfile
+ if not os.path.isabs(file):
+ for rep in repositories:
+ if os.path.isfile(os.path.join(rep, sfile)):
+ return sfile
return None
@@ -932,6 +942,10 @@ def _main():
sys.path = include_dirs + sys.path
+ global repositories
+ for rep in repositories:
+ SCons.Node.FS.default_fs.Repository(rep)
+
start_time = time.time()
for script in scripts:
SCons.Script.SConscript.SConscript(script)