summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-08-06 05:10:28 (GMT)
committerSteven Knight <knight@baldmt.com>2002-08-06 05:10:28 (GMT)
commit57d9079227dbde7a6d8f29d03dd36a8d26b3850d (patch)
tree0343dbc1b37046bfabab4a8cab254f08646c0f17 /src/engine/SCons
parent59ec4b2e4ca1579c703093d0f87a7c5ecde8633c (diff)
downloadSCons-57d9079227dbde7a6d8f29d03dd36a8d26b3850d.zip
SCons-57d9079227dbde7a6d8f29d03dd36a8d26b3850d.tar.gz
SCons-57d9079227dbde7a6d8f29d03dd36a8d26b3850d.tar.bz2
Add Local() functionality to Repository support.
Diffstat (limited to 'src/engine/SCons')
-rw-r--r--src/engine/SCons/Node/FS.py11
-rw-r--r--src/engine/SCons/Script/SConscript.py9
2 files changed, 17 insertions, 3 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index 8bdfeb6..1433f20 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -388,6 +388,7 @@ class Entry(SCons.Node.Node):
self.__doSrcpath(self.duplicate)
self.srcpath_ = self.srcpath
self.cwd = None # will hold the SConscript directory for target nodes
+ self._local = None
def get_dir(self):
return self.dir
@@ -460,6 +461,9 @@ class Entry(SCons.Node.Node):
else:
return self.dir.is_under(dir)
+ def set_local(self):
+ self._local = 1
+
# XXX TODO?
@@ -606,7 +610,6 @@ class Dir(Entry):
# source_exists
# derived_exists
# is_on_rpath
-# local
# base_suf
# suffix
# addsuffix
@@ -758,8 +761,10 @@ class File(Entry):
if r != self:
# ...but there is one in a Repository...
if calc.current(r, bsig):
- # ...and it's even up-to-date.
- # XXX Future: copy locally if requested
+ # ...and it's even up-to-date...
+ if self._local:
+ # ...and they'd like a local copy.
+ file_link(r.path, self.path)
return 1
self._rfile = self
return None
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py
index 38fd080..a141297 100644
--- a/src/engine/SCons/Script/SConscript.py
+++ b/src/engine/SCons/Script/SConscript.py
@@ -206,6 +206,14 @@ def Default(*targets):
default_targets.extend(SCons.Node.arg2nodes(t,
SCons.Node.FS.default_fs.Entry))
+def Local(*targets):
+ for targ in targets:
+ if isinstance(targ, SCons.Node.Node):
+ targ.set_local()
+ else:
+ for t in SCons.Node.arg2nodes(targ, SCons.Node.FS.default_fs.Entry):
+ t.set_local()
+
def Help(text):
if print_help:
print text
@@ -280,6 +288,7 @@ def BuildDefaultGlobals():
globals['Help'] = Help
globals['Import'] = Import
globals['Library'] = SCons.Defaults.StaticLibrary
+ globals['Local'] = Local
globals['Object'] = SCons.Defaults.StaticObject
globals['Repository'] = SCons.Node.FS.default_fs.Repository
globals['SetBuildSignatureType'] = SetBuildSignatureType