diff options
author | Mark Hatle <mark.hatle@xilinx.com> | 2020-05-13 11:12:48 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-05-30 12:32:48 +0100 |
commit | 73f35492b7d8120429b9ff842105c03c5a0b11db (patch) | |
tree | 194f44384266d6f166cb32e527bdef5cc416668d | |
parent | 791c496bed8ad5f1681fcf211435f1bc18a525c6 (diff) | |
download | poky-73f35492b7d8120429b9ff842105c03c5a0b11db.tar.gz |
sstate.bbclass: When siginfo or sig files are missing, stop fetcher errors
Prior to fetching, the system checks if the sstate file is present
either locally or on the mirror. If it is, then it goes to the fetch
stage. Up to three files can be fetched, sstate, sstate.siginfo and
sstate.sig (if signature validation is enabled).
The previous pstaging_fetch function would iterate over these, and if
a download error occurred would spew forth a great amount of fetcher
failure messages as well as stop fetching the next item in the set.
This was resolved by adding a fetcher.checkstatus() call prior to
the download. If the file isn't present, then the exception will
be triggered, and no fetcher failure messages will reach the user.
The exception handler is then modified to be a pass so that it will
loop and pull the rest of the files that that are requested.
Additionally, a check for the existance of the .sig file was added
to the sstate_installpkg to avoid an error trying to load the .sig
if it wasn't downloaded.
(From OE-Core rev: a9085140434e2d26c0bb75bb53fcb7f7c19ef86d)
Signed-off-by: Mark Hatle <mark.hatle@xilinx.com>
Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/classes/sstate.bbclass | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index aa9c30b4e1..375196ef21 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass | |||
@@ -355,6 +355,9 @@ def sstate_installpkg(ss, d): | |||
355 | d.setVar('SSTATE_INSTDIR', sstateinst) | 355 | d.setVar('SSTATE_INSTDIR', sstateinst) |
356 | 356 | ||
357 | if bb.utils.to_boolean(d.getVar("SSTATE_VERIFY_SIG"), False): | 357 | if bb.utils.to_boolean(d.getVar("SSTATE_VERIFY_SIG"), False): |
358 | if not os.path.isfile(sstatepkg + '.sig'): | ||
359 | bb.warn("No signature file for sstate package %s, skipping acceleration..." % sstatepkg) | ||
360 | return False | ||
358 | signer = get_signer(d, 'local') | 361 | signer = get_signer(d, 'local') |
359 | if not signer.verify(sstatepkg + '.sig'): | 362 | if not signer.verify(sstatepkg + '.sig'): |
360 | bb.warn("Cannot verify signature on sstate package %s, skipping acceleration..." % sstatepkg) | 363 | bb.warn("Cannot verify signature on sstate package %s, skipping acceleration..." % sstatepkg) |
@@ -733,10 +736,11 @@ def pstaging_fetch(sstatefetch, d): | |||
733 | localdata.setVar('SRC_URI', srcuri) | 736 | localdata.setVar('SRC_URI', srcuri) |
734 | try: | 737 | try: |
735 | fetcher = bb.fetch2.Fetch([srcuri], localdata, cache=False) | 738 | fetcher = bb.fetch2.Fetch([srcuri], localdata, cache=False) |
739 | fetcher.checkstatus() | ||
736 | fetcher.download() | 740 | fetcher.download() |
737 | 741 | ||
738 | except bb.fetch2.BBFetchException: | 742 | except bb.fetch2.BBFetchException: |
739 | break | 743 | pass |
740 | 744 | ||
741 | def sstate_setscene(d): | 745 | def sstate_setscene(d): |
742 | shared_state = sstate_state_fromvars(d) | 746 | shared_state = sstate_state_fromvars(d) |