diff --git a/CHANGES.txt b/CHANGES.txt index 17121f4c0b..9441e0b9ad 100755 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -152,6 +152,10 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER - Added MSVC_USE_SCRIPT_ARGS variable to pass arguments to MSVC_USE_SCRIPT. - Added Configure.CheckMember() checker to check if struct/class has the specified member. + From Andrew Morrow: + - Prioritize nodes with more waiting parents when adding new candidate nodes. + NOTE: This may change build order and expose missing dependency edges + RELEASE 4.3.0 - Tue, 16 Nov 2021 18:12:46 -0700 From Jacob Cassagnol: diff --git a/RELEASE.txt b/RELEASE.txt index c1c9ed0d0c..6b35d0c4ae 100755 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -79,6 +79,7 @@ CHANGED/ENHANCED EXISTING FUNCTIONALITY require delayed expansion to be enabled which is currently not supported and is typically not enabled by default on the host system. The batch files may also require environment variables that are not included by default in the msvc environment. +- Prioritize nodes with more waiting parents when adding new candidate nodes. FIXES ----- diff --git a/SCons/Taskmaster.py b/SCons/Taskmaster.py index d57179545b..2e90c9adba 100644 --- a/SCons/Taskmaster.py +++ b/SCons/Taskmaster.py @@ -471,13 +471,15 @@ def postprocess(self): if p.ref_count == 0: self.tm.candidates.append(p) + new_candidates = [] for p, subtract in parents.items(): p.ref_count = p.ref_count - subtract if T: T.write(self.trace_message('Task.postprocess()', p, 'adjusted parent ref count')) if p.ref_count == 0: - self.tm.candidates.append(p) + new_candidates.append(p) + self.tm.candidates.extend(sorted(new_candidates, key = lambda c: len(c.waiting_parents))) for t in targets: t.postprocess()