diff options
author | Charlie Johnston <charlie.johnston@loftorbital.com> | 2023-11-27 06:11:47 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-12-02 18:04:23 +0000 |
commit | 1f8a639a67a192fa06cef15018a5cd5f7f94a602 (patch) | |
tree | 2cff0441ec242f660285ca5d00c7cd3478ef7b27 /bitbake/lib/bb/fetch2 | |
parent | 64725a9c324d709e633ad31a79266a62a6d10f34 (diff) | |
download | poky-1f8a639a67a192fa06cef15018a5cd5f7f94a602.tar.gz |
bitbake: fetch2: Ensure GCP fetcher checks if file exists before download.
The GCP fetcher was calling bb.fetch2.check_network_access with
"gsutil stat" as the command, but then never actually ran that
command to check if the file exists. In cases where the file did
not exist in a gs:// premirror, this would lead to an unhandled
exception from do_fetch when the GCP python API tried to perform
the download.
This change resolves that issue by adding a runfetchcmd to call
gsutil.
(Bitbake rev: 1ab1d36c0af6fc58a974106b61ff4d37da6cb229)
Signed-off-by: Charlie Johnston <charlie.johnston@loftorbital.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/fetch2')
-rw-r--r-- | bitbake/lib/bb/fetch2/gcp.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/bitbake/lib/bb/fetch2/gcp.py b/bitbake/lib/bb/fetch2/gcp.py index f42c81fda8..f40ce2eaa5 100644 --- a/bitbake/lib/bb/fetch2/gcp.py +++ b/bitbake/lib/bb/fetch2/gcp.py | |||
@@ -47,6 +47,7 @@ class GCP(FetchMethod): | |||
47 | ud.basename = os.path.basename(ud.path) | 47 | ud.basename = os.path.basename(ud.path) |
48 | 48 | ||
49 | ud.localfile = d.expand(urllib.parse.unquote(ud.basename)) | 49 | ud.localfile = d.expand(urllib.parse.unquote(ud.basename)) |
50 | ud.basecmd = "gsutil stat" | ||
50 | 51 | ||
51 | def get_gcp_client(self): | 52 | def get_gcp_client(self): |
52 | from google.cloud import storage | 53 | from google.cloud import storage |
@@ -61,7 +62,8 @@ class GCP(FetchMethod): | |||
61 | if self.gcp_client is None: | 62 | if self.gcp_client is None: |
62 | self.get_gcp_client() | 63 | self.get_gcp_client() |
63 | 64 | ||
64 | bb.fetch2.check_network_access(d, "gsutil stat", ud.url) | 65 | bb.fetch2.check_network_access(d, ud.basecmd, f"gs://{ud.host}{ud.path}") |
66 | runfetchcmd("%s %s" % (ud.basecmd, f"gs://{ud.host}{ud.path}"), d) | ||
65 | 67 | ||
66 | # Path sometimes has leading slash, so strip it | 68 | # Path sometimes has leading slash, so strip it |
67 | path = ud.path.lstrip("/") | 69 | path = ud.path.lstrip("/") |
@@ -88,7 +90,8 @@ class GCP(FetchMethod): | |||
88 | if self.gcp_client is None: | 90 | if self.gcp_client is None: |
89 | self.get_gcp_client() | 91 | self.get_gcp_client() |
90 | 92 | ||
91 | bb.fetch2.check_network_access(d, "gsutil stat", ud.url) | 93 | bb.fetch2.check_network_access(d, ud.basecmd, f"gs://{ud.host}{ud.path}") |
94 | runfetchcmd("%s %s" % (ud.basecmd, f"gs://{ud.host}{ud.path}"), d) | ||
92 | 95 | ||
93 | # Path sometimes has leading slash, so strip it | 96 | # Path sometimes has leading slash, so strip it |
94 | path = ud.path.lstrip("/") | 97 | path = ud.path.lstrip("/") |