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

[question] Is compiler.libcxx not part of package identification? #15166

Closed
1 task done
h-2 opened this issue Nov 23, 2023 · 6 comments
Closed
1 task done

[question] Is compiler.libcxx not part of package identification? #15166

h-2 opened this issue Nov 23, 2023 · 6 comments
Assignees

Comments

@h-2
Copy link

h-2 commented Nov 23, 2023

What is your question?

When switching from compiler.libcxx=libstdc++11 to compiler.libcxx=libc++, the binary packages in the cache of the CONAN_HOME are not rebuilt. This results in linking problems, because of ABI mismatch.

Is libcxx not used when determining the hash of package?

Have you read the CONTRIBUTING guide?

  • I've read the CONTRIBUTING guide
@memsharded memsharded self-assigned this Nov 23, 2023
@memsharded
Copy link
Member

Hi @h-2

compiler.libcxx should be definitely part of C++ packages (it is removed in C packages).
You should be able to list it with conan list command and see their values. So there might be something else there. If you can please provide some more details so we can reproduce, that would help.

@h-2
Copy link
Author

h-2 commented Nov 23, 2023

This was a local problem; sorry for the noise!

@h-2 h-2 closed this as completed Nov 23, 2023
@memsharded
Copy link
Member

No prob 🙂 !

@h-2
Copy link
Author

h-2 commented Jan 16, 2024

Just to add to this: I have now switched from cppstd=20 to cppstd=23 and none of the packages are rebuilt. Instead I get

boost/1.83.0: Checking 9 compatible configurations
boost/1.83.0: Main binary package 'e21423fdd71e5fa8a537e8ce4d3c1165631c5648' missing. Using compatible package '79403b0c79a830fad4fe3a8b0870ba7242c2d856': compiler.cppstd=20

So C++20 and C++23 are considered ABI stable? Is this true for all packages or does it depend on the specific one? What if a library conditionally defines a function based on C++ standard?

@memsharded
Copy link
Member

Yes, by default Conan assumes in the compatibility.py plugin default implementation that cppstd values are compatible. To change it you can customize your compatibility.py. Also we have #15348 for next release to allow easy per-recipe customization of default cppstd compatibility

@h-2
Copy link
Author

h-2 commented Jan 16, 2024

Cool, thanks for the explanation!

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

No branches or pull requests

2 participants