On Tue, Jul 1, 2025 at 9:24 PM Tom Lane <t...@sss.pgh.pa.us> wrote: > Ha, indeed you are right. On my RHEL9 box, it's kinda drowned out > by complaints about > > /usr/include/c++/11/bits/range_access.h:109:3: error: template with C linkage > 109 | template<typename _Tp> _Tp* end(valarray<_Tp>&) noexcept; > | ^~~~~~~~ > /tmp/headerscheck.u5CrRM/test.cpp:1:1: note: ‘extern "C"’ linkage started here > 1 | extern "C" { > | ^~~~~~~~~~
After pushing my fix, I looked into this, and CI works around this by disabling ICU. A proper fix was discussed here, but it trailed off: https://www.postgresql.org/message-id/flat/20230311033727.koa4saxy5wyquu6s%40awork3.anarazel.de#03346c63050bbc69dfca8981a5698e4a I came up with the attached -- Andres, Peter, does this match your recollection? -- John Naylor Amazon Web Services
From 6a2a016799a1ba8473cc66aad8509890f00b4ec4 Mon Sep 17 00:00:00 2001 From: John Naylor <john.nay...@postgresql.org> Date: Wed, 2 Jul 2025 13:56:32 +0700 Subject: [PATCH v1] Properly fix cpluspluscheck with ICU --- .cirrus.tasks.yml | 3 --- src/include/utils/pg_locale.h | 5 +++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index 92057006c93..1a366975d82 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -938,14 +938,11 @@ task: # - Don't use ccache, the files are uncacheable, polluting ccache's # cache # - Use -fmax-errors, as particularly cpluspluscheck can be very verbose - # - XXX have to disable ICU to avoid errors: - # https://postgr.es/m/20220323002024.f2g6tivduzrktgfa%40alap3.anarazel.de ### always: headers_headerscheck_script: | time ./configure \ ${LINUX_CONFIGURE_FEATURES} \ - --without-icu \ --quiet \ CC="gcc" CXX"=g++" CLANG="clang-16" make -s -j${BUILD_JOBS} clean diff --git a/src/include/utils/pg_locale.h b/src/include/utils/pg_locale.h index 44ff60a25b4..300c78ba93c 100644 --- a/src/include/utils/pg_locale.h +++ b/src/include/utils/pg_locale.h @@ -15,7 +15,12 @@ #include "mb/pg_wchar.h" #ifdef USE_ICU +/* only include the C APIs, to avoid errors in cpluspluscheck */ +#undef U_SHOW_CPLUSPLUS_API +#define U_SHOW_CPLUSPLUS_API 0 #include <unicode/ucol.h> +/* restore so that extensions can include the C++ APIs */ +#undef U_SHOW_CPLUSPLUS_API #endif /* use for libc locale names */ -- 2.50.0