Hi Ross,

I hope you don't mind that I CC the list and Krzysztof who needed
the line which caused the problem on your side.

On Tue, Mar 02, 2010 at 05:36:05PM -0500, Ross West wrote:
> 
> WT> Please tell me if the above works. If so, just send me a patch and I'll
> WT> happily apply it. I still have to start my Sun in order to fix the build
> WT> on Solaris, and I'd like to release 1.4.1 with those build fixes in it.
> 
> The two additions didn't work, but I've tracked it down.  The good
> news is that it's not really your bug, but FreeBSD's, which got fixed
> in 8.0.
> 
> The issue is the inclusion of the "#define _XOPEN_SOURCE 500" in
> auth.c.

Hehe interesting, I just converged to the same line for the solaris
build issue.

>  On older FB versions (ie: below 8.0), it triggers a change in
> sys/types.h to not include sys/select.h.  sys/time.h was modified
> starting in FB 8.0+ to include sys/select.h always.
> 
> Basically as someone else mentioned: "The problem lies in FreeBSD's
> headers, which don't implement namespace separation correctly."
> 
> In which case I'll just write a simple patch that I'll include with
> the port build which can add an "#include <sys/select.h>" line to
> auth.c for older OS versions.

Well, we're on pretty standard code and I'd rather avoid as much as
possible OS version tests on such code, as we all know how it ends
up in unmanageable chunks of code depending on autoconf and making
us all pull off our hair.

I also don't like adding an include which is unrelated to the parts
used by a C file. However we may need that include into the file
which needs it (standard.h at least since it's the one making use
of fd_set).

If it's the XOPEN_SOURCE line which is causing these issues, either
we manage to push it a bit below, which will make things work by
pure luck, or we find how to get rid of it, which would be preferred,
considering that this line alone apparently breaks solaris and
freebsd, which does not surprize me much given the bad experiences
I had with such defines :-/

> IMHO, it's not really your bug to fix.

Well, it is if we break several platforms to try to fix a warning
on another one. Maybe it's the another one which is buggy instead.
Also if we only need this line to get crypt() to be defined on some
linux platforms, maybe we can also define it ourselves.

Thanks,
Willy


Reply via email to