diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-05-15 19:49:36 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-05-20 09:24:23 +0100 |
commit | b0b9ee29a216d63387684dd6c3934b059849ab5b (patch) | |
tree | b2120b56b3619e0871931439398baa4bb6cc814e /bitbake | |
parent | 311c68bd06a5dc2df03f689f4061a8544716c930 (diff) | |
download | poky-b0b9ee29a216d63387684dd6c3934b059849ab5b.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.
(Bitbake rev: ef6d268f7b8527541a7fb044cf95a973be4097f4)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/fetch2/__init__.py | 22 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/git.py | 3 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/ssh.py | 3 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/wget.py | 3 |
4 files changed, 30 insertions, 1 deletions
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index f629c01cdb..98645956fb 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py | |||
@@ -271,10 +271,13 @@ def verify_checksum(u, ud, d): | |||
271 | matched | 271 | matched |
272 | """ | 272 | """ |
273 | 273 | ||
274 | if not ud.method.supports_checksum(ud): | ||
275 | return | ||
276 | |||
274 | md5data = bb.utils.md5_file(ud.localpath) | 277 | md5data = bb.utils.md5_file(ud.localpath) |
275 | sha256data = bb.utils.sha256_file(ud.localpath) | 278 | sha256data = bb.utils.sha256_file(ud.localpath) |
276 | 279 | ||
277 | if ud.type in ["http", "https", "ftp", "ftps"]: | 280 | if ud.method.recommends_checksum(ud): |
278 | # If strict checking enabled and neither sum defined, raise error | 281 | # If strict checking enabled and neither sum defined, raise error |
279 | strict = d.getVar("BB_STRICT_CHECKSUM", True) or None | 282 | strict = d.getVar("BB_STRICT_CHECKSUM", True) or None |
280 | if (strict and ud.md5_expected == None and ud.sha256_expected == None): | 283 | if (strict and ud.md5_expected == None and ud.sha256_expected == None): |
@@ -578,10 +581,14 @@ class FetchData(object): | |||
578 | self.sha256_name = "sha256sum" | 581 | self.sha256_name = "sha256sum" |
579 | if self.md5_name in self.parm: | 582 | if self.md5_name in self.parm: |
580 | self.md5_expected = self.parm[self.md5_name] | 583 | self.md5_expected = self.parm[self.md5_name] |
584 | elif self.type not in ["http", "https", "ftp", "ftps"]: | ||
585 | self.md5_expected = None | ||
581 | else: | 586 | else: |
582 | self.md5_expected = d.getVarFlag("SRC_URI", self.md5_name) | 587 | self.md5_expected = d.getVarFlag("SRC_URI", self.md5_name) |
583 | if self.sha256_name in self.parm: | 588 | if self.sha256_name in self.parm: |
584 | self.sha256_expected = self.parm[self.sha256_name] | 589 | self.sha256_expected = self.parm[self.sha256_name] |
590 | elif self.type not in ["http", "https", "ftp", "ftps"]: | ||
591 | self.sha256_expected = None | ||
585 | else: | 592 | else: |
586 | self.sha256_expected = d.getVarFlag("SRC_URI", self.sha256_name) | 593 | self.sha256_expected = d.getVarFlag("SRC_URI", self.sha256_name) |
587 | 594 | ||
@@ -660,6 +667,19 @@ class FetchMethod(object): | |||
660 | """ | 667 | """ |
661 | return os.path.join(data.getVar("DL_DIR", d, True), urldata.localfile) | 668 | return os.path.join(data.getVar("DL_DIR", d, True), urldata.localfile) |
662 | 669 | ||
670 | def supports_checksum(self, urldata): | ||
671 | """ | ||
672 | Is localpath something that can be represented by a checksum? | ||
673 | """ | ||
674 | return True | ||
675 | |||
676 | def recommends_checksum(self, urldata): | ||
677 | """ | ||
678 | Is the backend on where checksumming is recommended (should warnings | ||
679 | by displayed if there is no checksum)? | ||
680 | """ | ||
681 | return False | ||
682 | |||
663 | def _strip_leading_slashes(self, relpath): | 683 | def _strip_leading_slashes(self, relpath): |
664 | """ | 684 | """ |
665 | Remove leading slash as os.path.join can't cope | 685 | Remove leading slash as os.path.join can't cope |
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py index 962cc0a484..ecc5e0ded8 100644 --- a/bitbake/lib/bb/fetch2/git.py +++ b/bitbake/lib/bb/fetch2/git.py | |||
@@ -82,6 +82,9 @@ class Git(FetchMethod): | |||
82 | """ | 82 | """ |
83 | return ud.type in ['git'] | 83 | return ud.type in ['git'] |
84 | 84 | ||
85 | def supports_checksum(self, urldata): | ||
86 | return False | ||
87 | |||
85 | def urldata_init(self, ud, d): | 88 | def urldata_init(self, ud, d): |
86 | """ | 89 | """ |
87 | init git specific variable within url data | 90 | init git specific variable within url data |
diff --git a/bitbake/lib/bb/fetch2/ssh.py b/bitbake/lib/bb/fetch2/ssh.py index 91ac15faae..8d6434a7eb 100644 --- a/bitbake/lib/bb/fetch2/ssh.py +++ b/bitbake/lib/bb/fetch2/ssh.py | |||
@@ -69,6 +69,9 @@ class SSH(FetchMethod): | |||
69 | def supports(self, url, urldata, d): | 69 | def supports(self, url, urldata, d): |
70 | return __pattern__.match(url) != None | 70 | return __pattern__.match(url) != None |
71 | 71 | ||
72 | def supports_checksum(self, urldata): | ||
73 | return False | ||
74 | |||
72 | def localpath(self, url, urldata, d): | 75 | def localpath(self, url, urldata, d): |
73 | m = __pattern__.match(urldata.url) | 76 | m = __pattern__.match(urldata.url) |
74 | path = m.group('path') | 77 | path = m.group('path') |
diff --git a/bitbake/lib/bb/fetch2/wget.py b/bitbake/lib/bb/fetch2/wget.py index 98900ac42c..e223b21b96 100644 --- a/bitbake/lib/bb/fetch2/wget.py +++ b/bitbake/lib/bb/fetch2/wget.py | |||
@@ -45,6 +45,9 @@ class Wget(FetchMethod): | |||
45 | """ | 45 | """ |
46 | return ud.type in ['http', 'https', 'ftp'] | 46 | return ud.type in ['http', 'https', 'ftp'] |
47 | 47 | ||
48 | def recommends_checksum(self, urldata): | ||
49 | return True | ||
50 | |||
48 | def urldata_init(self, ud, d): | 51 | def urldata_init(self, ud, d): |
49 | 52 | ||
50 | ud.basename = os.path.basename(ud.path) | 53 | ud.basename = os.path.basename(ud.path) |