[R-SIG-Mac] Xcode 9
Prof Brian Ripley
ripley at stats.ox.ac.uk
Wed Sep 27 08:43:29 CEST 2017
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.
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'.)
>>
>> 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
More information about the R-SIG-Mac
mailing list