Skip to content
Back to formatted view

Raw Message

Message-ID: <4CA8B16D.901@gmail.com>
Date: 2010-10-03T16:38:05Z
From: Peter Dalgaard
Subject: R-beta_2010-10-02_r53128 fails to compile on FreeBSD
In-Reply-To: <alpine.LFD.2.00.1010031654440.25405@gannet.stats.ox.ac.uk>

On 10/03/2010 05:58 PM, Prof Brian Ripley wrote:
> On Sun, 3 Oct 2010, Rainer Hurling wrote:
> 
> ...
>>>> Is this a known error? I would really appreciate if someone could give
>>>> me a hint.
>>>
>>> Not known, and as it is a POSIX construction almost all OSes have it.
>>
>> Hmmm. It seems its implementation in FreeBSD (CURRENT) is a little different 
>> from other OSes?
>>
>>> Can you try (in sysutils.c and sys-unix.c) replacing
>>>
>>> #ifdef HAVE_SYS_WAIT_H
>>>
>>> by
>>>
>>> #if defined(HAVE_SYS_WAIT_H) && defined(WEXITSTATUS)
>>>
>>> ?
>>
>> Yes, with this patch in both files all works again. I tried it with gcc-4.4.5 
>> and gcc-4.5.2. Is there any chance to get it in the release (R-2.12.0)?
> 
> Yes, of course.  (After a little more testing on other platforms.)
> 

Only it strikes me that it might be plugging the wrong hole. I.e., that
the real issue is that somehow we're not including sys/wait.h in all
cases. Would it perchance also work to have

#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
#endif

somewhere at the top of the files that use the two macros (sysutils.c
and sys-unix.c AFAICS).

"&& defined(WEXITSTATUS)" probably won't break anything that wasn't
already broken, but it does insert a default definition that could
conflict with the one intended for the OS (that's what include files and
macros are for, after all).




-- 
Peter Dalgaard
Center for Statistics, Copenhagen Business School
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com