Re: 7.0.2 on Solaris - Mailing list pgsql-hackers

From Tom Lane
Subject Re: 7.0.2 on Solaris
Date
Msg-id 14342.962171809@sss.pgh.pa.us
Whole thread Raw
In response to 7.0.2 on Solaris  (pgsql-hackers@thewrittenword.com)
Responses Re: 7.0.2 on Solaris
List pgsql-hackers
pgsql-hackers@thewrittenword.com writes:
> 1. I'm curious why src/template/solaris_sparc_cc contains:
>   -DDISABLE_COMPLEX_MACRO

Presumably because the Solaris Sparc compiler was once broken.
Dunno how long ago that was, but I have no objection to removing
the -D switch if it seems to work on not-too-ancient copies.
How recent is your Solaris?

> The reason for this is because nocachegetattr becomes a function when
> DISABLE_COMPLEX_MACRO is defined (nocachegetattr is defined in
> src/backend/access/common/heaptuple.c).

> The first patch below removes this macro from
> src/templates/solaris_sparc_cc.

It's broken all right, but that's no fix --- it just masks the problem
on your platform.  The breakage is that somebody decided a static
function definition in an include file is a cool idea.  Not when the
include file is included by non-backend modules ... the non-macro
definition of fastgetattr() needs to be made a plain extern routine.

> 3. Why is NAN defined in src/include/solaris_i386.h as:
> #define                            NAN     (*(__const double *) __nan)
> #endif   /* GCC.  */
> if the compiler is not GCC? The Solaris C compiler does not like this.
> I removed it and the compilation succeeded.

Hmm, I think this needs more investigation.  Removing a definition of
NAN that's inside "#ifndef NAN" cannot cause things to work unless there
is an order dependency with another definition of NAN.  Perhaps we need
to be rearranging header includes or some such.  Again, it seems like
the true issue might affect more than just solaris.

> 4. I moved some of the information out of
> src/interfaces/libpq++/Makefile.in into src/Makefile.shlib where it
> belongs. Assuming that CXXFLAGS should take on the shared library
> flags for CFLAGS_SL is wrong though.

Nope, try again.  Your change breaks things for all non-C++ shared libs,
because it changes AR and LD to C++-suitable definitions for *all* shlib
modules not just C++ modules.  That might happen to work on your
installation but it's a recipe for trouble.  The reason that the C++
info is in src/interfaces/libpq++/Makefile.in is that that's where it
belongs, to avoid messing up non-C++ modules.  (If we had more than one
C++ shlib I'd be more excited about figuring out how to keep the info in
Makefile.shlib, but as things stand I think leaving it out is the path
of least resistance.)

>    b) Added --with-readline=DIR to check for readline in DIR.

What for?  We have --with-includes and --with-libs; shall we now
add a custom "--with-libfoo" option for every single library we
depend on?  This seems like useless clutter.

Some of the other changes look good but I'm not in a position to
separate them out from the less-good stuff...
        regards, tom lane


pgsql-hackers by date:

Previous
From: pgsql-hackers@thewrittenword.com
Date:
Subject: 7.0.2 on Solaris
Next
From: Peter Mount
Date:
Subject: RE: Big 7.1 open items