diff options
author | Mark Hatle <mark.hatle@windriver.com> | 2012-07-27 20:26:38 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-08-02 17:05:05 +0100 |
commit | 9fb5c347503947c30d05c3a50d466cfb414db38d (patch) | |
tree | e6130bea64abb5b778961b70e6b5c7c932e2898b | |
parent | 2db74c67cb169a1ed28fa14e5f89a6e64b4fb7a4 (diff) | |
download | poky-9fb5c347503947c30d05c3a50d466cfb414db38d.tar.gz |
bitbake: fetch2/__init__.py: Add NoChecksumError exception
Without the new exception, when the system is configured to use premirrors,
but not allow network access (via BB_NO_NETWORK), when a recipe was lacking a
checksum the wrong error message(s) were being generated.
Instead of complaining about trying to perform network access, if the system
was able to find the item in the premirror, it should inform the user of the
lack of checksums, and the two SRC_URI fields they should use to update their
recipe.
(Bitbake rev: cb10e9c03a3f96d94e27e18330009616dde5e2b3)
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | bitbake/lib/bb/fetch2/__init__.py | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index fa963bed59..a7da899c22 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py | |||
@@ -70,6 +70,9 @@ class FetchError(BBFetchException): | |||
70 | class ChecksumError(FetchError): | 70 | class ChecksumError(FetchError): |
71 | """Exception when mismatched checksum encountered""" | 71 | """Exception when mismatched checksum encountered""" |
72 | 72 | ||
73 | class NoChecksumError(FetchError): | ||
74 | """Exception when no checksum is specified, but BB_STRICT_CHECKSUM is set""" | ||
75 | |||
73 | class UnpackError(BBFetchException): | 76 | class UnpackError(BBFetchException): |
74 | """General fetcher exception when something happens incorrectly when unpacking""" | 77 | """General fetcher exception when something happens incorrectly when unpacking""" |
75 | def __init__(self, message, url): | 78 | def __init__(self, message, url): |
@@ -314,7 +317,7 @@ def verify_checksum(u, ud, d): | |||
314 | # If strict checking enabled and neither sum defined, raise error | 317 | # If strict checking enabled and neither sum defined, raise error |
315 | strict = d.getVar("BB_STRICT_CHECKSUM", True) or None | 318 | strict = d.getVar("BB_STRICT_CHECKSUM", True) or None |
316 | if (strict and ud.md5_expected == None and ud.sha256_expected == None): | 319 | if (strict and ud.md5_expected == None and ud.sha256_expected == None): |
317 | raise FetchError('No checksum specified for %s, please add at least one to the recipe:\n' | 320 | raise NoChecksumError('No checksum specified for %s, please add at least one to the recipe:\n' |
318 | 'SRC_URI[%s] = "%s"\nSRC_URI[%s] = "%s"' % | 321 | 'SRC_URI[%s] = "%s"\nSRC_URI[%s] = "%s"' % |
319 | (ud.localpath, ud.md5_name, md5data, | 322 | (ud.localpath, ud.md5_name, md5data, |
320 | ud.sha256_name, sha256data), u) | 323 | ud.sha256_name, sha256data), u) |
@@ -568,6 +571,8 @@ def try_mirror_url(newuri, origud, ud, ld, check = False): | |||
568 | if isinstance(e, ChecksumError): | 571 | if isinstance(e, ChecksumError): |
569 | logger.warn("Mirror checksum failure for url %s (original url: %s)\nCleaning and trying again." % (newuri, origud.url)) | 572 | logger.warn("Mirror checksum failure for url %s (original url: %s)\nCleaning and trying again." % (newuri, origud.url)) |
570 | logger.warn(str(e)) | 573 | logger.warn(str(e)) |
574 | elif isinstance(e, NoChecksumError): | ||
575 | raise | ||
571 | else: | 576 | else: |
572 | logger.debug(1, "Mirror fetch failure for url %s (original url: %s)" % (newuri, origud.url)) | 577 | logger.debug(1, "Mirror fetch failure for url %s (original url: %s)" % (newuri, origud.url)) |
573 | logger.debug(1, str(e)) | 578 | logger.debug(1, str(e)) |
@@ -1179,6 +1184,8 @@ class Fetch(object): | |||
1179 | except BBFetchException as e: | 1184 | except BBFetchException as e: |
1180 | if isinstance(e, ChecksumError): | 1185 | if isinstance(e, ChecksumError): |
1181 | logger.warn("Checksum error encountered with download (will attempt other sources): %s" % str(e)) | 1186 | logger.warn("Checksum error encountered with download (will attempt other sources): %s" % str(e)) |
1187 | if isinstance(e, NoChecksumError): | ||
1188 | raise | ||
1182 | else: | 1189 | else: |
1183 | logger.warn('Failed to fetch URL %s, attempting MIRRORS if available' % u) | 1190 | logger.warn('Failed to fetch URL %s, attempting MIRRORS if available' % u) |
1184 | logger.debug(1, str(e)) | 1191 | logger.debug(1, str(e)) |
@@ -1196,6 +1203,11 @@ class Fetch(object): | |||
1196 | 1203 | ||
1197 | update_stamp(u, ud, self.d) | 1204 | update_stamp(u, ud, self.d) |
1198 | 1205 | ||
1206 | except BBFetchException as e: | ||
1207 | if isinstance(e, NoChecksumError): | ||
1208 | logger.error("%s" % str(e)) | ||
1209 | raise | ||
1210 | |||
1199 | finally: | 1211 | finally: |
1200 | bb.utils.unlockfile(lf) | 1212 | bb.utils.unlockfile(lf) |
1201 | 1213 | ||