On Fri, 2011-08-12 at 13:28 -0400, Adam Jackson wrote:
On 8/12/11 12:28 PM, Matthew Garrett wrote:
On Fri, Aug 12, 2011 at 05:25:17PM +0100, Bryn M. Reeves wrote:
Third party code built against -devel and depending only on the SONAME is fine in this situation as it sticks to the published ABI. In-tree code that plays with non-ABI symbols will break and so may need a stricter dep.
It is in this situation, but there are other situations where depending on the SONAME will cause breakage. If libfoo 1.1 adds a new symbol, anything built against it may fail to run against libfoo 1.0. But how will you know that in advance if all you have in your dependencies is the SONAME?
In fairness, this is why rpm elaborates soname dependencies to also include symbol versions. It's a pity that symbol versions are so painful to use that really only glibc makes any effort to do it.
FWIW: talloc, tdb, tevent, and ldb and all of samba4 also do symbol versioning since recently, thanks to waf build extensions that make it simple to do.
Hilariously gcc _does_ let you specify symbol version in a __attribute__ tag, but only on HP/UX on ia64. Thanks for that.
[fail]
Simo.