Thread: BUG #4016: Build fails in ecpglib on file extern.h
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
"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