Re: cpluspluscheck vs ICU again
От | Tom Lane |
---|---|
Тема | Re: cpluspluscheck vs ICU again |
Дата | |
Msg-id | 1115793.1754414782@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: cpluspluscheck vs ICU again (John Naylor <johncnaylorls@gmail.com>) |
Ответы |
Re: cpluspluscheck vs ICU again
|
Список | pgsql-hackers |
John Naylor <johncnaylorls@gmail.com> writes: > On Mon, Jul 7, 2025 at 11:06 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: >> John Naylor <johncnaylorls@gmail.com> writes: >>> I see that now. If extensions follow the practice of including system >>> headers before Postgres headers, it should be fine. I've attached v2 >>> which removes the useless #undef and drafts an explanatory commit >>> message. >> Works for me. > Pushed. Just when you thought it was safe to go back in the water ... I tried cpluspluscheck with late-model libicu (76.1 on Fedora 42) and darned if it didn't blow up in exactly the same way. Investigation reveals that they've split the "U_SHOW_CPLUSPLUS_API" symbol into two, and now if you really really don't want any C++ stuff you need to also set "U_SHOW_CPLUSPLUS_HEADER_API" to zero. I've confirmed that this re-silences the failures: diff --git a/src/include/utils/pg_locale.h b/src/include/utils/pg_locale.h index 931f5b3b880..2b072cafb4d 100644 --- a/src/include/utils/pg_locale.h +++ b/src/include/utils/pg_locale.h @@ -18,6 +18,8 @@ /* only include the C APIs, to avoid errors in cpluspluscheck */ #undef U_SHOW_CPLUSPLUS_API #define U_SHOW_CPLUSPLUS_API 0 +#undef U_SHOW_CPLUSPLUS_HEADER_API +#define U_SHOW_CPLUSPLUS_HEADER_API 0 #include <unicode/ucol.h> #endif This shouldn't complicate extensions' lives any further than before; the rule still is "include ICU headers first if you want their C++ symbols". BTW, I see that you applied ed26c4e25 only to master, but don't we want to back-patch? cpluspluscheck is not just an exercise in a vacuum, it's to ensure that C++-coded extensions don't have trouble with our headers. regards, tom lane
В списке pgsql-hackers по дате отправления: