Skip to content

Commit 835981f

Browse files
Allow source provenance info to be overridden
This allows multi-source source plugins to provide this information per source rather than as a singular top level. This is done by adding source_provenance_attrs arg to create_source_info() that when specified overrides the use of the source's top level source provenance info
1 parent fbadf11 commit 835981f

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

src/buildstream/source.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1367,6 +1367,7 @@ def create_source_info(
13671367
version: str,
13681368
*,
13691369
version_guess: Optional[str] = None,
1370+
source_provenance_attrs: Optional[SourceProvenance] = None,
13701371
extra_data: Optional[Dict[str, str]] = None,
13711372
) -> SourceInfo:
13721373
"""Create a :class:`.SourceInfo` object
@@ -1392,9 +1393,18 @@ def create_source_info(
13921393
"""
13931394
homepage = None
13941395
issue_tracker = None
1395-
if self.__provenance is not None:
1396-
homepage = self.__provenance.homepage
1397-
issue_tracker = self.__provenance.issue_tracker
1396+
1397+
if (
1398+
self.__provenance is not None
1399+
or source_provenance_attrs is not None
1400+
):
1401+
if source_provenance_attrs is None:
1402+
provenance_source = self.__provenance
1403+
else:
1404+
provenance_source = source_provenance_attrs
1405+
1406+
homepage = provenance_source.homepage
1407+
issue_tracker = provenance_source.issue_tracker
13981408

13991409
return SourceInfo(
14001410
self.get_kind(),

src/buildstream/types.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,17 @@ def new_from_node(cls, node: MappingNode) -> "SourceProvenance":
211211
issue_tracker,
212212
)
213213

214+
def serialize(self) -> Dict[str, str]:
215+
provenance = {}
216+
217+
if self.homepage is not None:
218+
provenance["homepage"] = self.homepage
219+
220+
if self.issue_tracker is not None:
221+
provenance["issue-tracker"] = self.issue_tracker
222+
223+
return provenance
224+
214225

215226
# _Scope():
216227
#

0 commit comments

Comments
 (0)