summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-11-12 01:27:32 (GMT)
committerSteven Knight <knight@baldmt.com>2004-11-12 01:27:32 (GMT)
commit0c6d3c5f5d2630b8be6fa7c915c515d77120c6a4 (patch)
tree0b12284a544a4889a4e88f54a31e1201324361be
parentf2c0e796d21a185ab95f0c82a0155b95304ba627 (diff)
downloadSCons-0c6d3c5f5d2630b8be6fa7c915c515d77120c6a4.zip
SCons-0c6d3c5f5d2630b8be6fa7c915c515d77120c6a4.tar.gz
SCons-0c6d3c5f5d2630b8be6fa7c915c515d77120c6a4.tar.bz2
Better fix for reflective build_dir paths. (Kevin Quick)
-rw-r--r--src/engine/SCons/Node/FS.py16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index 5ee4abf..541e42a 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -1098,7 +1098,7 @@ class FS(LocalFS):
def CacheDir(self, path):
self.CachePath = path
- def build_dir_target_climb(self, dir, tail):
+ def build_dir_target_climb(self, orig, dir, tail):
"""Create targets in corresponding build directories
Climb the directory tree, and look up path names
@@ -1106,23 +1106,19 @@ class FS(LocalFS):
"""
targets = []
message = None
+ fmt = "building associated BuildDir targets: %s"
start_dir = dir
- start_tail = tail[:]
while dir:
for bd in dir.build_dirs:
if start_dir.is_under(bd):
# If already in the build-dir location, don't reflect
- e = start_dir
- if start_tail:
- e = e.Entry(start_tail[0])
- targets.append(e)
- continue
+ return [orig], fmt % str(orig)
p = apply(os.path.join, [bd.path] + tail)
targets.append(self.Entry(p))
tail = [dir.name] + tail
dir = dir.up()
if targets:
- message = "building associated BuildDir targets: %s" % string.join(map(str, targets))
+ message = fmt % string.join(map(str, targets))
return targets, message
class Dir(Base):
@@ -1276,7 +1272,7 @@ class Dir(Base):
def alter_targets(self):
"""Return any corresponding targets in a build directory.
"""
- return self.fs.build_dir_target_climb(self, [])
+ return self.fs.build_dir_target_climb(self, self, [])
def scanner_key(self):
"""A directory does not get scanned."""
@@ -1648,7 +1644,7 @@ class File(Base):
"""
if self.is_derived():
return [], None
- return self.fs.build_dir_target_climb(self.dir, [self.name])
+ return self.fs.build_dir_target_climb(self, self.dir, [self.name])
def is_pseudo_derived(self):
return self.has_src_builder()