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