Thank you Simon - I will try with the static library. >If a package exposes some C-level functionality to other packages, you can use it and R provides a way to obtain access to the function - see R-exts 5.4.3.
My case is a little bit trickier (at least as it looks for me) - float pkg exposes single precision BLAS and LAPACK. rsparse use it in the C++ code implicitly via Armadillo library. This is due to the unfortunate fact that R doesn't ship single precision blas and lapack. On Thu, Jul 25, 2019 at 11:53 PM Simon Urbanek <simon.urba...@r-project.org> wrote: > See R-exts 5.8: you cannot link directly to other package or its > libraries. It is not possible is a portable way across platforms for many > reasons including those that you are hitting here. If a package exposes > some C-level functionality to other packages, you can use it and R provides > a way to obtain access to the function - see R-exts 5.4.3. > > There are ways to make a *static* library available, because that allows > your package to be installed without actually requiring the presence of the > other package at install time. But, again, the package has to make it > explicitly available since you cannot guarantee that your package won't > break as it's technically internal to the other package. That said, it > seems the there is a bug in float since it provides the wrong flags to link > against its library (float:::ldflags()). It should really just use > system.file("libs","libfloat.a",package="float") - you may want to contact > the maintainer of float about that. Flags cannot be hard-coded at install > time because the package can be installed in any location, moreover staged > install is preformed in a direction separate from the R library anyway. > > Cheers, > Simon > > > > On Jul 25, 2019, at 8:18 AM, Dmitriy Selivanov < > selivanov.dmit...@gmail.com> wrote: > > > > Dear r-sig-mac mailing list, > > I have difficulties to solve one problem - I don't understand on how my > > package can link to another package which is built by CRAN. More on this > > below. > > > > I'm a developer of rparse package ( > > https://cran.r-project.org/web/packages/rsparse/). This package links to > > float pkg (https://cran.r-project.org/web/packages/float/index.html). > This > > is done in configure script and with installation from source it works > just > > fine. But there is an issue when installing rsparse from CRAN binaries. > In > > this case rsparse shared library references the path of the float shared > > library which is recorded during the build on CRAN machine. And it is > > different from the path on user machine (On cran it is > > > @rpath/Volumes/SSD-Data/Builds/R-dev-web/QA/Simon/packages/el-capitan-x86_64/Rlib/3.6/float/libs/float.so). > > In > > fact the warning is produced by CRAN checks - > > > https://www.r-project.org/nosvn/R.check/r-release-osx-x86_64/float-00install.html > > ) > > I've tried to fix this be using `.onLoad` hook where I run > > `install_name_tool -change ...`, but it seems `dyn.load` is called before > > .onLoad hook... > > > > What will be the correct way to solve this issue? > > > > Thanks in advance. > > > > -- > > Regards > > Dmitriy Selivanov > > > > [[alternative HTML version deleted]] > > > > _______________________________________________ > > R-SIG-Mac mailing list > > R-SIG-Mac@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-sig-mac > > -- Regards Dmitriy Selivanov [[alternative HTML version deleted]] _______________________________________________ R-SIG-Mac mailing list R-SIG-Mac@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-mac