diff options
| -rw-r--r-- | bitbake/lib/bb/fetch2/__init__.py | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index e8cea7feb4..dc074d5340 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py | |||
| @@ -677,7 +677,8 @@ def verify_donestamp(ud, d, origud=None): | |||
| 677 | # incorrect stamp file. | 677 | # incorrect stamp file. |
| 678 | logger.warn("Checksum mismatch for local file %s\n" | 678 | logger.warn("Checksum mismatch for local file %s\n" |
| 679 | "Cleaning and trying again." % ud.localpath) | 679 | "Cleaning and trying again." % ud.localpath) |
| 680 | rename_bad_checksum(ud, e.checksum) | 680 | if os.path.exists(ud.localpath): |
| 681 | rename_bad_checksum(ud, e.checksum) | ||
| 681 | bb.utils.remove(ud.donestamp) | 682 | bb.utils.remove(ud.donestamp) |
| 682 | return False | 683 | return False |
| 683 | 684 | ||
| @@ -698,11 +699,21 @@ def update_stamp(ud, d): | |||
| 698 | # Errors aren't fatal here | 699 | # Errors aren't fatal here |
| 699 | pass | 700 | pass |
| 700 | else: | 701 | else: |
| 701 | checksums = verify_checksum(ud, d) | 702 | try: |
| 702 | # Store the checksums for later re-verification against the recipe | 703 | checksums = verify_checksum(ud, d) |
| 703 | with open(ud.donestamp, "wb") as cachefile: | 704 | # Store the checksums for later re-verification against the recipe |
| 704 | p = pickle.Pickler(cachefile, pickle.HIGHEST_PROTOCOL) | 705 | with open(ud.donestamp, "wb") as cachefile: |
| 705 | p.dump(checksums) | 706 | p = pickle.Pickler(cachefile, pickle.HIGHEST_PROTOCOL) |
| 707 | p.dump(checksums) | ||
| 708 | except ChecksumError as e: | ||
| 709 | # Checksums failed to verify, trigger re-download and remove the | ||
| 710 | # incorrect stamp file. | ||
| 711 | logger.warn("Checksum mismatch for local file %s\n" | ||
| 712 | "Cleaning and trying again." % ud.localpath) | ||
| 713 | if os.path.exists(ud.localpath): | ||
| 714 | rename_bad_checksum(ud, e.checksum) | ||
| 715 | bb.utils.remove(ud.donestamp) | ||
| 716 | raise | ||
| 706 | 717 | ||
| 707 | def subprocess_setup(): | 718 | def subprocess_setup(): |
| 708 | # Python installs a SIGPIPE handler by default. This is usually not what | 719 | # Python installs a SIGPIPE handler by default. This is usually not what |
| @@ -973,7 +984,8 @@ def try_mirror_url(fetch, origud, ud, ld, check = False): | |||
| 973 | if isinstance(e, ChecksumError): | 984 | if isinstance(e, ChecksumError): |
| 974 | logger.warn("Mirror checksum failure for url %s (original url: %s)\nCleaning and trying again." % (ud.url, origud.url)) | 985 | logger.warn("Mirror checksum failure for url %s (original url: %s)\nCleaning and trying again." % (ud.url, origud.url)) |
| 975 | logger.warn(str(e)) | 986 | logger.warn(str(e)) |
| 976 | rename_bad_checksum(ud, e.checksum) | 987 | if os.path.exists(ud.localpath): |
| 988 | rename_bad_checksum(ud, e.checksum) | ||
| 977 | elif isinstance(e, NoChecksumError): | 989 | elif isinstance(e, NoChecksumError): |
| 978 | raise | 990 | raise |
| 979 | else: | 991 | else: |
| @@ -1583,7 +1595,8 @@ class Fetch(object): | |||
| 1583 | if isinstance(e, ChecksumError): | 1595 | if isinstance(e, ChecksumError): |
| 1584 | logger.warn("Checksum failure encountered with download of %s - will attempt other sources if available" % u) | 1596 | logger.warn("Checksum failure encountered with download of %s - will attempt other sources if available" % u) |
| 1585 | logger.debug(1, str(e)) | 1597 | logger.debug(1, str(e)) |
| 1586 | rename_bad_checksum(ud, e.checksum) | 1598 | if os.path.exists(ud.localpath): |
| 1599 | rename_bad_checksum(ud, e.checksum) | ||
| 1587 | elif isinstance(e, NoChecksumError): | 1600 | elif isinstance(e, NoChecksumError): |
| 1588 | raise | 1601 | raise |
| 1589 | else: | 1602 | else: |
