Unable to compile postgres 13.1 on Slackware current x64

Condor <condor@stz-bg.com>

From: Condor <condor@stz-bg.com>
To: pgsql-general@lists.postgresql.org
Date: 2020-11-16T07:15:47Z
Lists: pgsql-general
Hello,

unable to compile Postgresql 13.0 and 13.1 on Slackware current x64. 
Here is gcc -v:

Reading specs from /usr/lib64/gcc/x86_64-slackware-linux/9.3.0/specs
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-slackware-linux/9.3.0/lto-wrapper
Target: x86_64-slackware-linux
Configured with: ../configure --prefix=/usr --libdir=/usr/lib64 
--mandir=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap 
--enable-languages=ada,brig,c,c++,d,fortran,go,lto,objc,obj-c++ 
--enable-threads=posix --enable-checking=release --enable-objc-gc 
--with-system-zlib --enable-libstdcxx-dual-abi 
--with-default-libstdcxx-abi=new --disable-libstdcxx-pch 
--disable-libunwind-exceptions --enable-__cxa_atexit --disable-libssp 
--enable-gnu-unique-object --enable-plugin --enable-lto 
--disable-install-libiberty --disable-werror --with-gnu-ld --with-isl 
--verbose --with-arch-directory=amd64 --disable-gtktest 
--enable-clocale=gnu --disable-multilib --target=x86_64-slackware-linux 
--build=x86_64-slackware-linux --host=x86_64-slackware-linux
Thread model: posix
gcc version 9.3.0 (GCC)


ICU version - 68.1, LLVM version - 11.0.0


Here is configure params:
./configure \
   --prefix=/usr/lib$LIBDIRSUFFIX/postgresql/$VER \
   --libdir=/usr/lib$LIBDIRSUFFIX/postgresql/$VER/lib \
   --includedir=/usr/include \
   --sysconfdir=/etc/postgresql \
   --localstatedir=/var/lib/postgresql \
   --with-tcl \
   --with-tclconfig=/usr/lib$LIBDIRSUFFIX \
   --with-perl \
   --with-python \
   --with-openssl \
   --with-libxml \
   --with-libxslt \
   --with-icu \
   --with-llvm \
   --enable-thread-safety \
   --with-system-tzdata=/usr/share/zoneinfo \
   $ARCH-slackware-linux

The error is:

make[2]: Leaving directory '/tmp/postgresql-13.1/src/backend/utils'
make[1]: Leaving directory '/tmp/postgresql-13.1/src/backend'
x86_64-slackware-linux-gcc -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Werror=vla -Wendif-labels 
-Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wformat-security 
-fno-strict-aliasing -fwrapv -fexcess-precision=standard 
-Wno-format-truncation -Wno-stringop-truncation -O2 
-I../../../src/include  -D_GNU_SOURCE -I/usr/include/libxml2   -c -o 
collationcmds.o collationcmds.c
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
collationcmds.c:467:51: note: each undeclared identifier is reported 
only once for each function it appears in
make: *** [<builtin>: collationcmds.o] Error 1

Changing TRUE to IS_TRUE solve the problem and code is compiled but no 
idea is this a real fix.


Best Regards,
Hristo S.



Commits

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

  2. Change TRUE/FALSE to true/false