summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildstream/element.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/buildstream/element.py b/src/buildstream/element.py
index fa39eba12..404cae5e7 100644
--- a/src/buildstream/element.py
+++ b/src/buildstream/element.py
@@ -83,7 +83,7 @@ from contextlib import contextmanager
from functools import partial
from itertools import chain
import string
-from typing import cast, TYPE_CHECKING, Any, Dict, Iterator, List, Optional
+from typing import cast, TYPE_CHECKING, Any, Dict, Iterator, List, Optional, Set
from pyroaring import BitMap # pylint: disable=no-name-in-module
@@ -113,7 +113,7 @@ from .storage.directory import VirtualDirectoryError
if TYPE_CHECKING:
from .node import MappingNode, ScalarNode, SequenceNode
from .types import SourceRef
- from typing import Set, Tuple
+ from typing import Tuple
# pylint: disable=cyclic-import
from .sandbox import Sandbox
@@ -441,10 +441,17 @@ class Element(Plugin):
# containing element that have been visited for the `Scope.BUILD` case
# and the second one relating to the `Scope.RUN` case.
if not recurse:
+ result: Set[Element] = set()
if scope in (Scope.BUILD, Scope.ALL):
- yield from self.__build_dependencies
+ for dep in self.__build_dependencies:
+ if dep not in result:
+ result.add(dep)
+ yield dep
if scope in (Scope.RUN, Scope.ALL):
- yield from self.__runtime_dependencies
+ for dep in self.__runtime_dependencies:
+ if dep not in result:
+ result.add(dep)
+ yield dep
else:
def visit(element, scope, visited):