[R-pkg-devel] Optional library dependencies for compiled code

Dirk Eddelbuettel edd @end|ng |rom deb|@n@org
Wed Jan 29 16:30:25 CET 2020


Guido,

On 29 January 2020 at 15:11, Guido Kraemer wrote:
| I am developing an R package that can make (optional, but strongly 
| recommended) use of a number of external compression algorithms. What is 
| the best strategy if I want to distribute this as an R package? Because

It's actually a fairly difficult issue.

I have packages on GitHub but not on CRAN for that very reason (of difficult
to bundle external libraries).

| the package is for reading large external data sets, the package will 
| probably not be very useful without compression.
| 
| - Make a hard dependency on all external libraries and make user 
| manually disable it if they cannot install a library for some reason?

Could do, but probably means the package cannot get onto CRAN as the build
will fail "as shipped" ?

Also forces users to set up build options etc.  Hard. May reduce use.
 
| - Make no dependency on external libraries and have the user compile it 
| manually if they want compression?

Same, no? Too much user dependency.
 
| - Look for installed libraries and use only these? (If so: How would I 
| do this during the installation of an R package?)

I once added the ability to use a system / existing 'nlopt' library to the
'nloptr' package.  The package still defaults to downloading a tar.gz and
building during its build, but can use the system library for a speedup.  You
could look at that. All done via configure.

There are other "tricks". At least one package I know cheats (at least on
Linux), comes empty and tells you to install what is needed and reinstall.
That passes the letter of the law ("hey, the package builds on CRAN") but
hardly the spirit of the law.
 
| - How does this work on Windows?

Even less easily.
 
| The possible compressions are: blosc, zlib, bzip2, lz4, xz

Some of these are a given with R.

For my Debian builds I enable at least zlib, bzip2, lzma -- but I have to
"pretty soon" look into a similar list for another project.  My plan there is
bundle the sources of the missing compressors (and other libraries I need)
and trigger a static library build (for each, or maybe all) from configure.

Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org



More information about the R-package-devel mailing list