summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node
diff options
context:
space:
mode:
authorGary Oberbrunner <garyo@oberbrunner.com>2013-11-02 20:27:42 (GMT)
committerGary Oberbrunner <garyo@oberbrunner.com>2013-11-02 20:27:42 (GMT)
commitcc202cdc15cd156c458ad9a2f94b2e9145be3ec2 (patch)
tree69c4681b26c8c9d2e94d7c7d24bbe764ec19e4ad /src/engine/SCons/Node
parent6660a1b75c021994ccf352bb5314935d533b7994 (diff)
parent54eaf41e5eadd05c73b0ad21223f73c4ed47684f (diff)
downloadSCons-cc202cdc15cd156c458ad9a2f94b2e9145be3ec2.zip
SCons-cc202cdc15cd156c458ad9a2f94b2e9145be3ec2.tar.gz
SCons-cc202cdc15cd156c458ad9a2f94b2e9145be3ec2.tar.bz2
Merge pull request #88: various usability enhancements
* Allow multiple --debug= values * Add support for a readonly cache (--cache-readonly) * Always print stats if requested * Generally try harder to print out a message on build errors
Diffstat (limited to 'src/engine/SCons/Node')
-rw-r--r--src/engine/SCons/Node/NodeTests.py13
-rw-r--r--src/engine/SCons/Node/__init__.py16
2 files changed, 27 insertions, 2 deletions
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py
index a301654..076ca65 100644
--- a/src/engine/SCons/Node/NodeTests.py
+++ b/src/engine/SCons/Node/NodeTests.py
@@ -693,6 +693,15 @@ class NodeTestCase(unittest.TestCase):
node.set_precious(7)
assert node.precious == 7
+ def test_set_pseudo(self):
+ """Test setting a Node's pseudo value
+ """
+ node = SCons.Node.Node()
+ node.set_pseudo()
+ assert node.pseudo
+ node.set_pseudo(False)
+ assert not node.pseudo
+
def test_exists(self):
"""Test evaluating whether a Node exists.
"""
@@ -954,7 +963,7 @@ class NodeTestCase(unittest.TestCase):
self.source_scanner = scanner
builder = Builder2(ts1)
-
+
targets = builder([source])
s = targets[0].get_source_scanner(source)
assert s is ts1, s
@@ -967,7 +976,7 @@ class NodeTestCase(unittest.TestCase):
builder = Builder1(env=Environment(SCANNERS = [ts3]))
targets = builder([source])
-
+
s = targets[0].get_source_scanner(source)
assert s is ts3, s
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index c114281..d353245 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -58,6 +58,10 @@ from SCons.Debug import Trace
def classname(obj):
return str(obj.__class__).split('.')[-1]
+# Set to false if we're doing a dry run. There's more than one of these
+# little treats
+do_store_info = True
+
# Node states
#
# These are in "priority" order, so that the maximum value for any
@@ -215,6 +219,7 @@ class Node(object):
self.env = None
self.state = no_state
self.precious = None
+ self.pseudo = False
self.noclean = 0
self.nocache = 0
self.cached = 0 # is this node pulled from cache?
@@ -386,6 +391,13 @@ class Node(object):
self.clear()
+ if self.pseudo:
+ if self.exists():
+ raise SCons.Errors.UserError("Pseudo target " + str(self) + " must not exist")
+ else:
+ if not self.exists() and do_store_info:
+ SCons.Warnings.warn(SCons.Warnings.TargetNotBuiltWarning,
+ "Cannot find target " + str(self) + " after building")
self.ninfo.update(self)
def visited(self):
@@ -789,6 +801,10 @@ class Node(object):
"""Set the Node's precious value."""
self.precious = precious
+ def set_pseudo(self, pseudo = True):
+ """Set the Node's precious value."""
+ self.pseudo = pseudo
+
def set_noclean(self, noclean = 1):
"""Set the Node's noclean value."""
# Make sure noclean is an integer so the --debug=stree