[Notes] [Git][BuildStream/buildstream][bschubert/rework-sort] fixup! fixup! fixup! fixup! Add reverse dependencies in the LoadElement



Title: GitLab

Benjamin Schubert pushed to branch bschubert/rework-sort at BuildStream / buildstream

Commits:

2 changed files:

Changes:

  • buildstream/_loader/loadelement.py
    ... ... @@ -65,6 +65,7 @@ class LoadElement():
    65 65
             self.full_name = None  # The element full name (with associated junction)
    
    66 66
             self.visited = False
    
    67 67
             self.tried_visit = False
    
    68
    +        self.in_pipeline = False
    
    68 69
             self.__on_visit = []
    
    69 70
             #
    
    70 71
             # Private members
    

  • buildstream/_loader/loader.py
    ... ... @@ -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)
    



  • [Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]