All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [OE-core] [PATCH v2] sstate.bbclass: When siginfo or sig files are missing, stop fetcher errors
       [not found] <160EA27C0123740E.25148@lists.openembedded.org>
@ 2020-05-27 19:11 ` Mark Hatle
  2020-06-02  9:44   ` Paul Barker
  0 siblings, 1 reply; 2+ messages in thread
From: Mark Hatle @ 2020-05-27 19:11 UTC (permalink / raw)
  To: openembedded-core

Ping

I noticed this hasn't been integrated or commented on yet.

On 5/13/20 11:12 AM, Mark Hatle wrote:
> From: Mark Hatle <mark.hatle@xilinx.com>
> 
> 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.
> 
> Signed-off-by: Mark Hatle <mark.hatle@xilinx.com>
> Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
> ---
> 
> v2 - fix a typo in the error message about signature not being
>      present.
> 
>  meta/classes/sstate.bbclass | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> 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):
>      d.setVar('SSTATE_INSTDIR', sstateinst)
>  
>      if bb.utils.to_boolean(d.getVar("SSTATE_VERIFY_SIG"), False):
> +        if not os.path.isfile(sstatepkg + '.sig'):
> +            bb.warn("No signature file for sstate package %s, skipping acceleration..." % sstatepkg)
> +            return False
>          signer = get_signer(d, 'local')
>          if not signer.verify(sstatepkg + '.sig'):
>              bb.warn("Cannot verify signature on sstate package %s, skipping acceleration..." % sstatepkg)
> @@ -733,10 +736,11 @@ def pstaging_fetch(sstatefetch, d):
>          localdata.setVar('SRC_URI', srcuri)
>          try:
>              fetcher = bb.fetch2.Fetch([srcuri], localdata, cache=False)
> +            fetcher.checkstatus()
>              fetcher.download()
>  
>          except bb.fetch2.BBFetchException:
> -            break
> +            pass
>  
>  def sstate_setscene(d):
>      shared_state = sstate_state_fromvars(d)
> 
> 
> 
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [OE-core] [PATCH v2] sstate.bbclass: When siginfo or sig files are missing, stop fetcher errors
  2020-05-27 19:11 ` [OE-core] [PATCH v2] sstate.bbclass: When siginfo or sig files are missing, stop fetcher errors Mark Hatle
@ 2020-06-02  9:44   ` Paul Barker
  0 siblings, 0 replies; 2+ messages in thread
From: Paul Barker @ 2020-06-02  9:44 UTC (permalink / raw)
  To: Mark Hatle; +Cc: openembedded-core

On Wed, 27 May 2020 at 20:11, Mark Hatle <mark.hatle@kernel.crashing.org> wrote:
>
> Ping
>
> I noticed this hasn't been integrated or commented on yet.
>
> On 5/13/20 11:12 AM, Mark Hatle wrote:
> > From: Mark Hatle <mark.hatle@xilinx.com>
> >
> > 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.
> >
> > Signed-off-by: Mark Hatle <mark.hatle@xilinx.com>
> > Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
> > ---
> >
> > v2 - fix a typo in the error message about signature not being
> >      present.
> >
> >  meta/classes/sstate.bbclass | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > 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):
> >      d.setVar('SSTATE_INSTDIR', sstateinst)
> >
> >      if bb.utils.to_boolean(d.getVar("SSTATE_VERIFY_SIG"), False):
> > +        if not os.path.isfile(sstatepkg + '.sig'):
> > +            bb.warn("No signature file for sstate package %s, skipping acceleration..." % sstatepkg)
> > +            return False
> >          signer = get_signer(d, 'local')
> >          if not signer.verify(sstatepkg + '.sig'):
> >              bb.warn("Cannot verify signature on sstate package %s, skipping acceleration..." % sstatepkg)
> > @@ -733,10 +736,11 @@ def pstaging_fetch(sstatefetch, d):
> >          localdata.setVar('SRC_URI', srcuri)
> >          try:
> >              fetcher = bb.fetch2.Fetch([srcuri], localdata, cache=False)
> > +            fetcher.checkstatus()
> >              fetcher.download()
> >
> >          except bb.fetch2.BBFetchException:
> > -            break
> > +            pass
> >
> >  def sstate_setscene(d):
> >      shared_state = sstate_state_fromvars(d)
> >
> >
> >
> >

I see this has now been committed to master.

I've previously discussed issues with the separation between
time-of-check and time-of-use for sstate artifacts (see
https://lists.yoctoproject.org/g/yocto/topic/71426351 for the thread).

If checkstatus() succeeded in sstate_checkhashes() then the sstate
artifact was marked as available. If the download then failed in
sstate_setscene(), bitbake would fall back to running the real task
instead of using sstate, however the build would be marked as a
failure with bitbake returning non-zero even if the targets were
successfully built.

Should this patch fix that issue? I'm not 100% clear on whether this
is the same issue or if your patch is just addressing the case where
one of the files is present but the others aren't.

Thanks,

-- 
Paul Barker
Konsulko Group

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-06-02  9:44 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <160EA27C0123740E.25148@lists.openembedded.org>
2020-05-27 19:11 ` [OE-core] [PATCH v2] sstate.bbclass: When siginfo or sig files are missing, stop fetcher errors Mark Hatle
2020-06-02  9:44   ` Paul Barker

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.