[R-pkg-devel] CRAN and CMake
Duncan Murdoch
murdoch.duncan at gmail.com
Wed Jun 10 19:56:31 CEST 2015
On 10/06/2015 1:14 PM, Gábor Csárdi wrote:
> On Wed, Jun 10, 2015 at 11:28 AM, Tim Keitt <tkeitt at utexas.edu> wrote:
> [...]
> >
> > Is there a way to allow the user to use a system installed cmake if they
> > choose? The issue is R package dependencies -- a package author may put the
> > R cmake package in depends and then everyone is forced to install the R
> > package version even if they already have cmake.
>
> It is not easy IMO. You can't declare that you need an R package or a
> system package. AFAIK you can't even say that you need either this
> package or that package.
>
> cmake is clearly a build time dependency, like knitr for building
> vignettes, but you can't explicitly declare build dependencies either.
>
> The closest would be 'Suggests', and then at build time you get an
> error message if there is no system cmake and no 'cmaker' package
> either. Not quite perfect, though.
>
> Gabor
>
> [...]
That's not quite right. I would guess that cmake would normally be an
install time dependency: you need it to compile the code in the
package. If so, then listing it in the SystemRequirements field is
fine. Only the maintainer needs to build a package (i.e. produce a
.tar.gz file). Vignettes are a little weird: CRAN wants to check that
they can be built (that's the point of them),
but maintainers may have special resources needed for them. So they get
built and installed in the tarball. And you can declare packages needed
only for building vignettes: use Suggests as well as VignetteBuilder.
Generally we want R packages to be open source, so big transformations
of the code at build time (the kind that lose the source) are discouraged.
If you want to declare a dependence on a system resource at install time
(when the package code is compiled), use SystemRequirements. There's
also LinkingTo, to declare that you are linking to code in another
package. We don't have something that says "this package is needed to
install mine", but I suspect one of LinkingTo, Imports or Depends would
be fine, even though they aren't strictly correct.
Duncan Murdoch
More information about the R-package-devel
mailing list