On Mon, Jul 31, 2023 at 12:15 PM Richard Purdie
<[email protected]> wrote:
>
> On Mon, 2023-07-31 at 11:34 +0200, Peter Suti wrote:
> > Fixes [YOCTO #15164]
> >
> > Instead of deleting setscene tasks, now SSTATE_SKIP_CREATION is set instead.
> >
> > This seems to fix the compile issues where the populate_sysroot task was
> > not run when an externalsrc recipe was built as a dependency.
> >
> > Signed-off-by: Peter Suti <[email protected]>
> > ---
> >  meta/classes/externalsrc.bbclass | 7 +++----
> >  1 file changed, 3 insertions(+), 4 deletions(-)
>
> I think this is going to swap one set of issues for another.
>
> Setting the skip creation option will stop sstate from being generated
> but it won't stop bitbake reusing existing sstate. In the case of
> externalsrc, we need to stop it using sstate at all so this patch won't
> always have the effect we need :(
>
> Cheers,
>
> Richard
>

Thank you for taking the time to think about this patch!

I see your point, but wouldn't inheriting EXTERNALSRC cause enough
changes that the hash of the old sstate would no longer match?

This should in my opinion ensure that sstate is never used because:
A) old sstate would not be reused because of not matching hash
B) sstate with matching hash would never be created.

Please correct me if I missed something and this logic is wrong.

>
> >
> > diff --git a/meta/classes/externalsrc.bbclass 
> > b/meta/classes/externalsrc.bbclass
> > index a649bcdff8..12f2718850 100644
> > --- a/meta/classes/externalsrc.bbclass
> > +++ b/meta/classes/externalsrc.bbclass
> > @@ -76,6 +76,8 @@ python () {
> >
> >          # Dummy value because the default function can't be called with 
> > blank SRC_URI
> >          d.setVar('SRCPV', '999')
> > +        # sstate is never going to work for external source trees, disable 
> > it
> > +        d.setVar('SSTATE_SKIP_CREATION', '1')
> >
> >          if d.getVar('CONFIGUREOPT_DEPTRACK') == 
> > '--disable-dependency-tracking':
> >              d.setVar('CONFIGUREOPT_DEPTRACK', '')
> > @@ -83,10 +85,7 @@ python () {
> >          tasks = filter(lambda k: d.getVarFlag(k, "task"), d.keys())
> >
> >          for task in tasks:
> > -            if task.endswith("_setscene"):
> > -                # sstate is never going to work for external source trees, 
> > disable it
> > -                bb.build.deltask(task, d)
> > -            elif os.path.realpath(d.getVar('S')) == 
> > os.path.realpath(d.getVar('B')):
> > +            if os.path.realpath(d.getVar('S')) == 
> > os.path.realpath(d.getVar('B')):
> >                  # Since configure will likely touch ${S}, ensure only we 
> > lock so one task has access at a time
> >                  d.appendVarFlag(task, "lockfiles", " ${S}/singletask.lock")
> >
> > 
> >
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#185133): 
https://lists.openembedded.org/g/openembedded-core/message/185133
Mute This Topic: https://lists.openembedded.org/mt/100458147/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to