Thread: BUG #4016: Build fails in ecpglib on file extern.h

BUG #4016: Build fails in ecpglib on file extern.h

From
"Samuel Gilbert"
Date:
The following bug has been logged online:

Bug reference:      4016
Logged by:          Samuel Gilbert
Email address:      samuel.gilbert@ec.gc.ca
PostgreSQL version: 8.3.0
Operating system:   Debian GNU/Linux Etch x86_64
Description:        Build fails in ecpglib on file extern.h
Details:

I tried to build 8.3.0 on Debian GNU/Linux Etch x86_64 with the following
configure options :

./configure --prefix=/data/aq_ops/software/x86_64 --enable-thread-safety
--with-pgport=5433 --with-tcl --with-perl --with-python --with-pam
--with-ldap --with-openssl --with-libxml --with-libxslt

Most of the build process works correctly until it gets to
postgresql-8.3.0/src/interfaces/ecpg/ecpglib.  It then fails while trying to
compile extern.h.  Here is the output :

make[4]: Entering directory
`/data/aq_ops/software/src/postgresql-8.3.0/src/interfaces/ecpg/ecpglib'
gcc -march=opteron -mfpmath=sse -fomit-frame-pointer -Wall -pipe -O2
-I/data/odysseus/afsudev/usr/include -Wall -Wmissing-prototypes
-Wpointer-arith -Winline -Wdeclaration-after-statement -Wendif-labels
-fno-strict-aliasing -pthread  -D_REENTRANT -D_THREAD_SAFE
-D_POSIX_PTHREAD_SEMANTICS -fpic -I../include
-I../../../../src/interfaces/ecpg/include -I../../../../src/interfaces/libpq
-I../../../../src/port -I../../../../src/include -D_GNU_SOURCE
-I/usr/include/libxml2   -c -o execute.o execute.c
In file included from execute.c:26:
extern.h:55: error: field 'statement_type' has incomplete type
execute.c: In function 'ecpg_execute':
execute.c:1277: error: 'ECPGst_execute' undeclared (first use in this
function)
execute.c:1277: error: (Each undeclared identifier is reported only once
execute.c:1277: error: for each function it appears in.)
execute.c: At top level:
execute.c:1428: error: conflicting types for 'ECPGdo'
/data/odysseus/afsudev/usr/include/ecpglib.h:47: error: previous declaration
of 'ECPGdo' was here
execute.c: In function 'ECPGdo':
execute.c:1436: error: variable 'statement_type' has initializer but
incomplete type
execute.c:1436: error: conversion to incomplete type
execute.c:1436: error: storage size of 'statement_type' isn't known
execute.c:1490: error: 'ECPGst_prepnormal' undeclared (first use in this
function)
execute.c:1500: error: 'ECPGst_execute' undeclared (first use in this
function)
execute.c:1436: warning: unused variable 'statement_type'
make[4]: *** [execute.o] Error 1

Re: BUG #4016: Build fails in ecpglib on file extern.h

From
Tom Lane
Date:
"Samuel Gilbert" <samuel.gilbert@ec.gc.ca> writes:
> I tried to build 8.3.0 on Debian GNU/Linux Etch x86_64 with the following
> configure options :

> ./configure --prefix=/data/aq_ops/software/x86_64 --enable-thread-safety
> --with-pgport=5433 --with-tcl --with-perl --with-python --with-pam
> --with-ldap --with-openssl --with-libxml --with-libxslt

You seem to have omitted some relevant information, because there's a
bunch of stuff in the compile command that did not come from these
configure options:

> gcc -march=opteron -mfpmath=sse -fomit-frame-pointer -Wall -pipe -O2
> -I/data/odysseus/afsudev/usr/include

In particular I'm betting this -I switch is injecting some old-version
ecpg include files into the situation.

Possibly you are building with CPPFLAGS and/or CFLAGS already set in
your environment?  That's sometimes useful but you have to be mighty
careful what you inject into builds that way.

            regards, tom lane