Skip to content

[R-pkg-devel] Installing conda dependecy onAttach

2 messages · Michael Gruenstaeudl, Duncan Murdoch

#
Assume an R package (`myRpackage`) that has a conda package 
(`condaDependecy`) as a system requirement. The file `DESCRIPTION` of 
the R package would read like:

     Package: myRpackage
     ...
     SystemRequirements: condaDependecy (>= 0.1)
     ...

How can I ensure the automatic installation of this condaDependecy (i.e. 
`conda install condaDependency`) upon installing the R package itself 
(i.e. `install.packages("myRpackage")`), assuming that myRpackage is 
listed on CRAN?

I would prefer a method less "clunky" as

     .onAttach = function(libname = find.package("myRpackage"), pkgname 
= "myRpackage") {
         system("conda install -y condaDependency")
     }
#
On 14/06/2019 5:04 a.m., Michael Gruenstaeudl wrote:
You can't do that in a CRAN package.  You're not allowed to modify the 
user's system.

What you can do is include a function to install the dependency, and in 
your .onLoad (not .onAttach, which should rarely be used) try to detect 
if it is present.  If it is not, you can print a message telling the 
user what to do, and fail the load with a call to stop().

Duncan Murdoch