packaging libraries with no versioned .so files

Hans de Goede j.w.r.degoede at hhs.nl
Sun Mar 22 09:20:27 UTC 2009


Ville Skyttä wrote:
> On Thursday 19 March 2009, Hans de Goede wrote:
> 
>> If upstream doesn't do library versioning it is a safe bet that they
>> don't guarantee ABI stability either.
>>
>> The best practice in this case is to patch upstream's Makefiles to make
>> versioned libraries with the full upstream version in the soname
>> (use -release argument to libtool if using libtool).
> 
> Is inventing sonames really a best practice or even something that should be 
> recommended?
> 
> Drawbacks of doing so include problems if/when upstream later implements 
> versioning as well and ships a version of a lib using the same soname that 
> was earlier used in Fedora for something that's not ABI compatible, confusion 
> caused by versions possibly decreasing in these scenarios, and another 
> smaller one is inflicted binary incompatibilities between distros.
> 

Which is why I advised using libtool's -release argument, or manually mimicking this,
this leads to soname's like: libfoo-%{version}.so. So if upstream starts doing versioning,
even if the choose the same scheme they will end up with different soname's (as the next
upstream release will have a different %{version} I may hope)

Sure this needs to be brought up upstream and in the mean time it should be fixed
*properly* in Fedora.

> Based on these issues, I think inventing sonames should be discouraged instead 
> of being recommended or mentioned as a best practice.

NACK ...

> IMO (unless I've 
> misunderstood something) a best practice would be to persuade upstream to 
> implement lib versioning even if the version changes on every release until 
> things stabilize, and until they do, resort to strict NEVR based dependencies 
> towards those unversioned lib packages in other Fedora packages, and never 
> invent sonames.

Full NEVR deps are way more bad then inventing soname's:
1) overkill, the ABI will only change with a new upstream release,
    not with some minor packaging fix / rebuild
2) only fix part of the problem, what if users compile software
    themselves against the unversioned so ?

We have a problem with non proper versioning in ld.so 's namespace, this *MUST*
be fixed in ld.so's namespace, fixing this at the rpm level is as good as
useless.

Regards,

Hans




More information about the fedora-devel-list mailing list