Re: Build error in Solaris

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Wei Sun <936739278@qq.com>
Cc: pgsql-bugs <pgsql-bugs@lists.postgresql.org>, ilmari <ilmari@ilmari.org>
Date: 2022-02-08T12:28:09Z
Lists: pgsql-bugs

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Remove ppport.h's broken re-implementation of eval_pv().

"=?utf-8?B?V2VpIFN1bg==?=" <936739278@qq.com> writes:
> When I built the latest code for branch REL_10_STABLE on the Solairs, 
> the following error occurred:
> ------------------------------------------------------
> "plperl.c", line 669: syntax error before or at: if
> "plperl.c", line 669: undefined symbol: _sv
> "plperl.c", line 669: left operand of "-&gt;" must be pointer to struct/union
> "plperl.c", line 669: warning: improper pointer/integer combination: arg #2
> "plperl.c", line 669: syntax error before or at: else
> "plperl.c", line 670: warning: statement not reached
> "plperl.c", line 678: cannot recover from previous errors
> cc: acomp failed for plperl.c
> gmake: *** [plperl.o] Error 2
> ------------------------------------------------------

Hm.  I saw something similar on my old dinosaur pademelon, but wrote it
off as "they don't care about pre-C99 compilers anymore".  But now I
dug into ppport.h a bit more, and I think it's actually busted for
non-gcc compilers: eval_pv expands into something that tries to use
STMT_START/STMT_END inside a plain parenthesized expression (via
croak_sv).

Maybe the bleeding edge Devel::PPPort would do better?  I see

Revision history for Devel-PPPort
 
3.64 - 2022-02-01
  * Fix: better support for STMT_START / STMT_END definition
  * Fix: Only use '-Wdeclaration-after-statement' if possible

which if not a smoking gun is at least firearm-adjacent.

			regards, tom lane