[OE-core] RPROVIDES not package specific with native and added package

Mats Kärrman Mats.Karrman at tritech.se
Tue Nov 19 09:17:50 UTC 2013


Hi Phil,

On Monday, November 18, 2013 7:28 PM, Phil Blundell wrote:
> On Mon, 2013-11-18 at 13:28 +0000, Mats Kärrman wrote:
> > On Monday, November 18, 2013 2:15 PM, Phil Blundell wrote:
> > >> Subject: Re: [OE-core] RPROVIDES not package specific with native and added package
> > >>
> > >> Oh, right, I see.  Does it help if you use "PACKAGES =+ .." rather than
> > >> "PACKAGES_prepend = "?
> >
> > Yes it does!!
> >
> > Could you tell me why?
> > Er... better could you tell me where's the best place to read so I don't have to make these mistakes again?
> 
> The code in insane.bbclass will give you a diagnostic if ${RPROVIDES} is
> set and PACKAGES isn't blank.  (The actual check that it uses for
> PACKAGES is slightly obscure and involves split(), but the net effect
> seems to be that it's testing for the variable being set to something
> other than "".)
> 
> native.bbclass sets PACKAGES="" and RPROVIDES="${PN}".  This violates
> insane.bbclass's usual idea of what RPROVIDES should be, but since
> PACKAGES is blank the check is inhibited and you don't get an error.
>
> However, your recipe is defeating this by prepending to PACKAGES and
> causing it to end up not blank.  This turns the insane.bbclass check
> back on and the error reappears.
> 
> p.

Thanks a lot for the explanation, it explains how the warnings came to be but
it's still a bit unclear to me why "=+" works while "_prepend" doesn't.
My guess is it's a question about order of evaluation; inherit native.bbclass takes
precedence over recipe assignment to PACKAGES, but PACKAGES_prepend is
another variable and that is prepended to PACKAGES later, but still before
insane.bbclass gets to do it's work, right?

Something that adds to the confusion is that it's not clear where in the chain
the "-e" option gets its output. Would it be possible to draw some kind of picture
that shows the basic steps of processing or is it all too complicated?

Are there any good sources of documentation apart from the Yocto project
documents and http://docs.openembedded.org or is it only the source code
itself that goes further in detail?

BR // Mats



More information about the Openembedded-core mailing list