[oe] PREFERRED_PROVIDER syntax is eluding me...

Richard Purdie rpurdie at rpsys.net
Tue May 29 20:46:32 UTC 2007


On Mon, 2007-05-28 at 13:17 -0700, Justin Patrin wrote:
> On 5/26/07, Mike (mwester) <mwester at dls.net> wrote:
> > I'm missing something simple, I expect.  But try as I might, I cannot figure
> > this out.
> >
> > Bitbake 1.8.3, building unslung-image (worked fine on 1.6): Bitbake says:
> > [snip]
> > NOTE: multiple providers are available for runtime libc6-unslung (glibc,
> > glibc-initial);
> > NOTE: consider defining a PREFERRED_PROVIDER entry to match runtime
> > libc6-unslung
> > [snip]
> >
> > This is a problem, because with bitbake 1.8, without a preferred provider
> > specified, it seems to try to build both.  But only glibc builds;
> > glibc-initial fails (and the build loops forever).   This is easily fixed by
> > adding the following line to the local.conf file:
> >
> > PREFERRED_PROVIDER_libc6-unslung = "glibc"
> >
> > Except that it doesn't do a blasted thing.  Neither does this line:
> >
> > PREFERRED_PROVIDERS += " libc6-unslung:glibc"
> >
> > Thinking that perhaps the "-unslung" was implied since the machine is
> > "unslung", I tried:
> >
> > PREFERRED_PROVIDERS += " libc6:glibc"
> >
> > Still no change.  Being persistent, I tried every variant of the above that
> > I could think of, to no avail.  It seems that bitbake is not understanding
> > or processing the info provided.  The -D flag offers no further hints,
> > either.
> >
> > For background, back in the glibc bitbake recipes, glibc-initial.bb does a
> > "require" of glibc.bb (hence the multiple providers).  Near the tail-end of
> > glibc.bb we find:
> >
> > PACKAGES_unslung = "libc6-unslung"
> > RDEPENDS_libc6-unslung = "nslu2-linksys-libs"
> > RPROVIDES_libc6-unslung = "libc6"
> > FILES_libc6-unslung = "/lib/librt*"
> >
> > Figuring that perhaps the problem is that nothing actually "PROVIDES" libc6,
> > and that maybe bitbake needs to see the build-time dependency in order to
> > handle the run-time dependency PREFERRED_PROVIDER stuff, I even added
> > PROVIDES_libc6-unslung = "libc6"
> > to the glibc.bb recipe, and went back through the list of
> > PREFERRED_PROVIDERS in the local.conf file.  No luck.  No difference.
> >
> > I finally hacked the glibc bitbake recipes so that glibc-initial doesn't
> > "RPROVIDE" libc6 anymore.  Success - bitbake is happy.  But I'm not.  That
> > doesn't seem like the correct way to resolve the multiple providers issue,
> > and I expect that commiting such a change would (rightfully) anger many
> > folks.
> >
> > If some kind soul could point me to the document or another recipe that
> > provides the correct syntax for handling this, or provide a pointer to
> > whatever it is that I'm missing, I'd be most grateful.
> >
> 
> So it's RPROVIDES and not PROVIDES? Sounds like the problem may be
> that PREFERRED_PROVIDERS is for non-R.... Is there an
> RPREFERRED_PROVIDERS perhaps?
> 
> It's been a while since you posted, sid you get this resolved in the
> meantime? Richard Purdie should have more insight into this.

Er, hmm, right. The providers code is still a bit of a mystery to me
too ;-)

What you didn't say is that you did:

PROVIDES_unslung = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc libc6-unslung"

so this file no longer provides glibc and therefore anything involving
glibc won't help. At a guess I'd try something like:

PREFERRED_PROVIDER_libc6-unslung = "libc6-unslung"

Of course I have to ask why you're doing this at all? It looks a bit
hatstand and I wonder why PREFERRED_VERSION_glibc = "2.2.5" wasn't
enough? ;-) (not that it shouldn't work)

Cheers,

Richard






More information about the Openembedded-devel mailing list