Thread: include compile problems

include compile problems

From
Kris Jurka
Date:
The attached patch makes the tree build for me again after the recent
include changes.  This patch still violates the postgres.h before all
system headers rule and I'm still not sure what changed that broke
everything, but if people need to get work done this may help.

Kris Jurka

Attachment

Re: include compile problems

From
Bruce Momjian
Date:
Patch applied.  Thanks.

---------------------------------------------------------------------------


Kris Jurka wrote:
>
> The attached patch makes the tree build for me again after the recent
> include changes.  This patch still violates the postgres.h before all
> system headers rule and I'm still not sure what changed that broke
> everything, but if people need to get work done this may help.
>
> Kris Jurka

Content-Description:

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: explain analyze is your friend

--
  Bruce Momjian   bruce@momjian.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Re: include compile problems

From
Tom Lane
Date:
Kris Jurka <books@ejurka.com> writes:
> The attached patch makes the tree build for me again after the recent
> include changes.  This patch still violates the postgres.h before all
> system headers rule and I'm still not sure what changed that broke
> everything, but if people need to get work done this may help.

I think that Bruce thought that <math.h> defines INT_MAX and related
symbols, whereas the spec is perfectly clear that they're in
<limits.h>.  However, that's where they are on my machines, and yet CVS
tip is not failing for me.  I'm not clear why not...  What platform
are you using?

            regards, tom lane

Re: include compile problems

From
Bruce Momjian
Date:
Tom Lane wrote:
> Kris Jurka <books@ejurka.com> writes:
> > The attached patch makes the tree build for me again after the recent
> > include changes.  This patch still violates the postgres.h before all
> > system headers rule and I'm still not sure what changed that broke
> > everything, but if people need to get work done this may help.
>
> I think that Bruce thought that <math.h> defines INT_MAX and related
> symbols, whereas the spec is perfectly clear that they're in
> <limits.h>.  However, that's where they are on my machines, and yet CVS
> tip is not failing for me.  I'm not clear why not...  What platform
> are you using?

What happened is that an include file had #include <math.h>, but didn't
need it, so when it was removed, it had to be added to a few C files.
Not sure why limit.h is involved though, but the include trimming does
sometimes have that affect because limit was used somewhere else.

This is why the cleaning isn't done for every release.

--
  Bruce Momjian   bruce@momjian.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Re: include compile problems

From
Kris Jurka
Date:

On Fri, 14 Jul 2006, Tom Lane wrote:

> I think that Bruce thought that <math.h> defines INT_MAX and related
> symbols, whereas the spec is perfectly clear that they're in
> <limits.h>.  However, that's where they are on my machines, and yet CVS
> tip is not failing for me.  I'm not clear why not...  What platform
> are you using?
>

I tested on Solaris 9 with Sun compiler and Debian unstable with
gcc-4.1.1.  Debian only failed on contrib while Solaris failed on both
core and contrib.

Kris Jurka

Re: include compile problems

From
Tom Lane
Date:
Bruce Momjian <bruce@momjian.us> writes:
> Patch applied.  Thanks.

I suspect the point was that limits.h is needed *instead of* math.h,
not *in addition to*.  How many of those headers had math.h before?

            regards, tom lane

Re: include compile problems

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> > Patch applied.  Thanks.
>
> I suspect the point was that limits.h is needed *instead of* math.h,
> not *in addition to*.  How many of those headers had math.h before?

The issue was that an include file included another include file that
had math.h, but that include wasn't needed, so when it was removed, a C
file including the first file didn't have math.h anymore.  (I didn't
actually check system include file usage because that is
platform-specific).

Anyway, thanks for the patch you made, and glad you looked at the system
includes, which I did not.

--
  Bruce Momjian   bruce@momjian.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +