Dear R team, Are suggested dependencies mandatory in context of `R CMD check` when using env var `_R_CHECK_FORCE_SUGGESTS_=FALSE`? Suggested dependencies are nice because are optional. But that feature often isn't valid when trying to run `R CMD check` on them. I would like to use `export _R_CHECK_FORCE_SUGGESTS_=FALSE`, which according to the comment in `tools/R/check.R`:> The suggested packages are required for a complete check.Checking can be attempted without them by setting the environment variable _R_CHECK_FORCE_SUGGESTS_ to a false value. should be sufficient to run *check* process without installing suggested deps. If it is not true, then how to differentiate the suggested packages which are optional from those mandatory? It would be helpful to have kind of `vignetteBuilder` DESCRIPTION field called `testChecker`, so DESCRIPTION file could precisely manage packages dependencies. That way batch checking packages would be easier, as required dep metadata would be at hand in description file. Batch checking pkgs with all their suggests will simply result into testing whole CRAN. In a single package it can be handled with `if (requireNamespace(.)) test_package(.)` for `testthat` and `knitr`, also with mocking up `.Rout` files. But I'm interested into canonical design of a suggested package and `_R_CHECK_FORCE_SUGGESTS_` env var. Is there any R core dev team recommendation/suggestion on that? and don't you thing new field `testChecker` in DESCRIPTION could help for batch checking pkgs? Installing all suggested packages of all reverse dependencies doesn't scale. Jan Gorecki
Hadley Wickham
2016-Apr-04 14:25 UTC
[Rd] Suggested dependencies in context of R CMD check
On Sat, Apr 2, 2016 at 5:33 AM, Jan G?recki <J.Gorecki at wit.edu.pl> wrote:> Dear R team, > > Are suggested dependencies mandatory in context of `R CMD check` when > using env var `_R_CHECK_FORCE_SUGGESTS_=FALSE`? > > Suggested dependencies are nice because are optional. > But that feature often isn't valid when trying to run `R CMD check` on them. > I would like to use `export _R_CHECK_FORCE_SUGGESTS_=FALSE`, which > according to the comment in `tools/R/check.R`: > >> The suggested packages are required for a complete check. > Checking can be attempted without them by setting the environment > variable _R_CHECK_FORCE_SUGGESTS_ to a false value. > > should be sufficient to run *check* process without installing suggested deps. > If it is not true, then how to differentiate the suggested packages > which are optional from those mandatory? > It would be helpful to have kind of `vignetteBuilder` DESCRIPTION > field called `testChecker`, so DESCRIPTION file could precisely manage > packages dependencies. > That way batch checking packages would be easier, as required dep > metadata would be at hand in description file. Batch checking pkgs > with all their suggests will simply result into testing whole CRAN. > > In a single package it can be handled with `if (requireNamespace(.)) > test_package(.)` for `testthat` and `knitr`, also with mocking up > `.Rout` files. > > But I'm interested into canonical design of a suggested package and > `_R_CHECK_FORCE_SUGGESTS_` env var. > Is there any R core dev team recommendation/suggestion on that? and > don't you thing new field `testChecker` in DESCRIPTION could help for > batch checking pkgs? Installing all suggested packages of all reverse > dependencies doesn't scale.In principle, I believe a package should pass R CMD check if no suggested packages are installed. However, since this is not currently automatically checked, many packages will fail to cleanly pass R CMD check if suggested packages are missing. In my experience, it's much easier to simply install all dependencies of your reverse dependencies (although this is obviously much easier when you're using a platform with binary packages available from CRAN). I routinely do this for hundreds to thousands of packages. Hadley -- http://hadley.nz
Gabriel Becker
2016-Apr-04 15:36 UTC
[Rd] Suggested dependencies in context of R CMD check
Jan and Hadley, There's also the issue of tests, vignettes, or examples requiring Suggested packages (one of the core applications of Suggests, in fact). These are all checked by R CMD check, so to ensure any package which should pass check would do so without suggested packages installed would require turning all of those checks off, which takes quite a few of the teeth out of R CMD check (and thus the assurances granted by knowing a package passes it). AFAIK (without going off and checking right now) you /could/ force R CMD check to do this now with a combination of options, though, if that's really what you want (which would allow your package to pass when _R_CHECK_FORCE_SUGGESTS_ is set to false). ~G On Mon, Apr 4, 2016 at 7:25 AM, Hadley Wickham <h.wickham at gmail.com> wrote:> On Sat, Apr 2, 2016 at 5:33 AM, Jan G?recki <J.Gorecki at wit.edu.pl> wrote: > > Dear R team, > > > > Are suggested dependencies mandatory in context of `R CMD check` when > > using env var `_R_CHECK_FORCE_SUGGESTS_=FALSE`? > > > > Suggested dependencies are nice because are optional. > > But that feature often isn't valid when trying to run `R CMD check` on > them. > > I would like to use `export _R_CHECK_FORCE_SUGGESTS_=FALSE`, which > > according to the comment in `tools/R/check.R`: > > > >> The suggested packages are required for a complete check. > > Checking can be attempted without them by setting the environment > > variable _R_CHECK_FORCE_SUGGESTS_ to a false value. > > > > should be sufficient to run *check* process without installing suggested > deps. > > If it is not true, then how to differentiate the suggested packages > > which are optional from those mandatory? > > It would be helpful to have kind of `vignetteBuilder` DESCRIPTION > > field called `testChecker`, so DESCRIPTION file could precisely manage > > packages dependencies. > > That way batch checking packages would be easier, as required dep > > metadata would be at hand in description file. Batch checking pkgs > > with all their suggests will simply result into testing whole CRAN. > > > > In a single package it can be handled with `if (requireNamespace(.)) > > test_package(.)` for `testthat` and `knitr`, also with mocking up > > `.Rout` files. > > > > But I'm interested into canonical design of a suggested package and > > `_R_CHECK_FORCE_SUGGESTS_` env var. > > Is there any R core dev team recommendation/suggestion on that? and > > don't you thing new field `testChecker` in DESCRIPTION could help for > > batch checking pkgs? Installing all suggested packages of all reverse > > dependencies doesn't scale. > > In principle, I believe a package should pass R CMD check if no > suggested packages are installed. However, since this is not currently > automatically checked, many packages will fail to cleanly pass R CMD > check if suggested packages are missing. In my experience, it's much > easier to simply install all dependencies of your reverse dependencies > (although this is obviously much easier when you're using a platform > with binary packages available from CRAN). I routinely do this for > hundreds to thousands of packages. > > Hadley > > -- > http://hadley.nz > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Gabriel Becker, PhD Associate Scientist (Bioinformatics) Genentech Research [[alternative HTML version deleted]]
Dirk Eddelbuettel
2016-Apr-04 17:35 UTC
[Rd] Suggested dependencies in context of R CMD check
On 4 April 2016 at 07:25, Hadley Wickham wrote: | On Sat, Apr 2, 2016 at 5:33 AM, Jan G?recki <J.Gorecki at 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. Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
Reasonably Related Threads
- Suggested dependencies in context of R CMD check
- Suggested dependencies in context of R CMD check
- Suggested dependencies in context of R CMD check
- Suggested dependencies in context of R CMD check
- new function to tools/utils package: dependencies based on DESCRIPTION file