[R-pkg-devel] R CMD check failure during vignette rebuilding
Konrad Rudolph
konr@d@rudo|ph @end|ng |rom gm@||@com
Tue Apr 14 18:22:02 CEST 2020
Hi Duncan,
Thanks for the explanation. Using a temporary directory is what I’m
doing at the moment as a workaround.
What confused me was that `R CMD check` *already* works inside a new
directory (a set of different ones, in fact), and it doesn’t seem to
be documented anywhere that this is the intended behaviour (the
documentation of `buildVignettes` only mentions it removes “newly
created … files”, not existing folders), so I thought creating
temporary files under `vignettes` was fair game. Could you clarify
whether this behaviour (deleting existing folders during cleanup) is
intentional? If so, could it be documented more explicitly?“
On Tue, Apr 14, 2020 at 1:53 PM Duncan Murdoch <murdoch.duncan using gmail.com> wrote:
>
> On 14/04/2020 6:23 a.m., Konrad Rudolph wrote:
> > I have a package vignette that reproducibly fails the second time
> > round in `R CMD check`, in the “checking re-building of vignette
> > outputs” step.
> >
> > I have uploaded a small reprex to GitHub [1]. But in a nutshell the
> > vignette contains a subfolder `foo`, and a file `foo/bar`. And the
> > `test.rmd` vignette contains the following R code:
> >
> >> newfile = file.path(getwd(), 'foo', 'baz')
> >> writeLines('baz', newfile)
> >
> > This code causes `R CMD check` to delete the folder `foo` inside
> > `00_pkg_src/vignettes` after building the vignette, leading to the
> > following error message further down the line:
> >
> >> Error(s) in re-building vignettes:
> >> ...
> >> --- re-building ‘test.rmd’ using rmarkdown
> >> Quitting from lines 8-10 (test.rmd)
> >> Error: processing vignette 'test.rmd' failed with diagnostics:
> >> cannot open the connection
> >> --- failed re-building ‘test.rmd’
> >
> > This seems to be due to the cleanup after building vignettes inside
> > `tools::buildVignette`, because creating a file inside a folder
> > changes the directory subfolder modification time (on POSIX-like
> > systems) so the whole folder is deleted in cleanup, rather than just
> > the file. Can I prevent this?
> >
> > [1] https://github.com/klmr/vignettetest
> >
>
> Normally the checks don't want you to be writing files outside of the
> temp dir, because if a user processed your vignette, it might stomp on
> their files. So can't you change that code to
>
> dir.create(tempdir(), 'foo')
> newfile <- file.path(tempdir(), 'foo', 'baz')
>
> Duncan Murdoch
--
Konrad Rudolph // @klmr
More information about the R-package-devel
mailing list