@@ -1312,6 +1312,7 @@ class FetchData(object):
if not self.pswd and "pswd" in self.parm:
self.pswd = self.parm["pswd"]
self.setup = False
+ self.implicit_urls = None
def configure_checksum(checksum_id):
checksum_plain_name = "%ssum" % checksum_id
@@ -1409,6 +1410,11 @@ class FetchData(object):
return d.getVar("SRCDATE") or d.getVar("DATE")
+ def setup_implicit_urls(self, d):
+ if self.implicit_urls is None:
+ self.setup_localpath(d)
+ self.implicit_urls = self.method.implicit_urls(self, d)
+
class FetchMethod(object):
"""Base class for 'fetch'ing data"""
@@ -1727,6 +1733,9 @@ class FetchMethod(object):
"""
return []
+ def implicit_urls(self, ud, d):
+ return []
+
class DummyUnpackTracer(object):
"""
@@ -1843,6 +1852,9 @@ class Fetch(object):
ud = self._get_urldata(url)
ud.setup_localpath(self.d)
local.append(ud.localpath)
+ ud.setup_implicit_urls(self.d)
+ for u in ud.implicit_urls:
+ localpath(u)
for url in self.urls:
localpath(url)
@@ -1960,6 +1972,16 @@ class Fetch(object):
for url in urls:
download(url)
+ def download_implicit(url):
+ ud = self._get_urldata(url)
+ ud.setup_implicit_urls(self.d)
+ for u in ud.implicit_urls:
+ download(u)
+ download_implicit(u)
+
+ for url in urls:
+ download_implicit(url)
+
if checksum_missing_messages:
logger.error("Missing SRC_URI checksum, please add those to the recipe: \n%s", "\n".join(checksum_missing_messages))
raise BBFetchException("There was some missing checksums in the recipe")
@@ -2022,6 +2044,12 @@ class Fetch(object):
if ud.lockfile:
bb.utils.unlockfile(lf)
+ ud.setup_implicit_urls(self.d)
+ for u in ud.implicit_urls:
+ unpack(u)
+ if hasattr(ud.method, "postunpack"):
+ ud.method.postunpack(ud, root, self.d)
+
for url in urls:
unpack(url)
@@ -2038,6 +2066,10 @@ class Fetch(object):
def clean(url):
ud = self._get_urldata(url)
ud.setup_localpath(self.d)
+ if os.path.exists(ud.localpath):
+ ud.setup_implicit_urls(self.d)
+ for u in ud.implicit_urls:
+ clean(u)
if not ud.localfile and ud.localpath is None:
return
@@ -2070,6 +2102,9 @@ class Fetch(object):
ud = self._get_urldata(url)
urldata.append(ud)
urldata += ud.method.implicit_urldata(ud, self.d)
+ ud.setup_implicit_urls(self.d)
+ for u in ud.implicit_urls:
+ expand_urldata(u)
for url in urls:
expand_urldata(url)