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)

Reply via email to