[CLN-list] CLN 1.2.1 -- silent ABI change?
Richard B. Kreckel
kreckel at ginac.de
Wed Apr 2 23:27:59 CEST 2008
Dear Alexei,
Alexei Sheplyakov wrote:
> I've tried to install (and use) CLN 1.2.1. My programs linked with CLN
> 1.2.0 stopped working due to undefined symbols:
Oops.
Indeed: <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=473494>.
> $ ginsh
> ginsh: symbol lookup error: /usr/local/lib/libginac-1.3.so.2: undefined symbol: _ZN3cln23cl_double_to_DF_pointerERKNS_11dfloatjanusE
>
> I think the SONAME should be changed to indicate incompatible changes.
>
> diff --git a/configure.ac b/configure.ac
> index 051223e..9188ad9 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -91,8 +91,8 @@ dnl * if any functions/classes have been added, increment CL_AGE,
> dnl * if backwards compatibility has been broken, set CL_AGE to 0.
> dnl $(CL_CURRENT):$(CL_REVISION):$(CL_AGE) results in
> dnl libcln.so.$(CL_CURRENT)-$(CL_AGE)
> -CL_CURRENT=5
> -CL_REVISION=1
> +CL_CURRENT=6
> +CL_REVISION=0
> CL_AGE=0
> dnl make substitutions
> AC_SUBST(CL_CURRENT)
<slab_my_forehead>
Oh, no! Oh, no, no nooooo!!! This entire library versioning scheme sucks
so big time. I've read all the docs and it didn't help because I missed
that change. It is theoretical mumbo-jumbo unless one has an actual ABI
testsuite and uses it on a regular basis. This is especially true for
C++ libraries.
</slab_my_forehead>
Anyway, I have two options now:
a) Release CLN-1.2.2 with changed soname, although the ABI did not
change wrt. CLN-1.2.1.
b) Just ignore it and release CLN-1.2.2 as libcln.so.5. Seriously. I am
under the impression that the amount of trouble incurred by just
re-building GiNaC for all distros is dwarfed by the trouble induced by a
soname bump. In Debian, it always takes many weeks till we've hinted
depending packages into the testing distribution after a soname bump.
I'll make up my. Until then, feel free to lobby me.
Best wishes
-richy.
--
Richard B. Kreckel
<http://www.ginac.de/~kreckel/>
More information about the CLN-list
mailing list