insightsengineering / thevalidatoR

Github Action that generates R Package Validation documentation 🏁
https://github.com/marketplace/actions/r-package-validation-report
MIT License
57 stars 5 forks source link

[Bug]: Validation failing for rbmi v1.2.0 #58

Closed cicdguy closed 1 year ago

cicdguy commented 1 year ago

What happened?

Validation for v1.2.0 for rbmi failed.

Relevant log output

  |..........................................                            |  60%
label: r_cmd_check (with options) 
List of 2
 $ echo: logi FALSE
 $ eval: logi TRUE

Quitting from lines 159-171 (template.Rmd) 
Error in proc$get_built_file() : Build process failed
Calls: <Anonymous> ... build_package -> with_envvar -> force -> <Anonymous>
pawelru commented 1 year ago

Can you please paste lines 159-171 of the template.Rmd file? Would be easier to debug.

gowerc commented 1 year ago

The full log is here: https://github.com/insightsengineering/rbmi/actions/runs/3273086026/jobs/5384870485

I am wondering if this is an issue that we are using a package called mmrm that only got published to CRAN today and might not yet be in RSPMs cache (assuming you are using the public RSPM).

cicdguy commented 1 year ago

The Rmd used was here: https://github.com/insightsengineering/thevalidatoR/blob/main/template.Rmd#L156-L171 We did use a Docker image for rbmi validation, and that Docker image probably points to RSPM by default. We need a way to override the repositories via this action, so that the default isn't RSPM all the time.

pawelru commented 1 year ago

Ok I think I have found the reason - no mmrm dependency as it is not available on the snapshot as of "2021-10-29" which is a default one for rocker/verse:4.1.1 image. I think that @gowerc you would have to add Remotes field into the description if you wish to continue with validation on R@4.1.1. Alternatively we can move autovalidate to run on R@4.2.1 but it's much more bigger.


My local run:

root@localhost:~/rbmi# Rscript ../thevalidatoR/report-generator.R
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
Current dir is: '/root/rbmi'
Installing 20 packages: R.utils, R.oo, R.methodsS3, matrixStats, checkmate, RcppEigen, RcppParallel, R.cache, mvtnorm, numDeriv, estimability, BH, V8, loo, inline, StanHeaders, R.rsp, emmeans, rstan, rstantools
Installing packages into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/R.utils_2.11.0.tar.gz'
Content type 'binary/octet-stream' length 1407934 bytes (1.3 MB)
==================================================
downloaded 1.3 MB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/R.oo_1.24.0.tar.gz'
Content type 'binary/octet-stream' length 955204 bytes (932 KB)
==================================================
downloaded 932 KB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/R.methodsS3_1.8.1.tar.gz'
Content type 'binary/octet-stream' length 79818 bytes (77 KB)
==================================================
downloaded 77 KB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/matrixStats_0.61.0.tar.gz'
Content type 'binary/octet-stream' length 674296 bytes (658 KB)
==================================================
downloaded 658 KB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/checkmate_2.0.0.tar.gz'
Content type 'binary/octet-stream' length 707075 bytes (690 KB)
==================================================
downloaded 690 KB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/RcppEigen_0.3.3.9.1.tar.gz'
Content type 'binary/octet-stream' length 7464752 bytes (7.1 MB)
==================================================
downloaded 7.1 MB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/RcppParallel_5.1.4.tar.gz'
Content type 'binary/octet-stream' length 2091656 bytes (2.0 MB)
==================================================
downloaded 2.0 MB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/R.cache_0.15.0.tar.gz'
Content type 'binary/octet-stream' length 107947 bytes (105 KB)
==================================================
downloaded 105 KB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/mvtnorm_1.1-3.tar.gz'
Content type 'binary/octet-stream' length 265427 bytes (259 KB)
==================================================
downloaded 259 KB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/numDeriv_2016.8-1.1.tar.gz'
Content type 'binary/octet-stream' length 112596 bytes (109 KB)
==================================================
downloaded 109 KB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/estimability_1.3.tar.gz'
Content type 'binary/octet-stream' length 35962 bytes (35 KB)
==================================================
downloaded 35 KB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/BH_1.75.0-0.tar.gz'
Content type 'binary/octet-stream' length 11881010 bytes (11.3 MB)
==================================================
downloaded 11.3 MB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/V8_3.4.2.tar.gz'
Content type 'binary/octet-stream' length 1378453 bytes (1.3 MB)
==================================================
downloaded 1.3 MB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/loo_2.4.1.tar.gz'
Content type 'binary/octet-stream' length 1576516 bytes (1.5 MB)
==================================================
downloaded 1.5 MB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/inline_0.3.19.tar.gz'
Content type 'binary/octet-stream' length 126964 bytes (123 KB)
==================================================
downloaded 123 KB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/StanHeaders_2.21.0-7.tar.gz'
Content type 'binary/octet-stream' length 1854517 bytes (1.8 MB)
==================================================
downloaded 1.8 MB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/R.rsp_0.44.0.tar.gz'
Content type 'binary/octet-stream' length 1535111 bytes (1.5 MB)
==================================================
downloaded 1.5 MB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/emmeans_1.7.0.tar.gz'
Content type 'binary/octet-stream' length 1964465 bytes (1.9 MB)
==================================================
downloaded 1.9 MB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/rstan_2.21.2.tar.gz'
Content type 'binary/octet-stream' length 54813568 bytes (52.3 MB)
==================================================
downloaded 52.3 MB

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-10-29/src/contrib/rstantools_2.1.1.tar.gz'
Content type 'binary/octet-stream' length 149928 bytes (146 KB)
==================================================
downloaded 146 KB

OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘R.methodsS3’ ...
* DONE (R.methodsS3)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘matrixStats’ ...
* DONE (matrixStats)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘checkmate’ ...
* DONE (checkmate)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘RcppEigen’ ...
* DONE (RcppEigen)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘RcppParallel’ ...
* DONE (RcppParallel)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘mvtnorm’ ...
* DONE (mvtnorm)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘numDeriv’ ...
* DONE (numDeriv)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘estimability’ ...
* DONE (estimability)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘BH’ ...
* DONE (BH)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘V8’ ...
* DONE (V8)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘inline’ ...
* DONE (inline)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘R.oo’ ...
* DONE (R.oo)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘loo’ ...
* DONE (loo)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘StanHeaders’ ...
* DONE (StanHeaders)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘emmeans’ ...
* DONE (emmeans)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘rstantools’ ...
* DONE (rstantools)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘R.utils’ ...
* DONE (R.utils)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘rstan’ ...
* DONE (rstan)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘R.cache’ ...
* DONE (R.cache)
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* installing *binary* package ‘R.rsp’ ...
* DONE (R.rsp)

The downloaded source packages are in
    ‘/tmp/RtmpWSO0nT/downloaded_packages’

processing file: template.Rmd
  |....                                                                  |   5%
   inline R code fragments

  |.......                                                               |  10%
label: setup (with options)
List of 1
 $ include: logi FALSE

  |..........                                                            |  15%
   inline R code fragments

  |..............                                                        |  20%
label: execution_info (with options)
List of 1
 $ echo: logi FALSE

  |..................                                                    |  25%
  ordinary text without R code

  |.....................                                                 |  30%
label: version_control (with options)
List of 1
 $ echo: logi FALSE

  |........................                                              |  35%
  ordinary text without R code

  |............................                                          |  40%
label: session_info (with options)
List of 2
 $ echo: logi TRUE
 $ eval: logi TRUE

  |................................                                      |  45%
  ordinary text without R code

  |...................................                                   |  50%
label: riskmetric (with options)
List of 2
 $ echo: logi FALSE
 $ eval: logi TRUE

  |......................................                                |  55%
  ordinary text without R code

  |..........................................                            |  60%
label: r_cmd_check (with options)
List of 2
 $ echo: logi FALSE
 $ eval: logi TRUE

Quitting from lines 159-171 (template.Rmd)
Error in proc$get_built_file() : Build process failed
Calls: <Anonymous> ... build_package -> with_envvar -> force -> <Anonymous>

Execution halted

#### LOOK BELOW!!

root@localhost:~/rbmi# R CMD build .
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
* checking for file ‘./DESCRIPTION’ ... OK
* preparing ‘rbmi’:
* checking DESCRIPTION meta-information ... OK
* cleaning src
* installing the package to build vignettes
      -----------------------------------
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
ERROR: dependency ‘mmrm’ is not available for package ‘rbmi’
* removing ‘/tmp/RtmpJzcCV9/Rinstf993c8f076/rbmi’
      -----------------------------------
ERROR: package installation failed
gowerc commented 1 year ago

I don't think changing mmrm to remotes would be a viable solution considering we also need it to live on CRAN ? Unless you can have both ?

pawelru commented 1 year ago

Yes you can have it in both Imports and Remotes - see tern example. But please note that CRAN submission would complain about Remotes as a non-standard field and you have to remove it before submission.

This Remotes field would then be used here: https://github.com/insightsengineering/thevalidatoR/blob/392bee40fced922483d1ad1ef3769dfa90d13117/report-generator.R#L36-L42 That results in here: https://github.com/insightsengineering/rbmi/actions/runs/3273086026/jobs/5384870485#step:4:876 (note no mmrm pkg)

This would be a fix in rbmi to fit into validator workflow.

On the other hand, validator workflow could be fixed as well. The simplest thing to do would be to change "repos" option from a default snapshot into the latest. Then mmrm would be accessible. But here, I don't know how to process that change request. Let me summon @dgkf for an opinion.

gowerc commented 1 year ago

My preference would be to not touch rbmi and instead update the validation pipeline instead 😄

cicdguy commented 1 year ago

@pawelru and @gowerc -I'll update rbmi to use the R 4.2.1 image, since mmrm is available on CRAN for this version. That's the simplest solution.

dgkf commented 1 year ago

I'm not totally familiar with the how thevalidatoR is used these days. Is there a reason we want to keep the repos option fixed to the default snapshot? If not, I think pulling latest packages is probably a good idea as a general rule of thumb.

I definitely agree that forcing packages to work around this behavior is something we would want to avoid.