From 57aefe3ca22c13c9f8cfc093f0fbcde97a61ea54 Mon Sep 17 00:00:00 2001 From: William Deegan Date: Thu, 29 Mar 2018 15:30:48 -0400 Subject: Modified fix for issue #2980 where the more complicated logic is only applied when the number of children in the current build doesn't match the number in the previous build as retrieved from the sconsign file. --- src/CHANGES.txt | 6 ++++-- src/engine/SCons/Node/__init__.py | 12 ++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/CHANGES.txt b/src/CHANGES.txt index bd1e56a..e2fb598 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -15,7 +15,7 @@ RELEASE 3.1.0.alpha.yyyymmdd - NEW DATE WILL BE INSERTED HERE - Fix the PATH created by scons.bat (and other .bat files) to provide a normalized PATH. Some pythons in the 3.6 series are no longer able to handle paths which have ".." in them and end up crashing. This is done by cd'ing into the directory - we want to add to the path and then useing %CD% to give us the normalized directory + we want to add to the path and then using %CD% to give us the normalized directory See bug filed under Python 3.6: https://bugs.python.org/issue32457. Note: On Win32 PATH's which have not been normalized may cause undefined behavior by other executables being run by SCons (or any subprocesses of executables being run by SCons). @@ -55,7 +55,9 @@ RELEASE 3.1.0.alpha.yyyymmdd - NEW DATE WILL BE INSERTED HERE - Fix new logic which populates JAVAINCLUDES to handle the case where javac is not found. - Fix GH Issue #3225 SCons.Util.Flatten() doesn't handle MappingView's produced by dictionary as return values from dict().{items(), keys(), values()}. - + - Fix issue #2980 with credit to William Blevins. This is an issue where using TimeStamp-MD5 Decider + and CacheDir can yield incorrect md5's being written into the .sconsign. + From Andrew Featherstone - Removed unused --warn options from the man page and source code. diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py index 22f1be5..cdaccca 100644 --- a/src/engine/SCons/Node/__init__.py +++ b/src/engine/SCons/Node/__init__.py @@ -1491,13 +1491,11 @@ class Node(object, with_metaclass(NoSlotsPyPy)): result = False bi = node.get_stored_info().binfo - # then = bi.bsourcesigs + bi.bdependsigs + bi.bimplicitsigs + then = bi.bsourcesigs + bi.bdependsigs + bi.bimplicitsigs # TODO: Can we move this into the if diff below? - dmap = self._build_dependency_map(bi) children = self.children() - # diff = len(children) - len(then) - diff = len(children) - len(dmap) + diff = len(children) - len(then) if diff: # The old and new dependency lists are different lengths. # This always indicates that the Node must be rebuilt. @@ -1508,11 +1506,13 @@ class Node(object, with_metaclass(NoSlotsPyPy)): # # of the loop below that updates node information. # then.extend([None] * diff) # if t: Trace(': old %s new %s' % (len(then), len(children))) + dmap = self._build_dependency_map(bi) + # Now build new then based on map built above. + then = self._get_previous_signatures(dmap, children) + result = True - # Now build new then based on map built above. - then = self._get_previous_signatures(dmap, children) for child, prev_ni in zip(children, then): if _decider_map[child.changed_since_last_build](child, self, prev_ni): -- cgit v0.12