Re: Unable to compile postgres 13.1 on Slackware current x64

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: Laurenz Albe <laurenz.albe@cybertec.at>
Cc: Condor <condor@stz-bg.com>, "pgsql-generallists.postgresql.org" <pgsql-general@lists.postgresql.org>
Date: 2020-11-16T09:17:19Z
Lists: pgsql-general
On Mon, Nov 16, 2020 at 10:10 PM Laurenz Albe <laurenz.albe@cybertec.at> wrote:
> On Mon, 2020-11-16 at 09:15 +0200, Condor wrote:
> > collationcmds.c: In function ‘get_icu_language_tag’:
> > collationcmds.c:467:51: error: ‘TRUE’ undeclared (first use in this
> > function); did you mean ‘IS_TRUE’?
> >    467 |  uloc_toLanguageTag(localename, buf, sizeof(buf), TRUE, &status);
> >        |                                                   ^~~~
> >        |                                                   IS_TRUE
> >

> "UBool" and "TRUE" are defined in "umachine.h", which is a header file for the
> "libicu" library.
>
> PostgreSQL includes "unicode/ucol.h", which will include "umachine.h"
> (via "utypes.h"), so that should be fine.
>
> Are your libicu headers installed under /usr/include/unicode?
> Do you get any messages about missing include files earlier?

It looks like something happened to ICU's boolean macros .  See this
commit in FreeBSD ports:

https://github.com/freebsd/freebsd-ports/commit/81a88b4506ec06d07be10d199170ef4003eb0e30

... which references:

https://github.com/unicode-org/icu/commit/c3fe7e09d844



Commits

  1. Use "true" not "TRUE" in one ICU function call.

  2. Change TRUE/FALSE to true/false