On Tue, Nov 18, 2025 at 1:52 PM Branko Čibej <[email protected]> wrote:

> On 18. 11. 25 09:22, Timofei Zhakov wrote:
>
> On Mon, Nov 17, 2025 at 12:13 AM Branko Čibej <[email protected]> wrote:
>
>> On 16. 11. 25 17:05, Daniel Sahlberg wrote:
>>
>> Den tis 12 aug. 2025 kl 18:56 skrev notroj (via GitHub) <[email protected]>:
>>
>>>
>>> notroj opened a new pull request, #34:
>>> URL: https://github.com/apache/subversion/pull/34
>>>
>>>    ```
>>>    * configure.ac: Pass complete library version information to libtool
>>>      via $SVN_LT_SOVERSION, so library filenames are unique to each
>>>      release rather than constant, while keeping the sonames intact.
>>>
>>>      Examples for SVN 1.14.5:
>>>       Filename before:          libsvn_subr-1.so.0.0.0
>>>       Filename after:           libsvn_subr-1.so.0.14.5
>>>       SONAME before and after:  libsvn_subr-1.so.0
>>>    ```
>>>
>>>
>>> --
>>> This is an automated message from the Apache Git Service.
>>> To respond to the message, please log on to GitHub and use the
>>> URL above to go to the specific comment.
>>>
>>> To unsubscribe, e-mail: [email protected]
>>>
>>> For queries about this service, please contact Infrastructure at:
>>> [email protected]
>>>
>>>
>> This has been laying open in GitHub for far too long. Anyone keen on
>> reviewing this? It is unfortunately far out of my comfort zone.
>>
>>
>> Changing the SOVERSION is a potential backwards-compatibility issue, we
>> can't do this in a patch release. Should be fine to do this on trunk only
>> and release it with 1.15. I think. Someone with more ELF-fu should chime
>> in. Doesn't help that the SONAME is 0 instead of 1, but we can't fix that
>> before 2.0.
>>
>> We  have a similar issue on MacOS, where we set the dylib
>> current-version and compatibility-version both to 1.0.0, but the former
>> could/should be the actual release version.
>>
>> How does the CMake build do with regards to filenames/sonames?
>>
>>
>> Has to be done explicitly. CMake has variables to set that globally for a
>> project.
>>
>> -- Brane
>>
>>
> According to my research, the majority of libraries use this naming where
> they include version after .so part instead of triple-zero. So, I think we
> should stick with this style.
>
> However, I agree with Branko that such change has to be made in a minor
> release rather than a patch, since it might change the ABI.
>
> An example of such naming:
> ```
> $ ls /usr/lib/x86_64-linux-gnu/
>
> [...]
> libkwalletbackend5.so
> libkwalletbackend5.so.5
> libkwalletbackend5.so.5.92.0
> [...]
> ```
>
> In cmake it could be done by setting the SOVERSION property of each
> target. Also our cmake exposes the SVN_SOVERSION variable which in current
> implementation sets only the major version.
>
>
> Does that mean it creates libsvn_foo-1.so.1.0.0? If so, that's
> incompatible with the autotools build.
>
>
My bad, it defaults to just a zero, since it is an ABI version. Major
version goes after the library name with a leading dash
(libsvn_foo*-1*.so.0.0.0).
Exactly the same as the autoconf build.

```
set(SVN_SOVERSION "0" CACHE STRING "Subversion library ABI version")
```


> I would suggest introducing a similar option to the autoconf generator so
> users may customise it for their needs (for example, Debian distribution
> might want to keep old naming for backward compatibility). This will also
> allow introducing this change in a patch release.
>
>
>
> Downstream packagers can patch the source if they want different SOVERSION
> or SONAME. That's really not our problem to solve.
>

Yes, but they should not end up in a situation where the build output
format changes in new versions. That's why I stick with the "option"
approach. On the other hand, if we agree that it was just a minor bug, it
should be fine IMO. It's not a big deal.


>
> To summarise, I think we should first question ourselves whether it is
> worth it to even make this change, which potentially violates backward
> compatibility guidelines. But I generally support this change.
>
> [1] https://cmake.org/cmake/help/latest/prop_tgt/SOVERSION.html
>
>

-- 
Timofei Zhakov

Reply via email to