This is an automated email from the ASF dual-hosted git repository. akitouni pushed a commit to branch abderrahim/translate-url in repository https://gitbox.apache.org/repos/asf/buildstream-plugins.git
commit 0bf33429d44c30a751eb6fac96787230ed41070b Author: Abderrahim Kitouni <[email protected]> AuthorDate: Tue Mar 5 15:05:45 2024 +0100 cargo: translate the full url Related to https://github.com/apache/buildstream/pull/1896 --- src/buildstream_plugins/sources/cargo.py | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/src/buildstream_plugins/sources/cargo.py b/src/buildstream_plugins/sources/cargo.py index a8e4905..d40420a 100644 --- a/src/buildstream_plugins/sources/cargo.py +++ b/src/buildstream_plugins/sources/cargo.py @@ -63,7 +63,6 @@ details on common configuration options for sources. import json import os.path import tarfile -from urllib.parse import urljoin # We prefer tomli that was put into standard library as tomllib # starting from 3.11 @@ -107,7 +106,13 @@ class Crate(SourceFetcher): self.name = name self.version = str(version) self.sha = sha - self.mark_download_url(cargo.url) + # XXX: Kinda regresses on https://github.com/apache/buildstream-plugins/pull/52 + # by only supporting the requested behaviour rather than both the old and new. + path = "{name}/{name}-{version}.crate".format(name=self.name, version=self.version) + self.url = self.cargo.url + path + + self.mark_download_url(self.url) + self.cargo.mark_download_url(self.url, primary=False) ######################################################## # SourceFetcher API method implementations # @@ -123,7 +128,7 @@ class Crate(SourceFetcher): return # pragma: nocover # Download the crate - crate_url = self._get_url(alias_override) + crate_url = self.cargo.translate_url(self.url, alias_override=alias_override) with self.cargo.timed_activity("Downloading: {}".format(crate_url), silent_nested=True): sha256 = self._download(crate_url) if self.sha is not None and sha256 != self.sha: @@ -223,21 +228,6 @@ class Crate(SourceFetcher): self._store_etag(sha256, etag) return sha256 - # _get_url() - # - # Fetches the URL to download this crate from - # - # Args: - # alias (str|None): The URL alias to apply, if any - # - # Returns: - # (str): The URL for this crate - # - def _get_url(self, alias=None): - url = self.cargo.translate_url(self.cargo.url, alias_override=alias) - path = "{name}/{name}-{version}.crate".format(name=self.name, version=self.version) - return urljoin(f"{url}/", path) - # _get_etag() # # Fetches the locally stored ETag information for this @@ -313,7 +303,7 @@ class CargoSource(Source): node.validate_keys(Source.COMMON_CONFIG_KEYS + ["url", "ref", "cargo-lock", "vendor-dir"]) - # Needs to be marked here so that `track` can translate it later. + # Needs to be marked here so that `stage` can translate it later. self.mark_download_url(self.url) self.load_ref(node) @@ -379,7 +369,7 @@ class CargoSource(Source): crate = Crate(self, crate_obj["name"], crate_obj["version"]) - crate_url = crate._get_url() + crate_url = self.translate_url(crate.url) with self.timed_activity("Downloading: {}".format(crate_url), silent_nested=True): crate_obj["sha"] = crate._download(crate_url)
