| Index: pylib/gyp/input.py
|
| diff --git a/pylib/gyp/input.py b/pylib/gyp/input.py
|
| index 20178672b23bd83333466c2e26afdf69b63eea85..22eb333d0524ab11918a36212f90390b522ba11e 100644
|
| --- a/pylib/gyp/input.py
|
| +++ b/pylib/gyp/input.py
|
| @@ -1539,11 +1539,15 @@ class DependencyGraphNode(object):
|
| # dependents.
|
| flat_list = OrderedSet()
|
|
|
| + def ExtractNodeRef(node):
|
| + """Extracts the object that the node represents from the given node."""
|
| + return node.ref
|
| +
|
| # in_degree_zeros is the list of DependencyGraphNodes that have no
|
| # dependencies not in flat_list. Initially, it is a copy of the children
|
| # of this node, because when the graph was built, nodes with no
|
| # dependencies were made implicit dependents of the root node.
|
| - in_degree_zeros = set(self.dependents[:])
|
| + in_degree_zeros = sorted(self.dependents[:], key=ExtractNodeRef)
|
|
|
| while in_degree_zeros:
|
| # Nodes in in_degree_zeros have no dependencies not in flat_list, so they
|
| @@ -1555,12 +1559,13 @@ class DependencyGraphNode(object):
|
|
|
| # Look at dependents of the node just added to flat_list. Some of them
|
| # may now belong in in_degree_zeros.
|
| - for node_dependent in node.dependents:
|
| + for node_dependent in sorted(node.dependents, key=ExtractNodeRef):
|
| is_in_degree_zero = True
|
| # TODO: We want to check through the
|
| # node_dependent.dependencies list but if it's long and we
|
| # always start at the beginning, then we get O(n^2) behaviour.
|
| - for node_dependent_dependency in node_dependent.dependencies:
|
| + for node_dependent_dependency in (sorted(node_dependent.dependencies,
|
| + key=ExtractNodeRef)):
|
| if not node_dependent_dependency.ref in flat_list:
|
| # The dependent one or more dependencies not in flat_list. There
|
| # will be more chances to add it to flat_list when examining
|
| @@ -1573,7 +1578,7 @@ class DependencyGraphNode(object):
|
| # All of the dependent's dependencies are already in flat_list. Add
|
| # it to in_degree_zeros where it will be processed in a future
|
| # iteration of the outer loop.
|
| - in_degree_zeros.add(node_dependent)
|
| + in_degree_zeros += [node_dependent]
|
|
|
| return list(flat_list)
|
|
|
|
|