ABI change in cyrus sasl 2.1.25

Ondřej Surý ondrej at sury.org
Tue May 29 12:10:35 EDT 2012


Still writing from tiny device...

When you change interface and break binary compatibility you need to increase .so.NUMBER. Existing binaries has to be recompiled to use this new library. And older binaries can still use older version of the library without breaking.

I can prepare patch...

There is also some short info here:
http://www.netfort.gr.jp/~dancer/column/libpkg-guide/libpkg-guide.html#sonameapiabi

Ondřej Surý

On 29. 5. 2012, at 17:25, Alexey Melnikov <alexey.melnikov at isode.com> wrote:

> On 29/05/2012 16:11, Ondřej Surý wrote:
>> I don't think 2.1.25 bumped SONAME, so the bug still applies.
> 
> Please explain what "bumping SONAME" means. I've asked Ken and neither of us understands.
> 
>> As for the #defines - they are related to API (e.g. compile time), but already compiled programs linked against cyrus-sasl (e.g. runtime) will experience the breakage.
>> 
>> Ondřej Surý
>> 
>> On 29. 5. 2012, at 16:57, Alexey Melnikov<alexey.melnikov at isode.com>  wrote:
>> 
>>> On 29/05/2012 15:54, Ondřej Surý wrote:
>>>> Just quick reply from my phone.
>>>> 
>>>> No additional breakage, I just opened the bug after some longer time and didn't realize it applies to 2.1.24.
>>> Ok, please double check. I will do 2.1.26 anyway, but it would be good to close the bug if it no longer applies.
>>> 
>>>> Ondřej Surý
>>>> 
>>>> On 29. 5. 2012, at 16:46, Alexey Melnikov<alexey.melnikov at isode.com>   wrote:
>>>> 
>>>>> On 29/05/2012 15:15, Ondřej Surý wrote:
>>>>>> Hi,
>>>>> Hi Ondřej,
>>>>> Coincidentally I just started discussing your bug with Ken 15 mins ago.
>>>>>> [speaking about: https://bugzilla.cyrusimap.org/show_bug.cgi?id=3692]
>>>>>> 
>>>>>> is there a timeframe for releasing 2.1.26?
>>>>>> 
>>>>>> The ABI change should have changed and this is causing some havoc in
>>>>>> OpenLDAP runtimes, thus it would be really nice to have fixed version
>>>>>> with bumped SONAME. I don't want to bump SONAME solely in Debian
>>>>>> package since it would break compatibility across the ecosystems, but
>>>>>> we are discussing doing that even though it will create some problems
>>>>>> later.
>>>>>> 
>>>>>> So it would be really nice if you could just release 2.1.26 or
>>>>>> 2.1.25.1 (whatever suits you) with bumped SONAME.
>>>>> Reading the bug you submitted (and references), it looks like the original problem was against 2.1.24. 2.1.25 was released since then.
>>>>> Was there another instance of an incompatible ABI change since then?
>>>>> 
>>>>> --------
>>>>> 
>>>>> As far as changing ABIs (or adding new APIs) is concerned:
>>>>> 
>>>>> In saslplug.h:
>>>>> 
>>>>> #define SASL_UTILS_VERSION 5
>>>>> 
>>>>> is bumped when sasl_utils structure is changed incompatibly (e.g. addition of new struct members which will grow the struct size. Changing a "spare_XXX" doesn't count, as long as such members are optional).
>>>>> 
>>>>> 
>>>>> #define SASL_CLIENT_PLUG_VERSION         4
>>>>> 
>>>>> is bumped when the "struct sasl_client_plug" or related functions change.
>>>>> 
>>>>> 
>>>>> #define SASL_SERVER_PLUG_VERSION 5
>>>>> is bumped when "struct sasl_server_plug" or related functions change.
>>>>> 
>>>>> 
>>>>> #define SASL_CANONUSER_PLUG_VERSION 5
>>>>> 
>>>>> is bumped when "struct sasl_canonuser" or related functions change.
>>>>> 
>>>>> 
>>>>> #define SASL_AUXPROP_PLUG_VERSION 9
>>>>> 
>>>>> Is bumped on any auxprop_* API changes. I have updated this version when I changed auxprop_lookup.
>>>>> 
>>>>> And then there is the version number in sasl.h, which should change when
>>>>> there are any other semantics changes or changes to APIs (including addition
>>>>> of new functions).
>>>>> 
>>>>> --------
>>>>> 
>>>>> As far as 2.1.26 is concerned. I've started on it now. There are a couple of blocker bugs that I would like to resolve (1 of them is under control and just needs testing). If I am lucky, this will take about 2 weeks to wrap up.
>>>>> 
>>>>> Best Regards,
>>>>> Alexey
>>>>> 
> 


More information about the Cyrus-devel mailing list