Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shared library soname should change iff ABI incompatible #1592

Closed
heftig opened this issue Oct 6, 2020 · 5 comments · Fixed by #1741
Closed

Shared library soname should change iff ABI incompatible #1592

heftig opened this issue Oct 6, 2020 · 5 comments · Fixed by #1741
Labels
[build] Area: Changes in build files Priority: Medium Type: Bug Indicates an unexpected problem or unintended behavior
Milestone

Comments

@heftig
Copy link

heftig commented Oct 6, 2020

The soname is currently libsrt.so.1 and has been through several ABI-incompatible releases. E.g. 1.4.2 broke ABI by adding some fields to the CBytePerfMon structure. To avoid trouble when a shared libsrt is upgraded, the soname of the library should be bumped to reflect the incompatibility.

I would suggest making the next release 1.5.0 and using the soname libsrt.so.1.5, then avoiding breaking ABI in patch releases. If ABI is broken, the minor (or major) version is increased.

@heftig heftig added the Type: Bug Indicates an unexpected problem or unintended behavior label Oct 6, 2020
@maxsharabayko maxsharabayko added the [build] Area: Changes in build files label Oct 12, 2020
@maxsharabayko maxsharabayko added this to the v1.5.0 milestone Oct 12, 2020
@maxsharabayko maxsharabayko modified the milestones: v1.5.0, v1.4.3 Oct 22, 2020
@FedericoCeratto
Copy link
Contributor

@maxsharabayko ABI breaking changes without soname changes are impact Linux distributions e.g. [1] making srt difficult to ship. Would it be possible to have a 1.5 release as soon as possible? Thanks!

[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=971754

@maxsharabayko
Copy link
Collaborator

@FedericoCeratto The next planned SRT release is v1.4.3.
If the shared library has libsrt.so.1.4 or even libsrt.so.1.4.3, would that resolve the shipment issue?

@sdroege
Copy link

sdroege commented Jan 11, 2021

You have to increase that 1 there whenever the ABI is changing in incompatible ways. If you're lazy you could simply increase it with every release.

@heftig
Copy link
Author

heftig commented Jan 11, 2021

If you're willing to take care to avoid ABI changes in patch releases (1.4.4, 1.4.5, etc) I would suggest .so.1.4 instead of .so.1.4.3.

@maxsharabayko
Copy link
Collaborator

Going forward with .so.1.4, .so.1.5 etc and preserving ABI compatibility in patch versions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[build] Area: Changes in build files Priority: Medium Type: Bug Indicates an unexpected problem or unintended behavior
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants