[R-pkg-devel] suggestion: conda for third-party software

Serguei Sokol @ergue|@@oko| @end|ng |rom gm@||@com
Tue Jan 7 15:49:45 CET 2020


Best wishes for 2020!

I would like to suggest a new feature for R package management. Its aim 
is to enable package developers and end-users to rely on conda ( 
https://docs.conda.io/en/latest/ ) for managing third-party software 
(TPS) on major platforms: linux64, win64 and osx64. Currently, many R 
packages include TPS as part of them thus bloating their sizes and often 
duplicating files on a given system.  And even when TPS is not included 
in an R package but is just installed on a system, it is not so obvious 
to get the right path to it. Sometimes pkg-config helps but it is not 
always present.

So, the new feature would be to let R package developers to write in 
DESCRIPTION/SystemRequirements field something like 
'conda:boost-cpp>=1.71' where 'boost-cpp' is an example of a conda 
package and '>=1.71' is an optional version requirement. Having this 
could allow install.packages() to install TPS on a testing CRAN machine 
or on an end-user's one. (There is just one line to execute in a shell: 
conda install <pkg-name>. It will install the package itself as well as 
all its dependencies).

To my mind, this feature would have the following advantages:
  - on-disk size economy as the same TPS does not have to be included in 
R package itself and can be shared with other language wrappers, e.g. 
Python;
  - an easy flag configuring in Makevars as paths to TPS will be well 
known in advance;
  - CRAN machines could test packages relying on a wide panel of TPS 
without bothering with their manual installation;
  - TPS installation can become transparent for the end-user on major 
platforms;

Note that even R is part of conda ( 
https://anaconda.org/conda-forge/r-base ), it is not mandatory to use 
the conda's R version for this feature. Here, conda is just meant to 
facilitate access to TPS. However, a minimal requirement is obviously to 
have conda itself.

Does it look reasonable? appealing?
Best,
Serguei.



More information about the R-package-devel mailing list