-
-
Notifications
You must be signed in to change notification settings - Fork 14
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
Customize options.h for ABI consistency #43
Comments
You have good timing. 😅 I was just made aware and thought about this today during this discussion. First off, we're aware of the problem w.r.t to C++ versions, but the (current attempt at a) solution is only available from abseil 20220623, and you're still using a way older abseil in arrow CI. Regarding uniformly using the C++11 ABI, I said in the other PR:
and
I'm happy to hear opinions on that (CC @conda-forge/abseil-cpp @conda-forge/core), but replacing direct use of the C++ stdlib (for those that can use it) with lots of indirection through a DLL boundary is something I'm not suuuuuper keen on doing. I'll admit that the escape hatch of using the static libs has been more painful than anticipated, so I'm not going to resist a working solution, but currently I'm still trying to get this to work. In the case of arrow, why not just upgrade abseil? |
To copy my answer from the other thread, we don't have any direct dependency to abseil that I know of, it is getting pulled because of grpc and/or google-cloud-cpp. So I don't know how to upgrade it in our case. |
Perhaps better to discuss this in the arrow PR |
I think we should also consider adjusting the header file for windows as they did in microsoft/vcpkg#12021 |
Basically set |
For other readers: the addition DLL options are being proposed here: #49 |
Solution to issue cannot be found in the documentation.
Issue
abseil-cpp is used downstream by different packages, some of which build in C++17 mode, but others in C++14 or C++11 mode.
By default, the Abseil library has a different ABI depending on the C++ language version. However, it also offers a mechanism to solve this issue:
https://github.com/abseil/abseil-cpp/blob/37c5c2e5cc51db1bfb4a5d2f2c5494a394d80e56/absl/base/options.h#L15-L51
Quoting from this file:
Of course, once all transitively dependent packages are compiled in C++17 mode it becomes moot.
(see comment in Arrow PR for moving to C++17: apache/arrow#13991 (comment))
Installed packages
Environment info
The text was updated successfully, but these errors were encountered: