On Thu, Dec 16, 2021 at 9:09 AM Matt Madison via
lists.openembedded.org <[email protected]>
wrote:
>
> On Thu, Dec 16, 2021 at 7:53 AM Matt Madison via
> lists.openembedded.org <[email protected]>
> wrote:
> >
> > On Thu, Dec 16, 2021 at 6:47 AM Joshua Watt <[email protected]> wrote:
> > >
> > > On Wed, Dec 15, 2021 at 8:16 AM Matt Madison <[email protected]> wrote:
> > > >
> > > > I'm finding that none of the Rust recipes are getting setscened in my 
> > > > builds off
> > > > master due to the the SRCPV hack that was added to make the cargo 
> > > > fetcher
> > > > visible during parsing. There's no error reported about it, but by 
> > > > adding an
> > > > exception handler into the sstate code I tracked it down to 
> > > > pstaging_fetch()'s
> > > > using d.getVar('SRCPV').  Since the cargo fetcher doesn't advertise
> > > > srcrev support,
> > > > the base fetcher class raises an exception on this, causing the
> > > > mostly-silent failure.
> > >
> > > Hmm, this is strange. I have this recipe:
> > > https://github.com/JPEWdev/meta-phosh/blob/master/recipes-graphics/squeekboard/squeekboard_git.bb
> > > that is using the cargo fetcher and it is definitely using sstate like
> > > I would expect; perhaps there is some other strange interaction with
> > > another class?
> >
> > I'm just talking about the rust toolchain, libstd-rs, cargo, etc.
> > It's simple enough for me to reproduce with a bare-bones setup:
> >
> > 1. clone openembedded-core and bitbake
> > 2. init build environment
> > 3. set MACHINE="qemuarm64" in local.conf
> > 4. bitbake librsvg
> > 5. Copy sstate-cache contents to a web server
> > 6. Wipe build workspace, re-init, and set SSTATE_MIRRORS to point to
> > the web server
> > 7. bitbake --setscene-only librsvg
> >
> > I've attached the cooker log of a sample build.  You'll see from the
> > sstate summary that everything was found, but there will be warnings
> > when executing the setscenes.
>
> And if I apply the following patch:
> diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
> index 0326d27c74..ffc3b08b7d 100644
> --- a/meta/classes/sstate.bbclass
> +++ b/meta/classes/sstate.bbclass
> @@ -761,7 +761,12 @@ def pstaging_fetch(sstatefetch, d):
>      localdata.setVar('FILESPATH', dldir)
>      localdata.setVar('DL_DIR', dldir)
>      localdata.setVar('PREMIRRORS', mirrors)
> -    localdata.setVar('SRCPV', d.getVar('SRCPV'))
> +    try:
> +        curpv = d.getVar('SRCPV')
> +    except Exception as e:
> +        bb.warn("Failed to get SRCPV: %s" % e)
> +        curpv = ''
> +    localdata.setVar('SRCPV', curpv)
>
> the setscenes work, and the warning is:
>
> WARNING: libstd-rs-1.57.0-r0 do_packagedata_setscene: Failed to get
> SRCPV: Failure expanding variable SRCPV, expression was
> ${@crate_get_srcrev(d)} which triggered exception FetchError: Fetcher
> failure: SRCREV was used yet no valid SCM was found in SRC_URI
> The variable dependency chain for the failure is: SRCPV
>
> I'm just not sure whether that's the right place to fix this.

I think I've figured out a clean way to solve the problem, and have
sent patches for review.

-M

>
> -M
>
>
> >
> > -Matt
> >
> > >
> > > >
> > > > There's no issue if the sstate package is already in the local cache;
> > > > it only affects
> > > > builds where I need to fetch from my sstate mirror.
> > > >
> > > > I'd submit a patch, but I'm not sure what the right solution would be.
> > > >
> > > > Regards,
> > > > -Matt
> > > >
> > > >
> > > >
> >
> >
> >
>
> 
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#159833): 
https://lists.openembedded.org/g/openembedded-core/message/159833
Mute This Topic: https://lists.openembedded.org/mt/87744591/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to