-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
Building boost with C++20 fails for gcc < 11 and clang < 14 because these don't support necessary features to build cobalt #24216
Comments
@uilianries as requested |
@samuel-emrys That validation is related to Conan 1.x and when not using cppstd defined. Is it your case? |
No, this is related to conan 2, where cppstd is being defined - cppstd=20 is being set. |
@samuel-emrys Usually we would use In Boost the context is different because an option can require a different standard and we want to tell to the user what component requires what C++ standard. Otherwise, check_min_cppstd would be enough. That's why we use validate_min_cppstd. It's true GCC8 partially implements C++20 and we don't run it in the CI, but only GCC9 as closest version. So, is it something blocking you? Do you have a build log with that failure? |
@uilianries i'll see if i can get a build log for you - looks like proof of conan isn't working to do this at the moment. You only run gcc9 for the conan 1 CI, don't you? In that case, cppstd=20 won't be set, so cobalt won't be built. This probably only affects conan 2. It looks like gcc11 is the only version of gcc for conan 2, and only for cppstd17 |
@samuel-emrys correct, so far we run GCC5, 7, 9 and 11 (Conan 1.x) and GCC 11 (Conan 2.x). |
Build log as promised:
|
@samuel-emrys Thank you! |
Building boost/1.85.0 with cppstd=20 fails for gcc < 11 and clang < 14 because, whilst these compilers support C++20 (a requirement to build cobalt), they are partial implementations, so they fail to build cobalt. cobalt should be turned off as a default option for these compiler versions.
This ticket is in response to a recent change to build cobalt by default on build of boost that have
cppstd=20
andversion >= 1.85.0
The changes introduced in #24149 ensure that cobalt is only build when
cppstd=20
, but this only fixes part of the problem with cobalt. It also needs to check that gcc >= 11 and clang >= 14.The problem here is just that cobalt is building by default when
valid_min_cppstd(self, 20)
, but the logic should beVersion(self.settings.compiler.version) >= self._min_cobalt_compiler_version() and valid_min_cppstd(self, 20)
Perhaps this check is better placed in
config_options
than the line I've commented on though.Derived from the following comment: #24149 (comment)
The text was updated successfully, but these errors were encountered: