[R-SIG-Mac] Xcode 9

peter dalgaard pdalgd at gmail.com
Wed Sep 27 10:32:17 CEST 2017


> On 27 Sep 2017, at 08:43 , Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
> 
> On 27/09/2017 03:28, Kasper Daniel Hansen wrote:
>> I don't see this with
>>   Xcode 9
>>   OS X Sierra (10.12.6)
>> and either
>> R Under development (unstable) (2017-09-26 r73351) -- "Unsuffered
>> Consequences"
>> Copyright (C) 2017 The R Foundation for Statistical Computing
>> Platform: x86_64-apple-darwin16.7.0 (64-bit)
>> or
>> R version 3.4.2 RC (2017-09-26 r73351) -- "Short Summer"
>> Copyright (C) 2017 The R Foundation for Statistical Computing
>> Platform: x86_64-apple-darwin16.7.0 (64-bit)
>> Specifically I can compile R and it passes make check.  Perhaps it got
>> fixed since the post.
> 
> It did (look at the logs for r73347 and r73351), but also we have discovered that not all upgrades to Xcode 9 had the problem.
> 

Yes. My home desktop machine updated command line tools only and didn't see the problem. The laptop wants to upgrade the full Xcode (no idea how that came to be...) but claims to need another 1.66GB of disk to upgrade, so it is probably not in the cards to check a build there just now. The work machine had the problem until I downgraded to Xcode 8.3.3, but as this is the machine building the actual release, I'm not touching it until some weeks after the 3.4.2 release.

Right now, we just override the configure detected utimensat() declaration on all Macs, which should be harmless (also on High Sierra, although we wouldn't claim to support an OS which was unreleased at the code freeze). We'll think of a better fix --- it looks like the Curl developers have fixed a similar issue, so we can copy their approach.

> While we are at it, there is a problem with finding the default time zone on High Sierra.  This is worked around already in R-devel and will be in 3.4.2 patched: until then setting TZ is a good workaround (and that is in the R-admin manual for 3.4.2 RC).
> 
>> On Fri, Sep 22, 2017 at 4:47 AM, peter dalgaard <pdalgd at gmail.com> wrote:
>>> Just a quick note: Xcode 9 will not presently create a working R on Sierra
>>> or earlier.
> 
> (I don't believe Xcode 9 is available for 'earlier'.)

You're probably right. I wasn't sure when I wrote that (& also not sure whether one could cross-compile.)

-pd

> 
>>> 
>>> This is because it ships with an SDK for 10.13 (unreleased) and defines an
>>> entry for utimensat(), which is not actually in the system library for
>>> earlier versions.
>>> 
>>> There is no way we can fix this reliably for the upcoming 3.4.2 release,
>>> so if you intend to build R from sources, either
>>> 
>>> - just do not upgrade, stay on Xcode 8.3.3
>>> 
>>> or
>>> 
>>> - manually remove the line from config.h saying
>>> 
>>> #define HAVE_UTIMENSAT 1
>>> 
>>> 
>>> ----
>>> 
>>> The slightly longer story is that Apple decided to have their include
>>> files generate a _warning_ that utimensat() is only available in 10.13,
>>> like this:
>>> 
>>> gcc -I../../../R/src/extra  -I. -I../../src/include
>>> -I../../../R/src/include  -I/usr/local/include -I../../../R/src/nmath
>>> -DHAVE_CONFIG_H     -g -O2  -c ../../../R/src/main/platform.c -o platform.o
>>> ../../../R/src/main/platform.c:2474:5: warning: 'utimensat' is only
>>> available on
>>>       macOS 10.13 or newer [-Wunguarded-availability-new]
>>>     utimensat(AT_FDCWD, to, times, 0);
>>>     ^~~~~~~~~
>>> /Applications/Xcode.app/Contents/Developer/Platforms/
>>> MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/stat.h:374:5:
>>> note:
>>>       'utimensat' has been explicitly marked partial here
>>> int     utimensat(int __fd, const char *__path, const struct timespec __...
>>>         ^
>>> ../../../R/src/main/platform.c:2474:5: note: enclose 'utimensat' in a
>>>       __builtin_available check to silence this warning
>>>     utimensat(AT_FDCWD, to, times, 0);
>>>     ^~~~~~~~~
>>> ../../../R/src/main/platform.c:2890:11: warning: 'utimensat' is only
>>> available
>>>       on macOS 10.13 or newer [-Wunguarded-availability-new]
>>>     res = utimensat(AT_FDCWD, fn, times, 0) == 0;
>>>           ^~~~~~~~~
>>> /Applications/Xcode.app/Contents/Developer/Platforms/
>>> MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/stat.h:374:5:
>>> note:
>>>       'utimensat' has been explicitly marked partial here
>>> int     utimensat(int __fd, const char *__path, const struct timespec __...
>>>         ^
>>> ../../../R/src/main/platform.c:2890:11: note: enclose 'utimensat' in a
>>>       __builtin_available check to silence this warning
>>>     res = utimensat(AT_FDCWD, fn, times, 0) == 0;
>>>           ^~~~~~~~~
>>> 2 warnings generated.
>>> 
>>> Because of dynamic linking, we do not see the effect of this until we
>>> actually try running the binary:
>>> 
>>> begin installing recommended package MASS
>>> dyld: lazy symbol binding failed: Symbol not found: _utimensat
>>>   Referenced from: /Users/pd/r-release-branch/BUILD-dist/bin/exec/x86_64/R
>>>   Expected in: /usr/lib/libSystem.B.dylib
>>> 
>>> dyld: Symbol not found: _utimensat
>>>   Referenced from: /Users/pd/r-release-branch/BUILD-dist/bin/exec/x86_64/R
>>>   Expected in: /usr/lib/libSystem.B.dylib
>>> 
>>> /Users/pd/r-release-branch/BUILD-dist/bin/INSTALL: line 34: 59149 Done
>>>                 echo 'tools:::.install_packages()'
>>>      59150 Abort trap: 6           | R_DEFAULT_PACKAGES= LC_COLLATE=C
>>> "${R_HOME}/bin/R" $myArgs --slave --args ${args}
>>> 
>>> 
>>> Same warning also happens during the configure checks, but as it is not an
>>> error the test program compiles and links OK (but is never run), and we get
>>> 
>>> checking whether utimensat exists and is declared... yes
>>> 
>>> Ugh!...
>>> 
>>> 
>>> - Peter D.
>>> 
>>> 
>>> --
>>> Peter Dalgaard, Professor,
>>> Center for Statistics, Copenhagen Business School
>>> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
>>> Phone: (+45)38153501
>>> Office: A 4.23
>>> Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
>>> 
>>> _______________________________________________
>>> R-SIG-Mac mailing list
>>> R-SIG-Mac at r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>> 
>> 	[[alternative HTML version deleted]]
>> _______________________________________________
>> R-SIG-Mac mailing list
>> R-SIG-Mac at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
> 
> 
> -- 
> Brian D. Ripley,                  ripley at stats.ox.ac.uk
> Emeritus Professor of Applied Statistics, University of Oxford
> 
> _______________________________________________
> R-SIG-Mac mailing list
> R-SIG-Mac at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-mac

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-SIG-Mac mailing list