-
Notifications
You must be signed in to change notification settings - Fork 287
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
Version numbering of the shared libraries in debian packages #286
Conversation
…done on minor version up
@@ -11,3 +11,4 @@ usr/include/dart/simulation/* | |||
usr/share/dartcore/DARTCoreConfig.cmake | |||
usr/share/dartcore/DARTCoreConfigVersion.cmake | |||
usr/share/dartcore/DARTCoreTargets*.cmake | |||
usr/lib/libdart-core.so.4 |
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.
The -dev packages usually host the symlinks (.so) that points to real libraries (.so.4.2). Any reason to use here a .so.4?
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.
First, .so.4 is a symlink as well. When dart-core is built, the following files are generated:
libdart-core.so (symlink points to libdart-core.so.4.2)
libdart-core.so.4 (symlink points to libdart-core.so.4.2)
libdart-core.so.4.2 (real library)
I thought libdart-core[MAJOR_VER]-dev packages host libdart-core.so.[MAJOR_VER], which are symlinks, and libdart-core[MAJOR_VER].[MINOR_VER] pacakges host libdart-core.so.[MAJOR_VER].[MINOR_VER], which is real libraries.
Is it more standard if libdart-core[MAJOR_VER]-dev packages host libdart-core.so?
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.
Two thoughts:
1- About SONAME used
When breaking ABI on minors, there is no point for me on having a SONAME (which will be stored in applications using the library) defined only by majors (libdart-core.so.4) since the next version 4.3 is not going to be compatible with 4.2. So, the SONAME should be lib.so.{major}.{minor} and our library real name could be lib.so.{major}.{minor}.{patch}.
2- About packaging
From the debian policy:
Shared libraries are normally split into several binary packages. The SONAME symlink is installed by the runtime shared library package, and the bare .so symlink is installed in the development package since it's only used when linking binaries or shared libraries.
So, we should put .so inside -dev and the .so.Major.Minor (symlink) and .so.Major.Minor.Patch (binary) inside the lib package.
Sorry for the previous confusion, let me know if I need to explain something better.
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.
It's an clear explanation, thanks!
I made changes that applies the policy and the other comments of yours. Please let me know if it needs more change.
I think, this pr is ready to merge, if I correctly followed @j-rivero 's comment. |
Version numbering of the shared libraries in debian packages
Fixed #211 |
Version numbering of the shared libraries in debian packages
This PR changes naming of the shared libraries. Since ABI breaking is done per minor version up, minor version number needs to be appear to the shared libraries.
For example:
libdart-core4.2
package installslibdart-core.so.4.2
libdart-core4-dev
package installslibdart-core.so.4
symlinkThis PR should fixes #281.