diff options
| author | Steven Knight <knight@baldmt.com> | 2002-02-10 07:03:00 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2002-02-10 07:03:00 (GMT) |
| commit | a411d0d40e31664c721c4e8eb595b8e667fe5618 (patch) | |
| tree | f80affccd97aed651a33d0c3f43574d531e9e051 /src/engine/SCons/Node | |
| parent | 09a60a303bd391e720848134ce3124b273d5162c (diff) | |
| download | SCons-a411d0d40e31664c721c4e8eb595b8e667fe5618.zip SCons-a411d0d40e31664c721c4e8eb595b8e667fe5618.tar.gz SCons-a411d0d40e31664c721c4e8eb595b8e667fe5618.tar.bz2 | |
Create all of the directories for a target list before trying to build the targets.
Diffstat (limited to 'src/engine/SCons/Node')
| -rw-r--r-- | src/engine/SCons/Node/FS.py | 10 | ||||
| -rw-r--r-- | src/engine/SCons/Node/FSTests.py | 3 | ||||
| -rw-r--r-- | src/engine/SCons/Node/NodeTests.py | 16 | ||||
| -rw-r--r-- | src/engine/SCons/Node/__init__.py | 6 |
4 files changed, 18 insertions, 17 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index 5508436..3167005 100644 --- a/src/engine/SCons/Node/FS.py +++ b/src/engine/SCons/Node/FS.py @@ -562,14 +562,16 @@ class File(Entry): pass def build(self): - self.__createDir() Entry.build(self) self.exists_flag = self.exists() - def remove(self): - """Remove this file.""" + def prepare(self): + """Prepare for this file to be created.""" if self.exists(): - os.unlink(self.path) + if not self.precious: + os.unlink(self.path) + else: + self.__createDir() default_fs = FS() diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py index f20c2fb..94f81fd 100644 --- a/src/engine/SCons/Node/FSTests.py +++ b/src/engine/SCons/Node/FSTests.py @@ -397,6 +397,7 @@ class FSTestCase(unittest.TestCase): # Test building a file whose directory is not there yet... f1 = fs.File(test.workpath("foo/bar/baz/ack")) assert not f1.dir.exists() + f1.prepare() f1.build() assert f1.dir.exists() @@ -448,7 +449,7 @@ class FSTestCase(unittest.TestCase): test.write("remove_me", "\n") assert os.path.exists(test.workpath("remove_me")) f1 = fs.File(test.workpath("remove_me")) - f1.remove() + f1.prepare() assert not os.path.exists(test.workpath("remove_me")) #XXX test current() for directories diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py index abe5e00..4e51860 100644 --- a/src/engine/SCons/Node/NodeTests.py +++ b/src/engine/SCons/Node/NodeTests.py @@ -59,7 +59,7 @@ class ListBuilder(Builder): if hasattr(self, 'status'): return self.status for n in self.nodes: - n.remove() + n.prepare() kw['target'] = self.nodes[0] self.status = apply(Builder.execute, (self,), kw) @@ -130,11 +130,11 @@ class NodeTestCase(unittest.TestCase): class MyNode(SCons.Node.Node): def __init__(self, **kw): apply(SCons.Node.Node.__init__, (self,), kw) - self.remove_count = 0 + self.prepare_count = 0 def __str__(self): return self.path - def remove(self): - self.remove_count= self.remove_count+ 1 + def prepare(self): + self.prepare_count = self.prepare_count+ 1 # Make sure it doesn't blow up if no builder is set. node = MyNode() node.build() @@ -180,20 +180,20 @@ class NodeTestCase(unittest.TestCase): fff.build() assert built_it ggg.build() - assert ggg.remove_count== 1, ggg.remove_count + assert ggg.prepare_count== 1, ggg.prepare_count assert type(built_target) == type(MyNode()), type(built_target) assert str(built_target) == "fff", str(built_target) assert built_source == ["hhh", "iii"], built_source delattr(lb, 'status') - fff.remove_count = 0 - ggg.remove_count = 0 + fff.prepare_count = 0 + ggg.prepare_count = 0 built_it = None ggg.build() #assert built_it fff.build() - assert fff.remove_count== 1, fff.remove_count + assert fff.prepare_count== 1, fff.prepare_count assert type(built_target) == type(MyNode()), type(built_target) assert str(built_target) == "fff", str(built_target) assert built_source == ["hhh", "iii"], built_source diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py index 1222b1e..1d09b20 100644 --- a/src/engine/SCons/Node/__init__.py +++ b/src/engine/SCons/Node/__init__.py @@ -82,8 +82,6 @@ class Node: # there will already be an associated status. stat = self.builder.status except AttributeError: - if not self.precious: - self.remove() try: stat = self.builder.execute(env = self.env.Dictionary(), target = self, @@ -185,8 +183,8 @@ class Node: """Set the Node's precious value.""" self.precious = precious - def remove(self): - """Remove this Node's external object: no-op by default.""" + def prepare(self): + """Prepare for this Node to be created: no-op by default.""" pass def add_dependency(self, depend): |
