[R-pkg-devel] winUCRT failures

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Sun Apr 25 18:56:31 CEST 2021

On 25/04/2021 12:46 p.m., Dirk Eddelbuettel wrote:
> On 25 April 2021 at 12:27, Duncan Murdoch wrote:
> | On 25/04/2021 11:35 a.m., Dirk Eddelbuettel wrote:
> | > I last wrote about that four years ago under the title "Suggests != Depends"
> | > http://dirk.eddelbuettel.com/blog/2017/03/22#suggests_is_not_depends
> | >
> | > Of course, nothing changed.
> | >
> | > So when helping a R Core member last weekend by checking his package against
> | > just over 1000 reverse dependencies, I again had to manually wade through
> | > dozens of false errors of packages failing tests when packages they did NOT
> | > declare a dependency on were used unconditionally. That is still a very clear
> | > error to me, but I no longer expect these windmills will ever stop turning.
> |
> | I agree it's an error.  Back when we had one of those discussions it
> | seemed too resource-intensive to do both kinds of tests, and it's much
> | easier to do the "install everything" tests if you are always working
> | with a fixed library.
> |
> | Nowadays I think it's easier to run the tests on a VM that has exactly
> | the packages you specify, so people have less excuse not to do that on
> That is an ooooold problem, and I argued about this (with you and others) for
> a decade or longer. And I often mentioned that e.g. _every_ Debian (or
> Ubuntu, I am sure the others distris do the same) build installs _excactly_
> what is listed, and omitted packages _will_ cause an error.  That was already
> easy to implement (on Unix system) several decades ago via chroot and related
> tricks; it is now trivial due to VMs or container use (which GH Actions
> approximates too, though it may start with 'too fat a container).
> So yes, it is technically easy, and we could pool the resources. But nobody
> is driving it so (as has been the case for years) nothing changes. Ever.
> | their own.  I have a Github "workflow" here that does it for rgl:
> |
> | https://github.com/dmurdoch/rgl/actions/workflows/R-CMD-nosoft-check.yml
> |
> | BTW, I've just submitted another patch, this time for the usethis
> | package, which added "Suggests: testthat" and then used testthat
> | unconditionally.  That won't help any other existing packages, but if it
> | is accepted it might help in the future.
> It has long been true that the main test runners (RUnit, testthat, now also
> tinytest) are automagically included, which is a defensible (if undocumented)
> special rule.

It's a bad rule.  It's causing thousands of packages to fail now, 
because testthat won't pass checks on the winUCRT system.  It's making 
the pain of winUCRT last much longer than it should, because nobody 
knows what problems exist in their own package if they can't install it 
because of missing dependencies.

For example, as I said in the first message in this thread,

> The current CRAN release of rgl fails on winUCRT because of missing 
> dependencies:
> 'htmlwidgets', 'htmltools', 'knitr', 'jsonlite', 'shiny', 'magrittr', 
> 'crosstalk', 'manipulateWidget'.
> Tracing `htmlwidgets` shows it also fails because of missing dependencies:
> 'htmltools', 'jsonlite', 'yaml'
> and 'htmltools' fails because of missing dependencies
> 'digest', 'base64enc', 'rlang'

A lot of those failures are ultimately caused by magrittr failing, and 
as far as I can see the only thing causing it to fail was that it used 
testthat unconditionally even though its DESCRIPTION file promised it 
would never do that.

Duncan Murdoch

More information about the R-package-devel mailing list