Skip to content

Compiling packages from source under Mojave (10.14.x)

8 messages · Roy Mendelssohn - NOAA Federal, Kevin Ushey, Charles C. Berry +2 more

#
Roy,

thanks, but can you give some details? I'm on a Mojave system and don't see any issues - this will likely depend on your Xcode installation. Does it mean some Xcode version is lacking headers? Which version, how did you install it?

Thanks,
Simon
#
Hi Simon:

here goes.  I was running 10.13.xx,  xx being whatever was the most recent version.  I was compiling packages from source no problem.  Also,  the Upgrade Section of App Store was telling me there was an incompatible version of software available,  which was a new version of Xcode.

I upgraded to 10.14.4,  by the usual means,  did nothing special.

Upgrades in App Store said there was a new version of Xcode (among other things).  So installed that.

Ran Xcode,  so that it would install "Other Components" which it often does with a new version.

To be certain I had the Command lIne Tools,  in a terminal I ran:   sudo xcode-select --install

Next time I ran RStudio,  two package upgrades were from source  (I apologize I don't remember which packages).  Compilation failed with errors of couldn't find the appropriate header files.

Ran the command in my note.

Restarted RStudio,  asked it to check for package updates,  same packages appeared,  compilation went fine.

I am running Xcode 10.2

HTH,

-Roy
**********************
"The contents of this message do not reflect any position of the U.S. Government or NOAA."
**********************
Roy Mendelssohn
Supervisory Operations Research Analyst
NOAA/NMFS
Environmental Research Division
Southwest Fisheries Science Center
***Note new street address***
110 McAllister Way
Santa Cruz, CA 95060
Phone: (831)-420-3666
Fax: (831) 420-3980
e-mail: Roy.Mendelssohn at noaa.gov www: http://www.pfeg.noaa.gov/

"Old age and treachery will overcome youth and skill."
"From those who have been given much, much will be expected" 
"the arc of the moral universe is long, but it bends toward justice" -MLK Jr.
#
Roy,

great, thanks, I'll try to replicate that. I'm really surprised that an upgrade would delete headers - that's very unfriendly to say the least ;). I did upgrade Mojave but I did not upgrade Xcode (newer version tend to break more and more things) so that's maybe why I didn't see it.

Thanks,
Simon
#
Yes I had a feeling that the Xcode update did it,  which is why I included that fact.  The upgrade must have also zapped someone else,  because that note was in the R Admin and Install Doc.  I am not even quite certain all that command does,  just know the problem magically went away.

-Roy
**********************
"The contents of this message do not reflect any position of the U.S. Government or NOAA."
**********************
Roy Mendelssohn
Supervisory Operations Research Analyst
NOAA/NMFS
Environmental Research Division
Southwest Fisheries Science Center
***Note new street address***
110 McAllister Way
Santa Cruz, CA 95060
Phone: (831)-420-3666
Fax: (831) 420-3980
e-mail: Roy.Mendelssohn at noaa.gov www: http://www.pfeg.noaa.gov/

"Old age and treachery will overcome youth and skill."
"From those who have been given much, much will be expected" 
"the arc of the moral universe is long, but it bends toward justice" -MLK Jr.
#
I also recall after updating to Xcode 10.2 on my Mojave machine that
the system headers normally installed at /usr/include had vanished,
and re-installing the headers with the aforementioned package at
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
fixed things up. So I would echo the sentiment that it would be
helpful to have a note :-)

On Thu, Apr 4, 2019 at 2:09 PM Roy Mendelssohn - NOAA Federal via
R-SIG-Mac <r-sig-mac at r-project.org> wrote:
#
FWIW, 

I had the same experience - updated to 10.14.4 and got a Command Line Tools update and then found /usr/include wiped clean.
#
On 04/04/2019 22:37, Kevin Ushey wrote:
This is documented in the manual, including that updating CLT wiped out 
the headers in /usr/include: 
https://cran.r-project.org/doc/manuals/r-devel/R-admin.html#macOS .

On my Mojave system the OS update to 10.14.4 updated the CLT without 
asking separately.

Note too that the fix to reinstate the headers is hinted by Apple to be 
for 10.14 only, so the alternative (to set CPPFLAGS) may be preferable.

  
    
#
Thanks, I have finally traced it down. It is a combination of the removal of headers from system location *and* our custom toolchain. Apple's macOS 10.14 clang builds automatically insert the path to the SDK:

"/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.14.0 [...] -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk [...]

#include <...> search starts here:
 /usr/local/include
 /Library/Developer/CommandLineTools/usr/lib/clang/10.0.0/include
 /Library/Developer/CommandLineTools/usr/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks (framework directory)

Whereas out clang6 build uses the system location:

#include <...> search starts here:
 /usr/local/include
 /usr/local/clang6/lib/clang/6.0.0/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)

So, similar to the R-admin suggestions all that's needed is
-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
and hope that Apple will maintain the non-versioned symlink to the SDK. I'll see if I can release a new build of clang that will use it automatically. From my tests so far that location is valid all the way down to 10.11 so should work for us.

Probably the fastest fix for now if you just need to install a package is to set
PKG_CPPFLAGS='-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk'

It will work as long as you use the command line tools (recommended) - if you use Xcode directly you may need to check its location with xcrun --show-sdk-path

Cheers,
Simon