-
-
Notifications
You must be signed in to change notification settings - Fork 41
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
Add cobalt library #194
Add cobalt library #194
Conversation
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
0f08672
to
c4e79a2
Compare
@conda-forge-admin, please rerender |
…nda-forge-pinning 2024.03.05.14.24.26
Thanks Samuel! 🙏 Are we missing any others or was this the only one? Is there a good test we can add to verify that we have the expected components in install? |
The main issue is that Cobalt requires c++20 and a compiler with adequate support of coroutine: Clang 14, GCC 10 and MSVC 19.30 (Visual Studio 2022).
The other one Boost.Redis is header only (or rather the user needs to include a
The typical file exist tests with |
We're already on Clang 16 + GCC 12 (and could use 17 resp. 13; soon also 18 resp. 14), so unix should be fine. I'm wondering about the MSVC requirement though; the last VS2019 releases essentially had 100% support for C++20, and was only kept from declaring Moving to VS2022 is a bigger pain, and probably not yet in the cards for something as deep as boost, hence my interest in finding out where that MSVC requirement comes from. |
The regressions tests are not setup for MSVC less than 2022. I'll ask the author for details since 2019 is supposed to support coroutine. There are other errors in the CI that are purely Conda issues... |
OK, so no details on why requiring 19.30 vs. 19.29. Also very reassuring:
Given that, I think the sanest approach then would be to have a separate output for The alternative is redoing conda-forge/conda-forge.github.io#1732 for VS2022, or at least accepting that boost-lib-consuming feedstocks (and all projects linking to them) most likely have to move to VS2022. Both of these would require discussion in @conda-forge/core I think. OTOH, vs2019 will reach EOL this April, so if we assume a similar timeline1, we could move to VS2022 sometime this year. Doing the separate output is a kind of stopgap measure, but at least it would enable that we build the library for anyone who needs it. If so, I'd propose to re-absorb it into Footnotes
|
Ah cool, thanks (your post arrived after I wrote mine)
Ugh, another instance of conda/conda#11612 it seems. Not sure where this is coming from now, as the recipe hasn't changed? |
I think Microsoft preserves ABI compatibility over versions since MSVC 2015 and that a library built with a given MSVC version can be consumed (e.g. linked) by a MSVC version that's the same or newer. |
Yes, that's the point, because this creates a viral requirement to update to vs2022 for all boost consumers and all their transitive consumers. If we build only |
I spend some time compiling with MSVC 2019, and while the library itself compiles fine, one of the test fails to build, for a reason unrelated to coroutine. So the CI should pass if we add |
The win64 and linux64 builds now passed. The osx build fails because conda-forge targets MacOS 10.9. The other builds (ppc64le and aarch64) require the attention of the @conda-forge/core:
|
Thanks, that's great!
I'd be okay with raising the MACOSX_DEPLOYMENT_TARGET to 10.13 here. Could you try if that makes the build pass? Needs to be set in CBC (for
As long as conda doesn't merge the PR I linked above, we'll have to figure out which feedstock sets the incompatible variant of that build constraint, and change that regex to match the predominant one... |
@conda-forge-admin, please rerender |
c6d0faa
to
dba38f1
Compare
@conda-forge-admin, please rerender |
Hi! This is the friendly automated conda-forge-webservice. I tried to rerender for you, but it looks like there was nothing to do. This message was generated by GitHub actions workflow run https://github.com/conda-forge/boost-feedstock/actions/runs/8235126304. |
This is to avoid ValueError: Incompatible component merge: - '*_cpython' - '*cpython' caused by conda/conda#11442 . Signed-off-by: Marcel Bargull <[email protected]>
f8d31d4
to
5fcdcdc
Compare
Why is |
Otherwise conda-build hit a rendering issue (IDK why): conda.exceptions.InvalidVersionSpec: Invalid version '': empty version string ref: conda-forge#194 (comment) Signed-off-by: Marcel Bargull <[email protected]>
@conda-forge-admin, please rerender |
No idea; pretty odd... |
…nda-forge-pinning 2024.03.11.16.03.05
Signed-off-by: Marcel Bargull <[email protected]>
The whole |
We still need
here for any output that requires C symbols that aren't available in 10.9 - I didn't see the CI failures with 10.9, but it sounds we need it for libboost at least, and libboost-python gets it transitively; but it shouldn't be necessary for |
This last aa7b85c that changes the run requirements has an unexpected effect:
but I dont understand the causal link. It was building fine without it, so do you think it is really necessary? |
I clicked on re-run. This was a faulty compiler package and should now be fixed. |
Thank you! Now that we have a Boost that compiles with c++20, shall we introduce variants for the different cppstd? And pin the ABI ? Taken from Abseil feedstock:
|
Apparently not a good idea to have cppstd variants: conda-forge/abseil-cpp-feedstock#45 |
It really depends on whether the library changes ABI based on the standard version. Basically no library does that (at least intentionally) as far as I'm aware, but it's abseil's entire raison d'être. With boost being quite low-level as well, I'm not sure if they switch anywhere based on the availability of newer STL-types. If so, we should disable that (which is what we did for abseil >C++17 now; allowing compilation of our libabseil with C++20 and up without breaking the ABI). |
I asked on Slack whether libraries might change ABI based on the standard version such as libraries that would switch to using std counterpart of boost library when building with latest cpp standard for instance. Here are the answers I got:
|
Could you explain the meaning of the |
Thanks for inquiring upstream!
I really doubt it's worth building separate variants of boost for different standard versions, already due to the overhead in and of itself, but more importantly to the problems in conda-forge/abseil-cpp-feedstock#45. In particular, introducing C++-std-flavours of boost would mean that we have to bifurcate the ecosystem into (say) a C++17 version and a C++20 version, and because there are two identical shared libraries with a (potentially!) different ABI, they cannot co-exist (without some namespacing shenanigans that need to be explicitly supported upstream for this to be feasible). That means it would be impossible to mix packages built against I consider it infeasible to do this. Already with abseil (where at least technically, it could work due to the upstream namespacing), the appetite was not there to do it. And boost has even more consumers. I think the only realistic scenario is to assume that the ABI does not change. This is - AFAICT - also what the boost packaging in conda-forge has done historically. Kind of like "if boost changes its ABI, and no-one's affected by it, does it really constitute a break?". Abseil has a lot more experience with this and explicitly provides In particular, I find
a bit disingenuous. The entire C++ standardization process is completely dominated by ABI-compatibility, especially across C++ standard versions (c.f. the death of epochs), and all big three compilers de facto promise to keep the ABI in various ways. This might not be explicitly sanctioned by the standard (which also has no concept of its own evolution AFAIU, at least not normatively), but it is close enough to hard reality that it's effectively the bedrock underlying our ability to run a distribution (that includes lots of C++; and thus packages with very different standard requirements) at all. CC @conda-forge/boost, if someone has thoughts on this. |
Sounds good to me. As there are no objections, shall we proceed with the merge? |
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.
OK, in it goes, thanks for the PR and discussion!
Otherwise conda-build hit a rendering issue (IDK why): conda.exceptions.InvalidVersionSpec: Invalid version '': empty version string ref: conda-forge#194 (comment) Signed-off-by: Marcel Bargull <[email protected]>
Otherwise conda-build hit a rendering issue (IDK why): conda.exceptions.InvalidVersionSpec: Invalid version '': empty version string ref: conda-forge#194 (comment) Signed-off-by: Marcel Bargull <[email protected]>
Otherwise conda-build hit a rendering issue (IDK why): conda.exceptions.InvalidVersionSpec: Invalid version '': empty version string ref: conda-forge#194 (comment) Signed-off-by: Marcel Bargull <[email protected]>
Otherwise conda-build hit a rendering issue (IDK why): conda.exceptions.InvalidVersionSpec: Invalid version '': empty version string ref: conda-forge#194 (comment) Signed-off-by: Marcel Bargull <[email protected]>
Fixes #193
Checklist
0
(if the version changed)conda-smithy
(Use the phrase@conda-forge-admin, please rerender
in a comment in this PR for automated rerendering)