-
Notifications
You must be signed in to change notification settings - Fork 314
Add SOVERSION for the C++ libraries #1860
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
Add SOVERSION for the C++ libraries #1860
Conversation
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
Codecov ReportAll modified and coverable lines are covered by tests ✅
❌ Your changes status has failed because you have indirect coverage changes. Learn more about Unexpected Coverage Changes and reasons for indirect coverage changes. Additional details and impacted files@@ Coverage Diff @@
## main #1860 +/- ##
==========================================
+ Coverage 84.11% 84.72% +0.61%
==========================================
Files 198 177 -21
Lines 22241 12809 -9432
Branches 4687 1191 -3496
==========================================
- Hits 18709 10853 -7856
+ Misses 2610 1773 -837
+ Partials 922 183 -739
Flags with carried forward coverage won't be shown. Click here to find out more. see 131 files with indirect coverage changes Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
|
TBH: using the version number for the SO version is a good starting point and bumping with the version is an easy way to avoid problems. but there is actual tooling now for understand when you need to bump your soversion. e.g. libabigail. |
|
I propose the following policy to make the policy concrete The SO version must be incremented every time a change occurs to the ABI that causes a backward incompatibility. Such changes include, exhaustively:
OTIO currently designates the minor version number for breaking changes, e.g. v0.15, v0.16.0, v0.17.0, accordingly the SOVERSION will be incremented to match. SO version must be monotically increasing, so the ABI version should be computed as major100 + revision1. The third digit will never implicate an ABI version change. Distros that wish to minimize version changes are encouraged to pick the version of OpenTimelineIO that was released most recently before the last cut off date of the most recent vfxplatform year. Distros that wish to always be on head are advised that ABI version is considered carefully before a bump and subject to OpenTimelineIO project policy. |
|
@meshula I find the following confusing:
I'm curious, why mention the vfxplaform? Also, why does picking a version released before the latest VFX platform year minimize changes? As for the last statement, it might be just because I'm not a native English speaker, but I find it confusing. Is the intent to say that the head isn't yet stabilized and can't be relied on, ABI wise? |
|
target platform shouldnt have any impact on when to bump the soversion. the important bit is when you break the ABI. that's why I suggest using tools like abigail over guessing. :) |
That's PTSD from OpenEXR/Imath and distros trying to slice and dice an old OpenEXR (2.x) with a new Imath (3.x) . Maybe we don't need the advice; if people run into problems with the Imath dependency they should use the interred version, and maybe we don't need to say anything about that.
No, now that you've asked me to think more carefully about my comment, it's meant to say if you are building an old vfxplatform and you want to use system Imath, you should pick an OTIO from the vfxplatform year you care about, otherwise you might run into Imath2/3 problems. Again, maybe Imath2 is gone by now, so maybe not worth caring about. |
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
|
@meshula I updated the comments with your feedback, and also added some examples of release versions and their corresponding ABI versions. I left out the parts about the distros, hopefully moving to Imath3 will sort that out. When you have a chance take a look and see what you think. |
Co-authored-by: Nick Porcino <meshula@hotmail.com> Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
meshula
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
43de3e5
into
AcademySoftwareFoundation:main
Related to #872 and #1182, but this is just for the C++ libraries.
This change sets the SOVERSION for the C++ libraries. This version should be incremented anytime the ABI changes. OTIO is currently using the minor version number for breaking changes, e.g. v0.15, v0.16.0, v0.17.0, so SOVERSION is set as a combination of OTIO_VERSION_MAJOR and OTIO_VERSION_MINOR. When OTIO reaches version 1.x.x then SOVERSION could be changed to track just OTIO_VERSION_MAJOR.