summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2016-03-24 16:11:56 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-03-26 07:34:58 +0000
commit84d5924012c58091a15459ea8101c9b78c996776 (patch)
treef0b4addcf27d034b993461b2cb452082865ddd5f /bitbake/lib
parentb036afb53783d8600e505ee5a480a8a9f89a0403 (diff)
downloadpoky-84d5924012c58091a15459ea8101c9b78c996776.tar.gz
bitbake: fetch2: Handle lockfiles for file:// urls redirected to mirrors
We recently dropped lockfiles for file:// urls which in itself makes sense. If a file url redirects to something like an http:// mirror, we'd have no lock taken for the original file and could race against others trying to download the file. We therefore need to ensure there is a lock taken in the mirror handling code. This adds code to take such a lock, assuming it isn't the same lock as the parent url. (Bitbake rev: 913b6ce22cd50eac96e8937c5ffc704bfce2c023) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r--bitbake/lib/bb/fetch2/__init__.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
index 5df642e373..e8cea7feb4 100644
--- a/bitbake/lib/bb/fetch2/__init__.py
+++ b/bitbake/lib/bb/fetch2/__init__.py
@@ -915,6 +915,10 @@ def rename_bad_checksum(ud, suffix):
915def try_mirror_url(fetch, origud, ud, ld, check = False): 915def try_mirror_url(fetch, origud, ud, ld, check = False):
916 # Return of None or a value means we're finished 916 # Return of None or a value means we're finished
917 # False means try another url 917 # False means try another url
918
919 if ud.lockfile and ud.lockfile != origud.lockfile:
920 lf = bb.utils.lockfile(ud.lockfile)
921
918 try: 922 try:
919 if check: 923 if check:
920 found = ud.method.checkstatus(fetch, ud, ld) 924 found = ud.method.checkstatus(fetch, ud, ld)
@@ -980,6 +984,10 @@ def try_mirror_url(fetch, origud, ud, ld, check = False):
980 except UnboundLocalError: 984 except UnboundLocalError:
981 pass 985 pass
982 return False 986 return False
987 finally:
988 if ud.lockfile and ud.lockfile != origud.lockfile:
989 bb.utils.unlockfile(lf)
990
983 991
984def try_mirrors(fetch, d, origud, mirrors, check = False): 992def try_mirrors(fetch, d, origud, mirrors, check = False):
985 """ 993 """