[bitbake-devel] [PATCH] fetch2: Ensure cached url data is matched to a datastore
Mark Hatle
mark.hatle at kernel.crashing.org
Tue Nov 5 14:18:06 UTC 2019
Just an FYI -- I did test this against the problem we found last week with
devtool modify linux-yocto (and virtual/kernel). It DID resolved the problem.
--Mark
On 11/2/19 1:05 PM, Richard Purdie wrote:
> There was a weird error in OE-Core where "devtool modify virtual/kernel"
> was showing basehash mismatch errors. This was due to SRCPV sometimes being:
> AUTOINC+b867b78b50_47b80ef7bd and sometimes AUTOINC+b867b78b50_255a750d28.
>
> The latter hash comes from KBRANCH and meant sometimes the correct branch
> was seen, sometimes it was not. The issue was complicated by the execution
> using a remote datastore over tinfoil.
>
> The problem turns out to be a fetcher caching error. If the datastore
> changes, the cached url data may not be valid.
>
> We therefore ensure we match cached url data against the datastore that
> generated it, which appears to fix this issue.
>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> ---
> lib/bb/fetch2/__init__.py | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
> index 1f5f8f1f14..07de6c2693 100644
> --- a/lib/bb/fetch2/__init__.py
> +++ b/lib/bb/fetch2/__init__.py
> @@ -1593,7 +1593,7 @@ class Fetch(object):
> fn = d.getVar('FILE')
> mc = d.getVar('__BBMULTICONFIG') or ""
> if cache and fn and mc + fn in urldata_cache:
> - self.ud = urldata_cache[mc + fn]
> + self.ud = urldata_cache[mc + fn + str(id(d))]
>
> for url in urls:
> if url not in self.ud:
> @@ -1605,7 +1605,7 @@ class Fetch(object):
> pass
>
> if fn and cache:
> - urldata_cache[mc + fn] = self.ud
> + urldata_cache[mc + fn + str(id(d))] = self.ud
>
> def localpath(self, url):
> if url not in self.urls:
>
More information about the bitbake-devel
mailing list