Closed mfansler closed 1 month ago
This package does not use RcppParallel but Stan Math Headers. Stan Math Headers took on the RcppParallel and likely needs it to compile.
It could be a reverse linking to...
Okay, makes sense. To double-check it wasn't just us, I did also confirm the binaries on CRAN are also similarly linking:
otool -L rxode2parse.so
rxode2parse.so:
rxode2parse.so (compatibility version 0.0.0, current version 0.0.0)
/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/lib/libRlapack.dylib (compatibility version 4.4.0, current version 4.4.0)
/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/lib/libRblas.dylib (compatibility version 0.0.0, current version 0.0.0)
/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/lib/libgfortran.5.dylib (compatibility version 6.0.0, current version 6.0.0)
/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/lib/libquadmath.0.dylib (compatibility version 1.0.0, current version 1.0.0)
@rpath/libtbb.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libtbbmalloc.dylib (compatibility version 0.0.0, current version 0.0.0)
/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/lib/libR.dylib (compatibility version 4.4.0, current version 4.4.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1775.118.101)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 905.6.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5)
I'm mainly concerned that under the current declarations, installing a precompiled binary will not install RcppParallel
since StanHeaders
is only a LinkingTo declaration. Hence, users could end up encountering cryptic runtime errors, where they are told they need libtbb
but don't realize this is expected to be sourced through RcppParallel
.
On the Conda Forge side, we can add directives to export RcppParallel
as a runtime dependency for other packages whenever StanHeaders
is used at build time. For CRAN packaging, I don't think there is equivalent auto-exporting - hence why I expect this package probably should declare it under Imports
.
I can do this on the next release. However it may take some time to get to cran
This package will eventually be removed from CRAN (at their request) and combined with rxode2
. That version has RcppParallel
in the LinkingTo field.
Thanks Matthew - and for the heads up on repackaging!
Building this package on Conda Forge, we detect that it links to RcppParallel. Perhaps this should be explicitly declared (LinkingTo and Imports)?
Pertinent
conda-build
linking analysis from Conda Forge build: