[R-pkg-devel] Using shared libraries
edd at debian.org
Sat Mar 31 06:42:30 CEST 2018
On 28 March 2018 at 19:47, Ogan Mancarci wrote:
| I have been looking for ways to use shared libraries in packages in CRAN
| and be able to write tests for them.
Well the basic problem here is that shared libraries are in fact provided by
the _operating system_ and hence you just introduced an OS dependency.
| When installing packages that depend on shared libraries, if a library is
| missing from the system we often get a nice error message complaining about
| the missing library during installation and listing what to install on
Really? If so it clearly is due to someone (maybe configure, maybe ad hoc
script) testing for such a requuired library.
| different linux builds, what to install on windows and mac. Similarly, how
| can I fail during installation if a required shared library is missing and
| show a warning to the users directing them to install it?
By writing a test.
| More importantly, if I want to write tests and examples for the package,
| how do I tell CRAN that it needs to have the shared library?
To a first approximation, if you need "foo" and CRAN does not have "foo" then
your package is borked, will not build, and hence get rejected.
Now, this was a brief email. There are A MILLION details we could discuss
One possible example is nloptr:
- on windows, it required nlopt to be present, and to point to it via an
- on systems with an X it tests, uses an system shared library if present,
and if not downloads the sources
- at least that is what old versions did; the current -dev version switched
to (AFAIK) either using system or using embedded sources.
In short, what you're after is the hardest possibly deployment path given the
cross-OS use of R. No shortcuts. But it is worth sorting this out. A few
other packages, and this is the right list.
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
More information about the R-package-devel