Skip to content

Commit 8780511

Browse files
klokikeli-schwartz
authored andcommitted
De-duplicate BuildTarget.sources
If the same source is provided by multiple dependencies it was added multiple times, as `added_sources` was only guarding against duplicates within the same source list. This was not a problem with ninja, but it triggers multiple sanity checks within xcode backend while attempting to create multiple ids for the same file. Rename `added_sources` to `seen_sources` as per reviewers request (cherry picked from commit 7b10f48)
1 parent 91941be commit 8780511

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

mesonbuild/build.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -758,6 +758,8 @@ def __init__(
758758
self.pch: T.Dict[str, T.List[str]] = {}
759759
self.extra_args: T.DefaultDict[str, T.List[str]] = kwargs.get('language_args', defaultdict(list))
760760
self.sources: T.List[File] = []
761+
# If the same source is defined multiple times, use it only once.
762+
self.seen_sources: T.Set[File] = set()
761763
self.generated: T.List['GeneratedTypes'] = []
762764
self.extra_files: T.List[File] = []
763765
self.d_features: DFeatures = {
@@ -880,12 +882,11 @@ def process_sourcelist(self, sources: T.List['SourceOutputs']) -> None:
880882
(static as they are only regenerated if meson itself is regenerated)
881883
3. Sources files generated by another target or a Generator (generated)
882884
"""
883-
added_sources: T.Set[File] = set() # If the same source is defined multiple times, use it only once.
884885
for s in sources:
885886
if isinstance(s, File):
886-
if s not in added_sources:
887+
if s not in self.seen_sources:
887888
self.sources.append(s)
888-
added_sources.add(s)
889+
self.seen_sources.add(s)
889890
elif isinstance(s, (CustomTarget, CustomTargetIndex, GeneratedList)):
890891
self.generated.append(s)
891892

0 commit comments

Comments
 (0)