From 50154d0eb7afc564cb13e47c7524fcf2f6ff0450 Mon Sep 17 00:00:00 2001
From: Adam Gross <grossag@vmware.com>
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