Reverts part of fa67f096bdea9db59dd20c470c9e32f3dac5be94, now that we require a minimum of GCC 11.
See also: #28349 (comment).
Reverts part of fa67f096bdea9db59dd20c470c9e32f3dac5be94, now that we require a minimum of GCC 11.
See also: #28349 (comment).
Reverts part of fa67f096bdea9db59dd20c470c9e32f3dac5be94, now that we
require a minimum of GCC 11.
See also:
https://github.com/bitcoin/bitcoin/pull/28349#issuecomment-1745143612.
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
For detailed information about the code coverage, see the test coverage report.
See the guideline for information on the review process.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.
Is there any user facing difference? If so, it would be good to show it in a comment.
0./configure CC=gcc-10 CXX=g++-10
1<snip>
2configure: error: *** A compiler with support for C++20 language features is required.
RenameOver
)?
Otherwise it would continue to compile (and miscompile RenameOver)?
I don’t know where it would fail first, but I don’t see the point of having it continue past configure in this case. There are multiple devs using clang-14 who’ve been confused by clang-14 failing to compile code, and unsure what the issue was. So fixing the case here for GCC seems more useful than random compile errors.
The first compile failure I see is in util/time.cpp
:
0util/time.cpp: In function ‘std::string FormatISO8601DateTime(int64_t)’:
1util/time.cpp:50:24: error: ‘year_month_day’ in namespace ‘std::chrono’ does not name a type
2 50 | const std::chrono::year_month_day ymd{days};
3 | ^~~~~~~~~~~~~~
4util/time.cpp:51:24: error: ‘hh_mm_ss’ in namespace ‘std::chrono’ does not name a type
5 51 | const std::chrono::hh_mm_ss hms{secs - days};
6 | ^~~~~~~~
7util/time.cpp:52:63: error: ‘ymd’ was not declared in this scope
8 52 | return strprintf("%04i-%02u-%02uT%02i:%02i:%02iZ", signed{ymd.year()}, unsigned{ymd.month()}, unsigned{ymd.day()}, hms.hours().count(), hms.minutes().count(), hms.seconds().count());
9 | ^~~
10util/time.cpp:52:120: error: ‘hms’ was not declared in this scope
11 52 | return strprintf("%04i-%02u-%02uT%02i:%02i:%02iZ", signed{ymd.year()}, unsigned{ymd.month()}, unsigned{ymd.day()}, hms.hours().count(), hms.minutes().count(), hms.seconds().count());
12 | ^~~
13util/time.cpp: In function ‘std::string FormatISO8601Date(int64_t)’:
14util/time.cpp:59:24: error: ‘year_month_day’ in namespace ‘std::chrono’ does not name a type
15 59 | const std::chrono::year_month_day ymd{days};
16 | ^~~~~~~~~~~~~~
17util/time.cpp:60:47: error: ‘ymd’ was not declared in this scope
18 60 | return strprintf("%04i-%02u-%02u", signed{ymd.year()}, unsigned{ymd.month()}, unsigned{ymd.day()});
19 | ^~~
20make[2]: *** [Makefile:11756: util/libbitcoin_util_a-time.o] Error 1
Can you re-try on 27.x, because https://github.com/bitcoin/bitcoin/commit/c3530254c926a5ab9b710512bbbd29e5cd5b10f7 is not in 27.x.
27.x & fccd32efe6e2950b2c74fdec2ade54040ca32a2c compiles with gcc-10 (Ubuntu 10.5.0-4ubuntu2) 10.5.0
.
utACK 232928b58a82e3f15307deba1ae921ae2960ccc8
Seems fine to fail early here, instead of running into a util/time
compile failure later on.