From 50154d0eb7afc564cb13e47c7524fcf2f6ff0450 Mon Sep 17 00:00:00 2001 From: Adam Gross Date: Tue, 14 Jan 2020 19:44:24 -0500 Subject: Add name parameter as requested in PR --- src/engine/SCons/Environment.py | 4 ++-- src/engine/SCons/Node/Python.py | 9 ++++++--- src/engine/SCons/Node/PythonTests.py | 5 +++++ test/CacheDir/value_dependencies/SConstruct | 8 +++++--- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py index 3e23196..099d143 100644 --- a/src/engine/SCons/Environment.py +++ b/src/engine/SCons/Environment.py @@ -2220,10 +2220,10 @@ class Base(SubstitutionEnvironment): else: return [self.subst(arg)] - def Value(self, value, built_value=None): + def Value(self, value, built_value=None, name=None): """ """ - return SCons.Node.Python.ValueWithMemo(value, built_value) + return SCons.Node.Python.ValueWithMemo(value, built_value, name) def VariantDir(self, variant_dir, src_dir, duplicate=1): variant_dir = self.arg2nodes(variant_dir, self.fs.Dir)[0] diff --git a/src/engine/SCons/Node/Python.py b/src/engine/SCons/Node/Python.py index 385a645..8437385 100644 --- a/src/engine/SCons/Node/Python.py +++ b/src/engine/SCons/Node/Python.py @@ -88,7 +88,7 @@ class Value(SCons.Node.Node): NodeInfo = ValueNodeInfo BuildInfo = ValueBuildInfo - def __init__(self, value, built_value=None): + def __init__(self, value, built_value=None, name=None): SCons.Node.Node.__init__(self) self.value = value self.changed_since_last_build = 6 @@ -98,7 +98,10 @@ class Value(SCons.Node.Node): # Set a name so it can be a child of a node and not break # its parent's implementation of Node.get_contents. - self.name = value + if name: + self.name = name + else: + self.name = str(value) def str_for_display(self): return repr(self.value) @@ -181,7 +184,7 @@ class Value(SCons.Node.Node): return contents -def ValueWithMemo(value, built_value=None): +def ValueWithMemo(value, built_value=None, name=None): global _memo_lookup_map # No current support for memoizing a value that needs to be built. diff --git a/src/engine/SCons/Node/PythonTests.py b/src/engine/SCons/Node/PythonTests.py index da71074..302bb59 100644 --- a/src/engine/SCons/Node/PythonTests.py +++ b/src/engine/SCons/Node/PythonTests.py @@ -64,6 +64,11 @@ class ValueTestCase(unittest.TestCase): v2.build() assert v2.built_value == 'faked', v2.built_value + v3 = SCons.Node.Python.Value(b'\x00\x0F', name='name') + v3.executor = fake_executor() + v3.build() + assert v3.built_value == 'faked', v3.built_value + def test_read(self): """Test the Value.read() method """ diff --git a/test/CacheDir/value_dependencies/SConstruct b/test/CacheDir/value_dependencies/SConstruct index 649648b..7b7e596 100644 --- a/test/CacheDir/value_dependencies/SConstruct +++ b/test/CacheDir/value_dependencies/SConstruct @@ -11,7 +11,7 @@ def scan(node, env, path): # SCons.Node.Python.Value. sample_dir = env.fs.Dir('dir2') env.Depends(sample_dir, env.Value('c')) - return [sample_dir, env.Value('d')] + return [sample_dir, env.Value('d'), env.Value(b'\x03\x0F', name='name3')] scanner = Scanner(function=scan, node_class=SCons.Node.Node) builder = Builder(action=b, source_scanner=scanner) @@ -22,9 +22,11 @@ env.Append(BUILDERS={'B': builder}) # Create a node and a directory that each depend on an instance of # SCons.Node.Python.Value. sample_dir = env.fs.Dir('dir1') -env.Depends(sample_dir, env.Value('a')) +env.Depends(sample_dir, + [env.Value('a'), env.Value(b'\x01\x0F', name='name1')]) sample_file = env.fs.File('testfile') -env.Depends(sample_file, env.Value('b')) +env.Depends(sample_file, + [env.Value('b'), env.Value(b'\x02\x0F', name='name2')]) env.B(target='File1.out', source=[sample_dir, sample_file]) -- cgit v0.12