libtool version flags mis-set for new public functions
Submitted by Daniel Macks
Going from libgsf-1.14.14 to 1.14.15, some new symbols were added to the public API of the libgsf shared library and published in the public gsf/*.h headers. However, the libtool versioning flags were not updated for this change. The API change itself is against libgsf's own stated compatibility rules. And by not setting flags properly, other libraries cannot use standard compatibility controls like dyld to make sure they are getting the minimum expected level of features. configure.in states:
dnl Version info for libraries = CURRENT:REVISION:AGE dnl dnl Within each x.y., ABI is maintained backward and forward compatible. dnl (As a consequence, no exported function may be added.) dnl So it's enough to have one interface number per each x.y. branch. dnl dnl OTOH, we are not able to keep ABI strictly backward compatible throughout dnl the whole x... dnl The easiest way is to declare no ABI compatibility, ie. AGE is always 0. dnl m4_define([version_iface], m4_eval(100 * libgsf_version_major + libgsf_version_minor))
and of course the VERSION_INFO calculations don't include any way to adjust for a compatibility change that is self-prohibited.