2012/4/6 Richard W.M. Jones <rjones(a)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(a)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)