From rhurlin at gwdg.de  Thu Feb  9 14:58:20 2017
From: rhurlin at gwdg.de (Rainer Hurling)
Date: Thu, 9 Feb 2017 14:58:20 +0100
Subject: [Rd] changes in src/unix/system.c break builds on FreeBSD
In-Reply-To: <d5f7f3cb-2fa6-f1fe-759a-321e067fb6a2@stats.ox.ac.uk>
References: <8b4743f2-d289-246a-9d82-68b97d8d065a@gwdg.de>
	<d5f7f3cb-2fa6-f1fe-759a-321e067fb6a2@stats.ox.ac.uk>
Message-ID: <ed062707-cb4e-f5af-273c-f6c23899b321@gwdg.de>

Am 09.02.2017 um 13:14 schrieb Prof Brian Ripley:
> On 09/02/2017 11:44, Rainer Hurling wrote:
>> Dear R devs,
>>
>> For some days now (~ February, 4th), I am not able to build the recent
>> tarballs of R-devel on a FreeBSD test box anymore. The breakage seems to
>> be related to the newest overhaul of src/unix/system.c:
>>
>>
>> [..snip..]
>> gcc49 -std=gnu99 -I. -I../../src/include -I../../src/include
>> -I/usr/local/include -DLIBICONV_PLUG -I/usr/local/include -isystem
>> /usr/local/include -DHAVE_CONFIG_H  -fopenmp -fpic  -O2 -pipe
>> -DLIBICONV_PLUG -fstack-protector -Wl,-rpath=/usr/local/lib/gcc49
>> -isystem /usr/local/include -fno-strict-aliasing -c system.c -o system.o
>> system.c: In function 'Rf_initialize_R':
>> system.c:213:13: error: 'RLIM_SAVED_CUR' undeclared (first use in this
>> function)
>>   if (lim == RLIM_SAVED_CUR || lim == RLIM_SAVED_MAX)
>>              ^
>> system.c:213:13: note: each undeclared identifier is reported only once
>> for each function it appears in
>> system.c:213:38: error: 'RLIM_SAVED_MAX' undeclared (first use in this
>> function)
>>   if (lim == RLIM_SAVED_CUR || lim == RLIM_SAVED_MAX)
>>                                       ^
>> system.c: In function 'R_GetFDLimit':
>> system.c:509:13: error: 'RLIM_SAVED_CUR' undeclared (first use in this
>> function)
>>   if (lim == RLIM_SAVED_CUR || lim == RLIM_SAVED_MAX)
>>              ^
>> system.c:509:38: error: 'RLIM_SAVED_MAX' undeclared (first use in this
>> function)
>>   if (lim == RLIM_SAVED_CUR || lim == RLIM_SAVED_MAX)
>>                                       ^
>> *** Error code 1
>>
>> Stop.
>> make[5]: stopped in /usr/ports/math/R-devel/work/R-devel/src/unix
>>
>>
>> Perhaps someone can give me a hint, want to do next?
> 
> Let us know (which you have).  This appears to be a lack of POSIX
> compliance on FreeBSD (even POSIX 2004, the current link being
> http://pubs.opengroup.org/onlinepubs/9699919799/functions/getrlimit.html),
> so was unexpected and you ought to file a FreeBSD bug report.

This is a valuable hint for me, thanks.

In the meantime Mikko Korpela noted, that there already exists a FreeBSD
bugzilla report, which tries to implement the two missing definitions.
But there seems to be a problem with the 64 bit signed format of
RLIM_INFINITY, which was discussed, but not solved.

I will try to restart the discussion of that report and to push it
towards a solution.

> 
> I'll add a workaround in R-devel in r72147: let us know if that does not
> suffice.

Many thanks for the very quick help with this workaround. It works for
me at a recent FreeBSD 12.0-CURRENT amd64 box.

First small tests do not indicate, that there is a regression with it.

> 
>>
>> Please let me know, if I should provide more information or can test
>> something.
>>
>> Many thanks in advance,
>> Rainer Hurling



[Rd] changes in src/unix/system.c break builds on FreeBSD
Rainer Hurling