Thanks, I looked at the actual implementation in float (float:::ldflags_string) 
and it seems that it actually gets the static case right, so it should work. I 
would suggest that the author (I took the liberty to CC) make static=TRUE the 
default since the dynamic linking simply doesn't work in general.

Cheers,
Simon


> On Jul 26, 2019, at 8:34 AM, Dmitriy Selivanov <selivanov.dmit...@gmail.com> 
> wrote:
> 
> 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

_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-mac

Reply via email to