Esto permitirá la instalación de data.table en sistemas/compiladores que no admitan openmp, incluso si el archivo Makeconf del sitio define SHLIB_OPENMP_CFLAGS
. Este es el caso en macOS a partir de R 3.4.0 con el compilador de sonido predeterminado.
Algo como lo siguiente debería ser suficiente, tenga en cuenta que ifeq
es una extensión GNU make, por lo que deberá anotarlo en su DESCRIPTION
```concha
CXX11=$(shell "${R_HOME}"/bin/R CMD configuración CXX11)
ifeq ($(shell $(CXX11) -fopenmp -E -xc++ - 2>&1 >/dev/null && echo 'true'), verdadero)
PKG_CFLAGS=$(SHLIB_OPENMP_CFLAGS)
PKG_LIBS=$(SHLIB_OPENMP_CFLAGS)
terminara si
Este problema actualmente bloquea el uso de data.table
en Mac con la versión de desarrollo de R
, que a su vez bloquea una serie de otros paquetes y, a su vez, el desarrollo y la actualización de paquetes:
> sessionInfo()
R Under development (unstable) (2017-05-26 r72742)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.5
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets
[6] methods base
loaded via a namespace (and not attached):
[1] compiler_3.5.0 tools_3.5.0
Solo una nota de que esto todavía causa problemas (por ejemplo, este nuevo en la comunidad R), particularmente después de una nueva versión cuando CRAN aún no ha creado un binario. Ahora que está utilizando un script de configuración (https://github.com/Rdatatable/data.table/pull/3951), podría valer la pena agregar esta prueba al script de configuración para que la compilación funcione con la cadena de herramientas nativa de macOS (aunque sin paralelización).
@jimhester Gracias por la nota. Pensé que ya funcionaba con compiladores sin openmp, y eso está comprobado en CRAN_Release.cmd aquí: https://github.com/Rdatatable/data.table/blob/b2d618ce291a50872e10fc1ca7137faa8484005a/.dev/CRAN_Release.cmd#L183. Pero claramente estoy equivocado y eso no es suficiente. Trataré de entender lo que dices y sugieres.
Me siento un poco frustrado con las afirmaciones de los usuarios de que data.table está bloqueando cualquier cosa. MacOS es el problema... ¿por qué no incluye openmp por defecto? Todo funciona sin problemas en Linux y Windows.
Comentario más útil
Solo una nota de que esto todavía causa problemas (por ejemplo, este nuevo en la comunidad R), particularmente después de una nueva versión cuando CRAN aún no ha creado un binario. Ahora que está utilizando un script de configuración (https://github.com/Rdatatable/data.table/pull/3951), podría valer la pena agregar esta prueba al script de configuración para que la compilación funcione con la cadena de herramientas nativa de macOS (aunque sin paralelización).