bitbake: fetch2: Ensure we don't have file downloads overwriting each other

Imagine you have an sstate mirror accessed over http and an SSTATE_MIRRORS
which maps file:// urls to http:// urls.

File urls set donestampneeded = False, http urls don't. This can result in
races in the try_mirror_url() code since it will trigger new downloads after
aquiring the lockfile as verify_donestamp() doesn't look at origud and there
is no donestamp.

verify_donestamp() already has code to look at origud, we're just missing
some code at the start of the function to do this. Fix it to avoid
these races.

(Bitbake rev: b8b14d975a254444461ba857fc6fb8c725de8874)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2017-03-28 12:23:58 +01:00
parent 415b72ffcb
commit bb826208e5
1 changed files with 1 additions and 1 deletions

View File

@ -625,7 +625,7 @@ def verify_donestamp(ud, d, origud=None):
Returns True, if the donestamp exists and is valid, False otherwise. When Returns True, if the donestamp exists and is valid, False otherwise. When
returning False, any existing done stamps are removed. returning False, any existing done stamps are removed.
""" """
if not ud.needdonestamp: if not ud.needdonestamp or (origud and not origud.needdonestamp):
return True return True
if not os.path.exists(ud.donestamp): if not os.path.exists(ud.donestamp):