On 04/04/2016 1:35 PM, Dirk Eddelbuettel wrote:
On 4 April 2016 at 07:25, Hadley Wickham wrote:
| On Sat, Apr 2, 2016 at 5:33 AM, Jan Górecki <j.gore...@wit.edu.pl> wrote:
|
| In principle, I believe a package should pass R CMD check if no
| suggested packages are installed. However, since this is not currently

The relevant manual says

      The 'Suggests' field uses the same syntax as 'Depends' and lists
   packages that are not necessarily needed.  This includes packages used
   only in examples, tests or vignettes (*note Writing package
   vignettes::), and packages loaded in the body of functions.  E.g.,
   suppose an example(1) from package *foo* uses a dataset from package
   *bar*.  Then it is not necessary to have *bar* use *foo* unless one
   wants to execute all the examples/tests/vignettes: it is useful to have
   *bar*, but not necessary.  Version requirements can be specified, and
   will be used by 'R CMD check'.

and later

    * All packages that are needed(2) to successfully run 'R CMD check'
      on the package must be listed in one of 'Depends' or 'Suggests' or
      'Imports'.  Packages used to run examples or tests conditionally
      (e.g. _via_ 'if(require(PKGNAME))') should be listed in 'Suggests'
      or 'Enhances'.  (This allows checkers to ensure that all the
      packages needed for a complete check are installed.)

| automatically checked, many packages will fail to cleanly pass R CMD
| check if suggested packages are missing.

I consider that to be a bug in those 'many packages'.  It essentially takes
away the usefulness of having a Suggests: to provide a more fine-grained
dependency graph.

So I am with Jan here.

I think I agree with Jan, but not for the reason you state.

Suggests is useful even if "R CMD check" treats it as Depends, because most users never need to run "R CMD check". It allows them to use a subset of the functionality of a package without installing tons of dependencies.

I agree that packages that fail on examples when Suggested packages are missing are broken. (Using if (require()) to skip particular examples isn't failing.) It would be useful to be able to detect failure; I don't think that's easy now with "R CMD check". That's why you should be able to run it with Suggested packages missing.

The ideal situation would be to be able to run all possible combinations of missing Suggested packages, but that's probably far too slow to be a default.

BTW, I'm not completely sure it needs to be possible to run vignettes without the Suggested packages they need. Vignettes are allowed to depend on things that aren't available to all users, and adding all the require() tests could make them less clear.

Duncan Murdoch

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to