-
-
Notifications
You must be signed in to change notification settings - Fork 317
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
Binary-versioning regression #992
Comments
In libheif/CMakeLists.txt:
|
You can probably submit that as a pull request. |
If I read the Apple docs and this comment, it appears to me that to correct values (ignoring anything that happened in the past) would be to set
What is Couldn't we do a hard cut and set these values properly instead of shifting the issue further into the future? It also appears that there is now cmake support for this. |
My patch gives I do not know much about cmake's features, so I'm glad there is a "cmake way" to do it instead of just forcing a linker flag. |
The big issue w/ this is that one always has to remember the relationship and manually bump compat and curret together, or code an automated way in CMake to do this somehow. Maintainers are only human (for now), and they will forget to keep these in sync. |
I agree that it's not great to set it manually. cmake is defaulting to |
Probably this has to be set manually because cmake cannot know when there is an incompatible change. In practice, there will only be incompatible changes with the next major version, so this will essentially be a constant that is incremented at every major version. If this is commented in the |
I changed it to use "17.0.0". As far as I understood, it's no problem to keep it at the same number. Do we also have to set |
I checked this and apparently, cmake does indeed handle |
Just for my curiosity (and feel free to ignore and tell me to dig through the docs): how did the libtool scheme in 1.15.2 end up setting this to "17.0.0"? In 1.15.2, there was https://github.com/strukturag/libheif/blob/v1.15.2/configure.ac#L22-L24 which, through |
The change from autotools (libtool in particular) in libheif-1.15.1 to cmake retained the same SONAME of the library (we call it "install_name" on OS X), which seems correct as it appears only ABIs were added rather than removed or changed. But the compatibility_version got decremented (was 17.0.0 now 1.0.0 when I upgrade libheif to 1.17.0). It is not allowed for compatibility_version to be decreased for any specific install_name, or it will cause a runtime failure for any program that was linked against that install_name that had had a higher compatibility_version.
Libtool handles all these library versioning details automatically, via
-version-info
, but cmake does not know anything about this. Assuming I am reading the public APIs correctly, that symbols were added but no symbols were removed or changed, it's correct that install_name stays the same, but compatibility_version should be incremented.The text was updated successfully, but these errors were encountered: