[OE-core] [PATCH 03/22] update-alternatives.bbclass: Add missing runtime dependency

Mark Hatle mark.hatle at windriver.com
Wed Dec 5 01:47:20 UTC 2012


On 12/4/12 2:46 PM, Richard Purdie wrote:
> On Tue, 2012-12-04 at 11:34 -0600, Mark Hatle wrote:
>> On 12/4/12 11:04 AM, Martin Jansa wrote:
>>> On Tue, Dec 04, 2012 at 11:14:35AM -0600, Mark Hatle wrote:
>>>> When using update-alternatives, there should be a runtime dependency on
>>>> update-alternatives.  Without this, it's possible to get into a situation
>>>> where the package is not installable.
>>>>
>>>> Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
>>>> ---
>>>>    meta/classes/update-alternatives.bbclass |    6 ++++++
>>>>    1 files changed, 6 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/meta/classes/update-alternatives.bbclass b/meta/classes/update-alternatives.bbclass
>>>> index 4e1ff27..e432506 100644
>>>> --- a/meta/classes/update-alternatives.bbclass
>>>> +++ b/meta/classes/update-alternatives.bbclass
>>>> @@ -304,6 +304,12 @@ python populate_packages_prepend () {
>>>>                alt_remove_links += '\tupdate-alternatives --remove  %s %s\n' % (alt_name, alt_target)
>>>>
>>>>            if alt_setup_links:
>>>> +            # RDEPENDS setup
>>>> +            bb.note('adding runtime requirement for update-alternatives for %s' % pkg)
>>>> +            rdepends = d.getVar('RDEPENDS_%s' % pkg, True) or ""
>>>> +            rdepends += ' ' + d.getVar('MLPREFIX') + 'update-alternatives'
>>>> +            d.setVar("RDEPENDS_%s" % pkg, rdepends)
>>>> +
>>>
>>> I guess you should use VIRTUAL-RUNTIME_update-alternatives here
>>
>> I believe what I have here is correct.
>
> No, Martin is right.
>
>>    We don't care which update-alternatives
>> we use, just that one is used.
>>
>> recipes-devtools/dpkg/dpkg.inc:RPROVIDES_update-alternatives-dpkg +=
>> "update-alternatives"
>> recipes-devtools/opkg/opkg.inc:RPROVIDES_update-alternatives-cworth +=
>> "update-alternatives"
>>
>> If I use the ${VIRTUAL-RUNTIME_update-alternatives} that has the effect or hard
>> coding which specific version of update-alternatives we're going to use.. (-dpg
>> vs -cworth)  I'm not sure this is really the desired behavior in this case -- if
>> it is, it's easy enough to change of course.
>
> I keep telling people this and people keep ignoring me.
>
> We DO NOT SUPPORT switching providers at runtime since its a package
> manager specific problem for which we currently have no general
> abstraction.

We do support switching providers already, that's the whole alternatives system 
itself.  What is different is in this case we can't use the update-alternatives.

But with the RPROVIDE of update-alternatives within the dpkg and opkg code..  We 
can certainly require 'update-alterantives' and the packaging systems will do 
the right thing (they have so far...)

> This leads to patches like:
>
> http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=fe21ace36e19e06cbfdb83f73e60623bd4e382af
>
> since the virtual/ space does not somehow magically work at runtime,
> worse it breaks the deb package backend.

It works in RPM... but if it doesn't in deb (and ipk) I understand the 
limitations we are bound to.  Limiting the character space (i.e. no '/') is 
different then saying we don't support RPROVIDES...

> PREFERRED_PROVIDER is a build time thing. virtual/ is a build time
> thing. How do I explain this any clearer?

I'm still confused on the PREFERRED_PROVIDER honestly.

conf/distro/include/default-providers.inc:PREFERRED_PROVIDER_virtual/update-alternatives 
?= "update-alternatives-cworth"
conf/distro/include/default-providers.inc:PREFERRED_PROVIDER_virtual/update-alternatives-native 
?= "opkg-native"

There is no 'update-alternatives-cworth' recipe.. but there is an opkg recipe 
that happens to provide an update-alternatives-cworth -package-.  So does 
PREFERRED_PROVIDER select packages or recipes?

> The only mechanism for distro selection of runtime is VIRTUAL-RUNTIME_
> which is pretty horrible and likely would be better done with something
> debian package renaming like since we already have that mangling code.

And the VIRTUAL-RUNTIME isn't a runtime selection, it's a build-time selection. 
  If we need to select this at build-time, we can.  I'm happy with changing the 
patch, but as a distribution person I really don't care who provides this as 
long as something does.

--Mark

> Cheers,
>
> Richard
>
>





More information about the Openembedded-core mailing list