Skip to content

Vignettes with long compute time

3 messages · Terry Therneau, Trevor Davis, Duncan Murdoch

#
Is there a way to include the compiled version of a vignette in the doc directory but mark 
it to NOT be rerun by CRAN??? I think I remember that this is possible, but have forgotton 
how.?? (It might even be a false memory.)

Terry T.

Background:? Beth Atkinson and I are splitting out many of the vignettes from the survival 
package into a separate package survivalVignettes.? There are a few reasons

 ?1. Some vignettes use packages outside of the base + recommended set; psueodovalues for 
instance are normally used as input to a subsequent GEE model.??? Since survival is itself 
a recommended package, it can't legally host the pseudo.Rnw vignette.
 ?2. The set of vignettes for survival is large, and likely to get larger.??? It makes 
sense to slim down the size of the package itself.
 ?3. It allows us to use Rmd.? (Again, survival can't use anything outside of base + 
recommended).
 ?4. We have a couple of 'optional' vignettes that talk about edge cases, useful to some 
people but not worth the size cost of cluttering up the main package.

The current submission fails due to one vignette in group 4 which takes a looong time to 
run.? This vignette in particular is talking about compute time, and illustrates a cases 
where an O(n^2) case arises.?? As sentence that warns the use "of you do this it will take 
hours to run" is a perfect case for a pdf that should not be recreated by R CMD check.
#
directory but mark
it to NOT be rerun by CRAN?

Some developers "precompute" their vignettes so CRAN has nothing left to
run: https://ropensci.org/blog/2019/12/08/precompute-vignettes/
survival
package into a separate package survivalVignettes.

An alternative some authors use is to temporarily use a special
`.Rbuildignore` file to omit large vignettes when building the CRAN package
but don't use that file for the normal development version (so that all the
vignettes are available in the `{pkgdown}` website and for users who
install using alternative channels like `remotes::install_github()`).

Trevor

On Mon, Mar 11, 2024 at 8:44?AM Therneau, Terry M., Ph.D. via R-devel <
r-devel at r-project.org> wrote:

            

  
  
#
On 11/03/2024 11:43 a.m., Therneau, Terry M., Ph.D. via R-devel wrote:
You could use a method similar to the testthat::skip_on_cran() approach. 
  Have the long running chunks only run conditional on having a special 
environment variable present.  This would be a little easier with knitr 
than with Sweave, since there you can use expressions for the chunk 
options, but you could always write the code something like this:

   if (Sys.getenv("RUN_SLOW_CHUNKS", 0)) {

     ... the slow code goes here ...

   } else
     cat("This chunk takes several hours to compute.  If you want to run
          it, set the environment variable RUN_SLOW_CHUNKS to 1.\n")

Duncan Murdoch