While we're talking about RPM dependencies ...

Nicolas Chauvet kwizart at gmail.com
Fri Apr 6 09:36:31 UTC 2012


2012/4/6 Richard W.M. Jones <rjones at redhat.com>:
> On Thu, Apr 05, 2012 at 08:21:15PM +0200, drago01 wrote:
>> On Thu, Apr 5, 2012 at 8:03 PM, Richard W.M. Jones <rjones at redhat.com> wrote:
>> > Today when using F17 Alpha, I ran qemu and got an error which was
>> > something like:
>> >
>> >  qemu-kvm: undefined symbol usbredirhost_foo
>> >
>> > (I don't recall the precise symbol).  This was just because that
>> > version of qemu was compiled against a later version of
>> > libusbredirhost.so (but one with the same soname), and updating
>> > libusbredirhost.so fixed the problem.
>> >
>> > The 'qemu' package has a bug, of sorts: the maintainer should have
>> > added a specific Requires line:
>> >
>> >  Requires: usbredir >= <some version>
>> >
>> > However, instead of pushing this problem on packagers, maybe RPM
>> > should resolve this by encoding the (admittedly long) list of symbols
>> > used by a binary?
>>
>> Well the bug here is that usbredir changed ABI without bumping the soname.
>
> AIUI you don't need to bump the soname when you add a new function,
> only if you incompatibly change an existing function or struct.
>
> (Larger questions about the meaning of "ABI" omitted from this message ...)

So this is already handled by rpm once the symbol is properly tagged
as introduced in a given version of the upstream project.
see the output of rpm -q --provides libxml2 for an example, glibc does the same.

This move the resolution from "symbols" to "version dependency" which
is a reduction. (I guess it wouldn't worth for rpm to explicitly rely
on each symbol or that will be huge).

Nicolas (kwizart)


More information about the devel mailing list