summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Script
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-07-17 23:12:12 (GMT)
committerSteven Knight <knight@baldmt.com>2002-07-17 23:12:12 (GMT)
commit64a0553a81deaa7cab0158d9f533a1f460ad2c8b (patch)
treef8aacc828f3c77f73d8bebf5b6c5ec78eacf05d5 /src/engine/SCons/Script
parent1c2adf628d15657cee31f82525493bd9ab84b369 (diff)
downloadSCons-64a0553a81deaa7cab0158d9f533a1f460ad2c8b.zip
SCons-64a0553a81deaa7cab0158d9f533a1f460ad2c8b.tar.gz
SCons-64a0553a81deaa7cab0158d9f533a1f460ad2c8b.tar.bz2
Repository support (first cut).
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)