... |
... |
@@ -427,6 +427,14 @@ class Loader(): |
427
|
427
|
|
428
|
428
|
while elements_to_load:
|
429
|
429
|
element = elements_to_load.popleft()
|
|
430
|
+
|
|
431
|
+ if any(filter(not_visited, element.reverse_dependencies)):
|
|
432
|
+ # We will want to treat this item as soon as possible.
|
|
433
|
+ # Mark it as already seen
|
|
434
|
+ element.tried_visit = True
|
|
435
|
+ element.in_pipeline = False
|
|
436
|
+ continue
|
|
437
|
+
|
430
|
438
|
element.visited = True
|
431
|
439
|
meta_element = element._loader._collect_element(element)
|
432
|
440
|
element.visit(meta_element)
|
... |
... |
@@ -437,18 +445,15 @@ class Loader(): |
437
|
445
|
if dep.dep_type != Symbol.BUILD:
|
438
|
446
|
dep.element.on_visit(meta_element.dependencies.append)
|
439
|
447
|
|
440
|
|
- if any(filter(not_visited, element.reverse_dependencies)):
|
441
|
|
- # We will want to treat this item as soon as possible.
|
442
|
|
- # Mark it as already seen
|
443
|
|
- element.tried_visit = True
|
444
|
|
- continue
|
|
448
|
+ if not dep.element.in_pipeline:
|
|
449
|
+ dep.element.in_pipeline = True
|
445
|
450
|
|
446
|
|
- if dep.element.tried_visit:
|
447
|
|
- # This element has already been requested, we should treat
|
448
|
|
- # it as soon as possible
|
449
|
|
- elements_to_load.appendleft(dep.element)
|
450
|
|
- else:
|
451
|
|
- elements_to_load.append(dep.element)
|
|
451
|
+ if dep.element.tried_visit:
|
|
452
|
+ # This element has already been requested, we should treat
|
|
453
|
+ # it as soon as possible
|
|
454
|
+ elements_to_load.appendleft(dep.element)
|
|
455
|
+ else:
|
|
456
|
+ elements_to_load.append(dep.element)
|
452
|
457
|
|
453
|
458
|
for element in self._meta_elements.values():
|
454
|
459
|
element.build_dependencies.sort(key=attrgetter("index"), reverse=True)
|