Thread: Trouble building 8.1.1 on Tru64 UNIX 5.1

Trouble building 8.1.1 on Tru64 UNIX 5.1

From
Albert Chin
Date:
While building 8.1.1 on Tru64 UNIX 5.1:
gmake[5]: Leaving directory `/opt/build/postgresql-8.1.1/src/port'
cc -O2 -ieee -msym -readonly_strings -pthread  --thread-safe
-D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS -I./../include
-I. -I../../../../src/include -I/opt/TWWfsw/gettext014/include
-I/opt/TWWfsw/readline50/include -I/opt/TWWfsw/libopenssl097/include
-I/opt/TWWfsw/zlib11/include -I/opt/TWWfsw/tcl84/include
-I/opt/TWWfsw/tk84/include -DMAJOR_VERSION=4 -DMINOR_VERSION=1
-DPATCHLEVEL=1  -c -o preproc.o preproc.c
cc: Error: /usr/include/arpa/nameser_compat.h, line 154: Invalid
declarator. (declarator)
} HEADER;
--^

The problem is that /usr/include/arpa/nameser_compat.h defines a
struct named HEADER. This conflicts with the use of preproc.y in
src/interfaces/ecpg/preproc/preproc.y.

What should it be renamed to?

-- 
albert chin (china@thewrittenword.com)


Re: Trouble building 8.1.1 on Tru64 UNIX 5.1

From
Tom Lane
Date:
Albert Chin <pgsql-hackers@mlists.thewrittenword.com> writes:
> The problem is that /usr/include/arpa/nameser_compat.h defines a
> struct named HEADER. This conflicts with the use of preproc.y in
> src/interfaces/ecpg/preproc/preproc.y.

> What should it be renamed to?

Perhaps a more relevant question is why ecpg/preproc is including
that header.
        regards, tom lane


Re: Trouble building 8.1.1 on Tru64 UNIX 5.1

From
Albert Chin
Date:
On Mon, Dec 19, 2005 at 05:59:12PM -0500, Tom Lane wrote:
> Albert Chin <pgsql-hackers@mlists.thewrittenword.com> writes:
> > The problem is that /usr/include/arpa/nameser_compat.h defines a
> > struct named HEADER. This conflicts with the use of preproc.y in
> > src/interfaces/ecpg/preproc/preproc.y.
> 
> > What should it be renamed to?
> 
> Perhaps a more relevant question is why ecpg/preproc is including
> that header.

#include <netdb.h> with -D_REENTRANT includes it. preproc.c:   #include "postgres_fe.h"     #include "c.h"
#include"port.h"          #include <netdb.h>
 

ADD has the same problem.

-- 
albert chin (china@thewrittenword.com)


Re: Trouble building 8.1.1 on Tru64 UNIX 5.1

From
Tom Lane
Date:
Albert Chin <pgsql-hackers@mlists.thewrittenword.com> writes:
> On Mon, Dec 19, 2005 at 05:59:12PM -0500, Tom Lane wrote:
>> Perhaps a more relevant question is why ecpg/preproc is including
>> that header.

> #include <netdb.h> with -D_REENTRANT includes it.
>   preproc.c:
>     #include "postgres_fe.h"
>       #include "c.h"
>         #include "port.h"
>            #include <netdb.h>

Well, port.h is certainly doing a fine job of polluting the namespace.
Maybe we should pull out the stuff that depends on netdb.h and pwd.h
into some other header that isn't going to get included so widely.

> ADD has the same problem.

There's no way that we are going to be able to dodge every single symbol
that any random system header on any random platform might define ---
especially when you get into the less-well-standardized headers like
these.  We have to think smaller in terms of what headers we include
everywhere.
        regards, tom lane


Re: Trouble building 8.1.1 on Tru64 UNIX 5.1

From
Albert Chin
Date:
On Mon, Dec 19, 2005 at 06:34:38PM -0500, Tom Lane wrote:
> Albert Chin <pgsql-hackers@mlists.thewrittenword.com> writes:
> > On Mon, Dec 19, 2005 at 05:59:12PM -0500, Tom Lane wrote:
> >> Perhaps a more relevant question is why ecpg/preproc is including
> >> that header.
> 
> > #include <netdb.h> with -D_REENTRANT includes it.
> >   preproc.c:
> >     #include "postgres_fe.h"
> >       #include "c.h"
> >         #include "port.h"
> >            #include <netdb.h>
> 
> Well, port.h is certainly doing a fine job of polluting the namespace.
> Maybe we should pull out the stuff that depends on netdb.h and pwd.h
> into some other header that isn't going to get included so widely.
> 
> > ADD has the same problem.
> 
> There's no way that we are going to be able to dodge every single symbol
> that any random system header on any random platform might define ---
> especially when you get into the less-well-standardized headers like
> these.  We have to think smaller in terms of what headers we include
> everywhere.

Well, we've built on most versions of Solaris, HP-UX, AIX, Tru64 UNIX,
Redhat Linux, and IRIX and this is the only symbol conflict we ran
into. So, it's not a big problem.

-- 
albert chin (china@thewrittenword.com)