summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-02-10 07:03:00 (GMT)
committerSteven Knight <knight@baldmt.com>2002-02-10 07:03:00 (GMT)
commita411d0d40e31664c721c4e8eb595b8e667fe5618 (patch)
treef80affccd97aed651a33d0c3f43574d531e9e051 /src/engine/SCons/Node
parent09a60a303bd391e720848134ce3124b273d5162c (diff)
downloadSCons-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.py10
-rw-r--r--src/engine/SCons/Node/FSTests.py3
-rw-r--r--src/engine/SCons/Node/NodeTests.py16
-rw-r--r--src/engine/SCons/Node/__init__.py6
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):