diff options
| author | Steven Knight <knight@baldmt.com> | 2003-06-28 05:07:53 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2003-06-28 05:07:53 (GMT) |
| commit | 3757529b5b73fc69eff8a0709482198d45ed33c5 (patch) | |
| tree | 49e39aab117a911546f6d61709b5cbc9c8b5dbc1 /src | |
| parent | d3d08d4f13edc216f169f49636f3d81102727a33 (diff) | |
| download | SCons-3757529b5b73fc69eff8a0709482198d45ed33c5.zip SCons-3757529b5b73fc69eff8a0709482198d45ed33c5.tar.gz SCons-3757529b5b73fc69eff8a0709482198d45ed33c5.tar.bz2 | |
Support targets that always rebuild. (Stephen Ng)
[Updating a change that was previously not synchronized to CVS.]
Diffstat (limited to 'src')
| -rw-r--r-- | src/engine/SCons/Environment.py | 12 | ||||
| -rw-r--r-- | src/engine/SCons/Node/NodeTests.py | 9 | ||||
| -rw-r--r-- | src/engine/SCons/Node/__init__.py | 5 | ||||
| -rw-r--r-- | src/engine/SCons/Sig/SigTests.py | 4 | ||||
| -rw-r--r-- | src/engine/SCons/Sig/__init__.py | 4 |
5 files changed, 34 insertions, 0 deletions
diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py index 0f5cb30..04452a9 100644 --- a/src/engine/SCons/Environment.py +++ b/src/engine/SCons/Environment.py @@ -338,6 +338,18 @@ class Environment: tlist = tlist[0] return tlist + def AlwaysBuild(self, *targets): + tlist = [] + for t in targets: + tlist.extend(SCons.Node.arg2nodes(t, self.fs.File)) + + for t in tlist: + t.set_always_build() + + if len(tlist) == 1: + tlist = tlist[0] + return tlist + def Precious(self, *targets): tlist = [] for t in targets: diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py index ff57871..f8593d7 100644 --- a/src/engine/SCons/Node/NodeTests.py +++ b/src/engine/SCons/Node/NodeTests.py @@ -381,6 +381,15 @@ class NodeTestCase(unittest.TestCase): node = SCons.Node.Node() node.store_timestamp() + def test_set_always_build(self): + """Test setting a Node's always_build value + """ + node = SCons.Node.Node() + node.set_always_build() + assert node.always_build + node.set_always_build(3) + assert node.always_build == 3 + def test_set_precious(self): """Test setting a Node's precious value """ diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py index 43ae7c5..0fc2365 100644 --- a/src/engine/SCons/Node/__init__.py +++ b/src/engine/SCons/Node/__init__.py @@ -107,6 +107,7 @@ class Node: self.env = None self.state = None self.precious = None + self.always_build = None self.found_includes = {} self.includes = None self.overrides = {} # construction variable overrides for building this node @@ -521,6 +522,10 @@ class Node: """Set the Node's precious value.""" self.precious = precious + def set_always_build(self, always_build = 1): + """Set the Node's always_build value.""" + self.always_build = always_build + def exists(self): """Does this node exists?""" # All node exist by default: diff --git a/src/engine/SCons/Sig/SigTests.py b/src/engine/SCons/Sig/SigTests.py index bb3efb8..3010396 100644 --- a/src/engine/SCons/Sig/SigTests.py +++ b/src/engine/SCons/Sig/SigTests.py @@ -58,6 +58,7 @@ class DummyNode: self.oldtime = 0 self.oldbsig = 0 self.oldcsig = 0 + self.always_build = 0 def has_builder(self): return self.builder @@ -380,12 +381,15 @@ class CalcTestCase(unittest.TestCase): def test_Calc_current(self): class NN(self.nodeclass): + always_build = 0 def current(self): return None nn = NN('nn', 33, 34) assert not self.calc.current(nn, 30) assert self.calc.current(nn, 33) + nn.always_build = 1 + assert not self.calc.current(nn, 33) class SConsignEntryTestCase(unittest.TestCase): diff --git a/src/engine/SCons/Sig/__init__.py b/src/engine/SCons/Sig/__init__.py index 6f830b6..65fe807 100644 --- a/src/engine/SCons/Sig/__init__.py +++ b/src/engine/SCons/Sig/__init__.py @@ -344,6 +344,10 @@ class Calculator: returns - 1 if the file is current with the specified signature, 0 if it isn't """ + + if node.always_build: + return 0 + oldtime, oldbsig, oldcsig = node.get_prevsiginfo() if not node.has_builder() and node.get_timestamp() == oldtime: |
