summaryrefslogtreecommitdiffstats
path: root/lib/bb/fetch2
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-05-15 19:49:36 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-05-20 07:51:18 +0100
commitef6d268f7b8527541a7fb044cf95a973be4097f4 (patch)
treeea0c81c6d66df9f4c9dd2e4ba3ba6d6f31f08c86 /lib/bb/fetch2
parent80411b3acf2173a4a7d415102d16676eb98363e3 (diff)
downloadbitbake-ef6d268f7b8527541a7fb044cf95a973be4097f4.tar.gz
bitbake/fetch: Spell out which fetcher backends support and recommend checksums
There were some hardcoded behaviours in the system for which backends support checksums verses which backends recommend them verses which don't recommend them. This moves the functionality into specific fetchers and then makes the general code generic. This cleans up the codebase and fixes some corner cases such as trying to checksum directories returned by the git fetcher. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/fetch2')
-rw-r--r--lib/bb/fetch2/__init__.py22
-rw-r--r--lib/bb/fetch2/git.py3
-rw-r--r--lib/bb/fetch2/ssh.py3
-rw-r--r--lib/bb/fetch2/wget.py3
4 files changed, 30 insertions, 1 deletions
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index f629c01cd..98645956f 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -271,10 +271,13 @@ def verify_checksum(u, ud, d):
matched
"""
+ if not ud.method.supports_checksum(ud):
+ return
+
md5data = bb.utils.md5_file(ud.localpath)
sha256data = bb.utils.sha256_file(ud.localpath)
- if ud.type in ["http", "https", "ftp", "ftps"]:
+ if ud.method.recommends_checksum(ud):
# If strict checking enabled and neither sum defined, raise error
strict = d.getVar("BB_STRICT_CHECKSUM", True) or None
if (strict and ud.md5_expected == None and ud.sha256_expected == None):
@@ -578,10 +581,14 @@ class FetchData(object):
self.sha256_name = "sha256sum"
if self.md5_name in self.parm:
self.md5_expected = self.parm[self.md5_name]
+ elif self.type not in ["http", "https", "ftp", "ftps"]:
+ self.md5_expected = None
else:
self.md5_expected = d.getVarFlag("SRC_URI", self.md5_name)
if self.sha256_name in self.parm:
self.sha256_expected = self.parm[self.sha256_name]
+ elif self.type not in ["http", "https", "ftp", "ftps"]:
+ self.sha256_expected = None
else:
self.sha256_expected = d.getVarFlag("SRC_URI", self.sha256_name)
@@ -660,6 +667,19 @@ class FetchMethod(object):
"""
return os.path.join(data.getVar("DL_DIR", d, True), urldata.localfile)
+ def supports_checksum(self, urldata):
+ """
+ Is localpath something that can be represented by a checksum?
+ """
+ return True
+
+ def recommends_checksum(self, urldata):
+ """
+ Is the backend on where checksumming is recommended (should warnings
+ by displayed if there is no checksum)?
+ """
+ return False
+
def _strip_leading_slashes(self, relpath):
"""
Remove leading slash as os.path.join can't cope
diff --git a/lib/bb/fetch2/git.py b/lib/bb/fetch2/git.py
index 962cc0a48..ecc5e0ded 100644
--- a/lib/bb/fetch2/git.py
+++ b/lib/bb/fetch2/git.py
@@ -82,6 +82,9 @@ class Git(FetchMethod):
"""
return ud.type in ['git']
+ def supports_checksum(self, urldata):
+ return False
+
def urldata_init(self, ud, d):
"""
init git specific variable within url data
diff --git a/lib/bb/fetch2/ssh.py b/lib/bb/fetch2/ssh.py
index 91ac15faa..8d6434a7e 100644
--- a/lib/bb/fetch2/ssh.py
+++ b/lib/bb/fetch2/ssh.py
@@ -69,6 +69,9 @@ class SSH(FetchMethod):
def supports(self, url, urldata, d):
return __pattern__.match(url) != None
+ def supports_checksum(self, urldata):
+ return False
+
def localpath(self, url, urldata, d):
m = __pattern__.match(urldata.url)
path = m.group('path')
diff --git a/lib/bb/fetch2/wget.py b/lib/bb/fetch2/wget.py
index 98900ac42..e223b21b9 100644
--- a/lib/bb/fetch2/wget.py
+++ b/lib/bb/fetch2/wget.py
@@ -45,6 +45,9 @@ class Wget(FetchMethod):
"""
return ud.type in ['http', 'https', 'ftp']
+ def recommends_checksum(self, urldata):
+ return True
+
def urldata_init(self, ud, d):
ud.basename = os.path.basename(ud.path)