oracle / fastr

A high-performance implementation of the R programming language, built on GraalVM.
Other
624 stars 64 forks source link

Installation of ggplot2 fails because of mgcv on macOS #184

Open fniephaus opened 3 years ago

fniephaus commented 3 years ago

Repro: R -e 'install.packages("ggplot2")'

Here's the error:

installing to /Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/library/00LOCK-mgcv/00new/mgcv/libs
** R
** data
** inst
** byte-compile and prepare package for lazy loading
Error in polyglot evaluation : dlopen(/Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/library/nlme/libs/nlme.so, 6): Library not loaded: /cm/shared/apps/gcc/8.3.0/lib/libgfortran.5.dylib
  Referenced from: /Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/library/nlme/libs/nlme.so
  Reason: image not found
Error in polyglot evaluation : dlopen(/Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/library/nlme/libs/nlme.so, 6): Library not loaded: /cm/shared/apps/gcc/8.3.0/lib/libgfortran.5.dylib
  Referenced from: /Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/library/nlme/libs/nlme.so
  Reason: image not found
ERROR: lazy loading failed for package ‘mgcv’

I was able to fix this by running the following commands as a workaround:

$ install_name_tool -change "/cm/shared/apps/gcc/8.3.0/lib/libgfortran.5.dylib" "/Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/lib/libgfortran.5.dylib" /Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/library/nlme/libs/nlme.so
$ install_name_tool -change "/cm/shared/apps/gcc/8.3.0/lib/libquadmath.0.dylib" "/Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/lib/libquadmath.0.dylib" /Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/library/nlme/libs/nlme.so
$ install_name_tool -change "/cm/shared/apps/gcc/8.3.0/lib/libgcc_s.1.dylib" "/Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/lib/libgcc_s.1.dylib" /Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/library/nlme/libs/nlme.so
$ install_name_tool -change "/cm/shared/apps/gcc/8.3.0/lib/libgfortran.5.dylib" "/Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/lib/libgfortran.5.dylib" /Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/library/Matrix/libs/Matrix.so
$ install_name_tool -change "/cm/shared/apps/gcc/8.3.0/lib/libquadmath.0.dylib" "/Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/lib/libquadmath.0.dylib" /Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/library/Matrix/libs/Matrix.so
$ install_name_tool -change "/cm/shared/apps/gcc/8.3.0/lib/libgcc_s.1.dylib" "/Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/lib/libgcc_s.1.dylib" /Users/fniephaus/bin/graalvm-ce-java11-21.1.0/Contents/Home/languages/R/library/Matrix/libs/Matrix.so
mik3hall commented 3 years ago

The same is necessary for install.packages("xgboost") for libgfortran and libquadmath in graalvm-ce-java11-21.2.0-dev/Contents/Home/languages/R/library/Matrix/libs/Matrix.so I used the dev because of an internal error in 21.1.0 which dev appears to fix except for the name changes.