This is an automated email from the ASF dual-hosted git repository. akitouni pushed a commit to branch abderrahim/alias-mapping-fix in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 102520889844d831cce1ff7bcbc301560ac9e7d9 Author: Abderrahim Kitouni <[email protected]> AuthorDate: Mon May 13 15:29:48 2024 +0100 Keep track of the parent alias when aliases are mapped This fixes the test in the previous commit --- src/buildstream/_project.py | 6 +++--- src/buildstream/source.py | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/buildstream/_project.py b/src/buildstream/_project.py index db699c9ea..65b34f11a 100644 --- a/src/buildstream/_project.py +++ b/src/buildstream/_project.py @@ -15,7 +15,7 @@ # Tristan Van Berkom <[email protected]> # Tiago Gomes <[email protected]> -from typing import TYPE_CHECKING, Optional, Dict, Union, List, Sequence +from typing import TYPE_CHECKING, Optional, Dict, Union, List, Sequence, Tuple import os import urllib.parse @@ -453,7 +453,7 @@ class Project: # def get_alias_uris( self, alias: str, *, first_pass: bool = False, tracking: bool = False - ) -> Sequence[Union[SourceMirror, str, None]]: + ) -> Sequence[Union[Tuple[str, Union[SourceMirror, str]], None]]: if first_pass: config = self.first_pass_config @@ -489,7 +489,7 @@ class Project: if policy in (_SourceUriPolicy.ALL, _SourceUriPolicy.ALIASES): uri_list.append(config._aliases.get_str(alias)) - return uri_list + return [(alias, mirror) for mirror in uri_list] # load_elements() # diff --git a/src/buildstream/source.py b/src/buildstream/source.py index ef193cd37..b603f8c1f 100644 --- a/src/buildstream/source.py +++ b/src/buildstream/source.py @@ -280,7 +280,7 @@ class SourceFetcher: ############################################################# # Abstract Methods # ############################################################# - def fetch(self, alias_override: Optional[Union[str, SourceMirror]] = None, **kwargs) -> None: + def fetch(self, alias_override: Optional[Tuple[str, Union[str, SourceMirror]]] = None, **kwargs) -> None: """Fetch remote sources and mirror them locally, ensuring at least that the specific reference is cached locally. @@ -387,7 +387,7 @@ class Source(Plugin): meta: MetaSource, variables: Variables, *, - alias_override: Optional[Tuple[str, Union[str, SourceMirror]]] = None, + alias_override: Optional[Tuple[str, Tuple[str, Union[str, SourceMirror]]]] = None, unique_id: Optional[int] = None, ): # Set element_name member before parent init, as needed for debug messaging @@ -699,7 +699,7 @@ class Source(Plugin): self, url: str, *, - alias_override: Optional[Union[str, SourceMirror]] = None, + alias_override: Optional[Tuple[str, Union[str, SourceMirror]]] = None, primary: bool = True, suffix: Optional[str] = None, extra_data: Optional[Dict[str, Any]] = None, @@ -745,7 +745,7 @@ class Source(Plugin): if self.__alias_override is not None: override_alias = self.__alias_override[0] - override_mirror = self.__alias_override[1] + effective_alias, override_mirror = self.__alias_override[1] # Implicit alias overrides may only be done for one # specific alias, so that sources that fetch from multiple @@ -756,7 +756,7 @@ class Source(Plugin): return url elif alias_override is not None: - override_mirror = alias_override + effective_alias, override_mirror = alias_override # The default source mirror will give prefix URLs if isinstance(override_mirror, str): @@ -765,7 +765,7 @@ class Source(Plugin): # Delegate the URL translation to the SourceMirror plugin # return override_mirror.translate_url( - alias=url_alias, alias_url=project_alias_url, source_url=url_body, extra_data=extra_data + alias=effective_alias, alias_url=project_alias_url, source_url=url_body, extra_data=extra_data ) else: return project.translate_url(url, source=self, first_pass=self.__first_pass)
