bitbake: Enhance the fetchers' support for local mirrors
Modify the try_mirrors() function to return the localpath of the fetched file and update the data dictionary to reflect this. Secondly the metadata files, lock and md5, should always be stored relative to the ${DL_DIR} as it is possible that the localpath is a read-only directory, for example in the scenario where there is a read-only file:// mirror. Signed-off-by: Joshua Lock <josh@linux.intel.com>
This commit is contained in:
parent
095347fc69
commit
b571168ac7
|
@ -188,14 +188,19 @@ def go(d, urls = None):
|
||||||
|
|
||||||
# First try fetching uri, u, from PREMIRRORS
|
# First try fetching uri, u, from PREMIRRORS
|
||||||
mirrors = [ i.split() for i in (bb.data.getVar('PREMIRRORS', d, 1) or "").split('\n') if i ]
|
mirrors = [ i.split() for i in (bb.data.getVar('PREMIRRORS', d, 1) or "").split('\n') if i ]
|
||||||
if not try_mirrors(d, u, mirrors):
|
localpath = try_mirrors(d, u, mirrors)
|
||||||
|
if not localpath:
|
||||||
# Next try fetching from the original uri, u
|
# Next try fetching from the original uri, u
|
||||||
try:
|
try:
|
||||||
m.go(u, ud, d)
|
m.go(u, ud, d)
|
||||||
|
localpath = ud.localpath
|
||||||
except:
|
except:
|
||||||
# Finally, try fetching uri, u, from MIRRORS
|
# Finally, try fetching uri, u, from MIRRORS
|
||||||
mirrors = [ i.split() for i in (bb.data.getVar('MIRRORS', d, 1) or "").split('\n') if i ]
|
mirrors = [ i.split() for i in (bb.data.getVar('MIRRORS', d, 1) or "").split('\n') if i ]
|
||||||
try_mirrors (d, u, mirrors)
|
localpath = try_mirrors (d, u, mirrors)
|
||||||
|
|
||||||
|
if localpath:
|
||||||
|
ud.localpath = localpath
|
||||||
|
|
||||||
if ud.localfile:
|
if ud.localfile:
|
||||||
if not m.forcefetch(u, ud, d):
|
if not m.forcefetch(u, ud, d):
|
||||||
|
@ -355,7 +360,7 @@ def try_mirrors(d, uri, mirrors):
|
||||||
fpath = os.path.join(data.getVar("DL_DIR", d, 1), os.path.basename(uri))
|
fpath = os.path.join(data.getVar("DL_DIR", d, 1), os.path.basename(uri))
|
||||||
if os.access(fpath, os.R_OK):
|
if os.access(fpath, os.R_OK):
|
||||||
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists, skipping checkout." % fpath)
|
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists, skipping checkout." % fpath)
|
||||||
return True
|
return fpath
|
||||||
|
|
||||||
ld = d.createCopy()
|
ld = d.createCopy()
|
||||||
for (find, replace) in mirrors:
|
for (find, replace) in mirrors:
|
||||||
|
@ -371,14 +376,14 @@ def try_mirrors(d, uri, mirrors):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ud.method.go(newuri, ud, ld)
|
ud.method.go(newuri, ud, ld)
|
||||||
return True
|
return ud.localpath
|
||||||
except (bb.fetch.MissingParameterError,
|
except (bb.fetch.MissingParameterError,
|
||||||
bb.fetch.FetchError,
|
bb.fetch.FetchError,
|
||||||
bb.fetch.MD5SumError):
|
bb.fetch.MD5SumError):
|
||||||
import sys
|
import sys
|
||||||
(type, value, traceback) = sys.exc_info()
|
(type, value, traceback) = sys.exc_info()
|
||||||
bb.msg.debug(2, bb.msg.domain.Fetcher, "Mirror fetch failure: %s" % value)
|
bb.msg.debug(2, bb.msg.domain.Fetcher, "Mirror fetch failure: %s" % value)
|
||||||
return False
|
return ""
|
||||||
|
|
||||||
|
|
||||||
class FetchData(object):
|
class FetchData(object):
|
||||||
|
@ -415,8 +420,11 @@ class FetchData(object):
|
||||||
# We have to clear data's internal caches since the cached value of SRCREV is now wrong.
|
# We have to clear data's internal caches since the cached value of SRCREV is now wrong.
|
||||||
# Horrible...
|
# Horrible...
|
||||||
bb.data.delVar("ISHOULDNEVEREXIST", d)
|
bb.data.delVar("ISHOULDNEVEREXIST", d)
|
||||||
self.md5 = self.localpath + '.md5'
|
|
||||||
self.lockfile = self.localpath + '.lock'
|
# Note: These files should always be in DL_DIR whereas localpath may not be.
|
||||||
|
basepath = bb.data.expand("${DL_DIR}/%s" % os.path.basename(self.localpath), d)
|
||||||
|
self.md5 = basepath + '.md5'
|
||||||
|
self.lockfile = basepath + '.lock'
|
||||||
|
|
||||||
|
|
||||||
class Fetch(object):
|
class Fetch(object):
|
||||||
|
|
Loading…
Reference in New Issue