Skip to content

Fix versioning informations in shared libraries #2291

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

Merged
merged 1 commit into from
Sep 10, 2019

Conversation

masterleinad
Copy link
Contributor

Related to #2283.

Copy link
Member

@dalg24 dalg24 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@masterleinad Please resolve conflicts.

@junghans Please review.

@junghans
Copy link
Contributor

junghans commented Sep 6, 2019

Can you rebase this on top of the merged #2288? And I will test

Copy link
Contributor

@junghans junghans left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You want both SOVERSION and VERSION as apps will link against libkokkos.so.3 and not libkokkos.so.3.0.0, fix here: masterleinad#1

@masterleinad masterleinad force-pushed the fix_versioning_informations branch from 34f64a1 to ef87292 Compare September 7, 2019 03:30
@masterleinad
Copy link
Contributor Author

Fixed.

@crtrott
Copy link
Member

crtrott commented Sep 9, 2019

Can someone explain the reasoning behind linking .so.3 instead of .so.3.0.0?
And wouldn't that indicate that we plan on ABI compatibility of our libraries? Kokkos most definitely will not provide that guarantee. I do not see a good reason to do it, and plenty for not doing it (the ABI compatibility).

@junghans
Copy link
Contributor

junghans commented Sep 9, 2019

Can someone explain the reasoning behind linking .so.3 instead of .so.3.0.0?
And wouldn't that indicate that we plan on ABI compatibility of our libraries? Kokkos most definitely will not provide that guarantee. I do not see a good reason to do it, and plenty for not doing it (the ABI compatibility).

Good question, having just .so.3.0.0 seems a bit non-standard. If you don't want to imply ABI compatibility using something like the date might be a better solution.

@masterleinad
Copy link
Contributor Author

I have seen .so.major.minor.patch or .so.major.minor for some libraries (deal.II, PETSc) and didn't hear about complains regarding that.

@junghans
Copy link
Contributor

junghans commented Sep 9, 2019

I have seen .so.major.minor.patch or .so.major.minor for some libraries (deal.II, PETSc) and didn't hear about complains regarding that.

Ok, then let's do that. I just tested it with Cabana and Kokkos as well.

@masterleinad masterleinad force-pushed the fix_versioning_informations branch from ef87292 to ac7e0ca Compare September 9, 2019 20:32
@masterleinad
Copy link
Contributor Author

I dropped the last commit.

@crtrott
Copy link
Member

crtrott commented Sep 10, 2019

Next thing: there is a compatibility check and it says "same major version". That is not true either. Kokkos promises backward compatibility not forward. I.e. code written against 3.1 will work with 3.2. But code written against 3.2 may not work against 3.1.

@junghans
Copy link
Contributor

junghans commented Sep 10, 2019

Are you referring to the SameMajorVersion compatibility statement?

That seems to be correct reading the CMake doc: “The COMPATIBILITY mode AnyNewerVersion means that the installed package version will be considered compatible if it is newer or exactly the same as the requested version. This mode should be used for packages which are fully backward compatible, also across major versions. If SameMajorVersion is used instead, then the behaviour differs from AnyNewerVersion in that the major version number must be the same as requested, e.g. version 2.0 will not be considered compatible if 1.0 is requested. This mode should be used for packages which guarantee backward compatibility within the same major version. If ExactVersion is used, then the package is only considered compatible if the requested version matches exactly its own version number (not considering the tweak version). For example, version 1.2.3 of a package is only considered compatible to requested version 1.2.3. This mode is for packages without compatibility guarantees. If your project has more elaborated version matching rules, you will need to write your own custom ConfigVersion.cmake file instead of using this macro.”

@crtrott
Copy link
Member

crtrott commented Sep 10, 2019

Ah ok. That is fine then.

@crtrott crtrott merged commit 6980add into kokkos:develop Sep 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants