2

I'm trying to install an R package called treatSens with conda to use it in Jupyter notebook. The commands I executed:

conda install conda-build conda skeleton cran treatSens conda build r-treatsens conda install -c local r-treatsens

And I got the error about C compiler

* installing *source* package ‘dbarts’ ...
** package ‘dbarts’ successfully unpacked and MD5 sums checked
checking for gcc... x86_64-apple-darwin13.4.0-clang
checking whether the C compiler works... no
configure: error: in `/Users/myusername/anaconda3/conda-bld/r-dbarts_1543961434509/myenvname':
configure: error: C compiler cannot create executables
See `config.log' for more details
ERROR: configuration failed for package ‘dbarts’

My clang version:

clang version 4.0.1 (tags/RELEASE_401/final)
Target: x86_64-apple-darwin18.2.0
Thread model: posix
InstalledDir: /Users/myusername/anaconda3/envs/myenvname/bin

Looking into the config.log file I see

configure:3570: x86_64-apple-darwin13.4.0-clang -V >&5
clang-4.0: error: argument to '-V' is missing (expected 1 value)
clang-4.0: error: no input files
configure:3581: $? = 1
configure:3570: x86_64-apple-darwin13.4.0-clang -qversion >&5
clang-4.0: error: unknown argument: '-qversion'
clang-4.0: error: no input files
configure:3581: $? = 1
configure:3601: checking whether the C compiler works
configure:3623: x86_64-apple-darwin13.4.0-clang -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -I/Users/myusername/anaconda3/envs/work/conda-bld/r-dbarts_1543961045662/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/include -fdebug-prefix-map=/Users/myusername/anaconda3/envs/work/conda-bld/r-dbarts_1543961045662/work=/usr/local/src/conda/r-dbarts-0.9_5 -fdebug-prefix-map=/Users/myusername/anaconda3/envs/work/conda-bld/r-dbarts_1543961045662/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol=/usr/local/src/conda-prefix -D_FORTIFY_SOURCE=2 -mmacosx-version-min=10.9 -I/Users/myusername/anaconda3/envs/work/conda-bld/r-dbarts_1543961045662/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/include -Wl,-pie -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,/Users/myusername/anaconda3/envs/work/conda-bld/r-dbarts_1543961045662/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/lib -L/Users/myusername/anaconda3/envs/work/conda-bld/r-dbarts_1543961045662/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/lib conftest.c  >&5
ld: warning: ignoring file /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib/libSystem.tbd, file was built for unsupported file format ( 0x2D 0x2D 0x2D 0x20 0x21 0x74 0x61 0x70 0x69 0x2D 0x74 0x62 0x64 0x2D 0x76 0x33 ) which is not the architecture being linked (x86_64): /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib/libSystem.tbd
ld: dynamic main executables must link with libSystem.dylib for architecture x86_64
clang-4.0: error: linker command failed with exit code 1 (use -v to see invocation)

It seems it's a problem about Conda build using the certain version of Apple C compiler. My guess is that I need to customize the C compiler for conda build. So my question becomes

  1. What correct gcc version do I need.
  2. How to set it for conda build.
LucasBoatwright
  • 1,456
  • 1
  • 16
  • 20
Logan Yang
  • 2,364
  • 6
  • 27
  • 43
  • I do not have Mojave installed so I cannot try this but in the past I have had issues like these after updating macOS and I had to open up Xcode and click some 'confirm' and 'agree' buttons before I could get everything working again. Might be worth a shot – user5359531 Dec 05 '18 at 17:30
  • It appears your clang is not in a typical location for one thing. Have yopu reviewed the Developer page for Macos R? And have you reviewed this answer to a similar question. https://stackoverflow.com/questions/52509602/cant-compile-c-program-on-a-mac-after-upgrade-to-mojave – IRTFM Dec 05 '18 at 17:48
  • @42- The above is in my conda environment. I tried to install xcode cmd line tools 9.3 and removed the newest version, but I don't know how to make it the compiler for conda install. – Logan Yang Dec 05 '18 at 19:27
  • To further clarify, I can install this package in RStudio with no problem. My problem is with conda. – Logan Yang Dec 05 '18 at 19:28
  • I doubt that conda uses the same environment variables as Rstudio. That’s a common source of confusion for new Rstudio users when they cannot figure out why things work in Terminal-launched R but not in Rstudio. – IRTFM Dec 05 '18 at 22:19

2 Answers2

4

As a quick and dirty workaround (from this comment), I was able to install packages in R using below code in RStudio (opened in conda env)

Sys.setenv(CONDA_BUILD_SYSROOT="/")

Now, you can install any R package via RStudio Console e.g.

install.packages("tidyverse")

Hope this helps.

3

There are several things you must do to get things building properly in MacOS Mojave. For reasons mysterious to me, the Anaconda folks are not keen to make this smooth, which is especially maddening for those of us who use esoteric R packages. I will write what seems current as of 2019-04-20:

1. Install Xcode (v10.2.1)

2. Install headers in the place open source tends to expect finding them. From the command line:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

3. Install the command-line tools

  • As a belt-and braces approach, I downloaded and installed the DMG Command_Line_Tools_macOS_10.14_for_Xcode_10.2.1 from https://developer.apple.com/download/more/
  • I believe this is also what is done by xcode-select --install. If you run that command (once the tools are installed), you should see the message
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

4. Download a copy of older MacOS SDK files. For example, from here

5. Create a directory /opt

sudo mkdir /opt

6. Copy the SDK files there

sudo cp -r ~/Downloads/MacOSX10.9.sdk /opt/

sudo chmod -R a+rX /opt

7. Create a conda_build_config.yaml file that will be referenced by Conda-build and related software. It should contain the following

macos_min_version:
  - 10.9
macos_machine:
  - x86_64-apple-darwin13.4.0
MACOSX_DEPLOYMENT_TARGET:
  - 10.9
CONDA_BUILD_SYSROOT:            # [osx]
  - /opt/MacOSX10.9.sdk          # [osx]

In a terminal you can do that with:

mkdir ~/.conda || echo 'Dir already present'
echo "macos_min_version:" >> ~/.conda/conda_build_config.yaml
echo "  - 10.9" >> ~/.conda/conda_build_config.yaml
echo "macos_machine:" >> ~/.conda/conda_build_config.yaml
echo "  - x86_64-apple-darwin13.4.0" >> ~/.conda/conda_build_config.yaml
echo "MACOSX_DEPLOYMENT_TARGET:" >> ~/.conda/conda_build_config.yaml
echo "  - 10.9" >> ~/.conda/conda_build_config.yaml
echo "CONDA_BUILD_SYSROOT:" >> ~/.conda/conda_build_config.yaml
echo "  - /opt/MacOSX10.9.sdk" >> ~/.conda/conda_build_config.yaml

8. Tell Conda about your YAML file via your .condarc. It should contain the lines:

conda_build:   
  config_file: ~/.conda/conda_build_config.yaml

which can be accomplished using

echo "conda_build:" >> ~/.condarc
echo "  config_file: ~/.conda/conda_build_config.yaml" >> ~/.condarc
Brian B
  • 1,410
  • 1
  • 16
  • 30