[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Introduce symbol versioning


On Monday, 12 March 2018 16:13:24 CET Anderson Sasaki wrote:
> Yes, the mechanism which builds the API is working properly, as well as the
> SONAME handling. But this is not sufficient to keep the ABI stable. And
> there are other problems that using only SONAME can't solve, like the
> problems I listed in my first email. Just to make it easier, I'll copy the
> list:
> 
> * in an ABI change, there is no way to keep the old version for
> compatibility and switch to the new version due to symbol clashes * in an
> API change, there is no way to keep the old symbol for old applications,
> and introduce a new symbol for the newly compiled applications * an
> application cannot have two or more dependencies which are linked with
> different versions of libssh

Hi Anderson,

we understand and value your effort, the problem is that we already have been 
there, we had a map file and we broke it. We added functions and forgot to 
update the map file. We even did released without updating the map file. Also 
it didn't work on Windows and we wanted a solution which is platform 
independent.

That's why we were getting rid of it. The LIBSSH_API macro works since quite 
some years without any issues.

Reintroducing it the way we already had it is probably not something we want. 
If we want to add it, we need a better solution. We need ABI checks as part of 
the build system so that we know something needs to be updated!

Samba/libtalloc does ABI checks based on a script using nm and gdb. It is the 
only project I know which has working ABI checks. It has a signature file for 
every release making it easy to create the required map file.

https://git.samba.org/?p=samba.git;a=tree;f=lib/talloc/
ABI;h=92e35481940c36344569ab71d866f075bd8aef52;hb=refs/heads/master


It could be possible to achieve that using cmake scripts. If the cmake lang is 
too limiting it could be done with python.


Best regards,


	Andreas

-- 
Andreas Schneider                   GPG-ID: CC014E3D
www.cryptomilk.org                asn@xxxxxxxxxxxxxx



Follow-Ups:
Re: [PATCH] Introduce symbol versioningAnderson Sasaki <ansasaki@xxxxxxxxxx>
References:
[PATCH] Introduce symbol versioningAnderson Sasaki <ansasaki@xxxxxxxxxx>
Re: [PATCH] Introduce symbol versioningAris Adamantiadis <aris@xxxxxxxxxxxx>
Re: [PATCH] Introduce symbol versioningAnderson Sasaki <ansasaki@xxxxxxxxxx>
Archive administrator: postmaster@lists.cynapses.org