revdepcheck icon indicating copy to clipboard operation
revdepcheck copied to clipboard

revdep_check() installs some but not all Suggests:ed packages

Open HenrikBengtsson opened this issue 5 years ago • 8 comments

Issue

I would expect it do to so, but revdepcheck::revdep_check() installs some but not all Suggests:ed packages. This is not a new observation - I've had this "problem" since the very beginning (2 years?). After running:

library(revdepcheck)
revdep_check(bioc = TRUE, num_workers = 4L, quiet = FALSE)
revdep_report(all = TRUE)

the generated revdep/problems.md reports on NOTEs such as:

checking package dependencies ... NOTE

  Package suggested but not available for checking: ‘DesignLibrary’

Comment: Some of the missing Suggests:ed packages reported are on non-mainstream repositories, so that's not surprising, but some of them are on CRAN and Bioconductor.

Specifically, for CRAN package DeclareDesign and Bioconductor package methyvim, I get the above NOTEs. The missing packages were CRAN package DesignLibrary and Bioconductor package minfiData.

I force a cached installation of these by calling

crancache::install_packages(c("DesignLibrary", "minfiData"))

What I recall, I think neither of these were in the binary cache; they installed from source.

I now rerun revdepcheck:

library(revdepcheck)
revdep_add(packages = c("DeclareDesign", "methyvim"))
revdep_check(bioc = TRUE, num_workers = 4L, quiet = FALSE)
revdep_report(all = TRUE)

those NOTEs for those two rechecked packages disappear:

diff --git a/revdep/problems.md b/revdep/problems.md
index a598055..5095aae 100644
--- a/revdep/problems.md
+++ b/revdep/problems.md
@@ -343,11 +343,6 @@ Run `revdep_details(,"DeclareDesign")` for more info
 
 ## In both
 
-*   checking package dependencies ... NOTE
-    ```
-    Package suggested but not available for checking: ‘DesignLibrary’
-    ```
-
 *   checking whether package ‘DeclareDesign’ can be installed ... NOTE
     ```
     Found the following notes/warnings:
@@ -986,11 +981,6 @@ Run `revdep_details(,"methyvim")` for more info
 
 ## In both
 
-*   checking package dependencies ... NOTE
-    ```
-    Package suggested but not available for checking: ‘minfiData’
-    ```
-
 *   checking whether package ‘methyvim’ can be installed ... NOTE
     ```
     Found the following notes/warnings:

Session information

$ R --quiet --vanilla
> library(revdepcheck)
sesessionInfo()
R version 3.6.0 (2019-04-26)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.2 LTS

Matrix products: default
BLAS:   /home/hb/shared/software/CBI/R-3.6.0/lib/R/lib/libRblas.so
LAPACK: /home/hb/shared/software/CBI/R-3.6.0/lib/R/lib/libRlapack.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] revdepcheck_1.0.0.9001

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.1           compiler_3.6.0       remotes_2.0.4       
 [4] prettyunits_1.0.2    base64enc_0.1-3      tools_3.6.0         
 [7] progress_1.2.0       digest_0.6.18        pkgbuild_1.0.3      
[10] bit_1.1-14           jsonlite_1.6         RSQLite_2.1.1       
[13] memoise_1.1.0        debugme_1.1.0        pkgconfig_2.0.2     
[16] rlang_0.3.4.9003     whoami_1.3.0         DBI_1.0.0           
[19] cli_1.1.0            yaml_2.2.0           curl_3.3            
[22] xfun_0.6             xopen_1.0.0          gmailr_0.7.1        
[25] withr_2.1.2          httr_1.4.0           knitr_1.22          
[28] desc_1.2.0           rappdirs_0.3.1       hms_0.4.2           
[31] rprojroot_1.3-2      bit64_0.9-7          glue_1.3.1          
[34] crancache_0.0.0.9000 parsedate_1.1.3      R6_2.4.0            
[37] processx_3.3.0       rcmdcheck_1.3.3      sessioninfo_1.1.1   
[40] callr_3.2.0          blob_1.1.1           magrittr_1.5        
[43] backports_1.1.4      ps_1.3.0             clisymbols_1.2.0    
[46] assertthat_0.2.1     cranlike_1.0.2       crayon_1.3.4      

HenrikBengtsson avatar May 08 '19 01:05 HenrikBengtsson

I observed the same with my pROC package. After a fresh install of revdepcheck 1.0.0.9001 a few days ago with source("https://install-github.me/r-lib/revdepcheck") and then running 'revdepcheck::revdep_check(num_workers = 4)', several checks failed in both new and old version.

This happens not only with Suggest:ed packages, but also with full-on Dependencies:

$ grep "Package required but not available" checks/*/*/*.Rcheck/00check.log
checks/biomod2/new/biomod2.Rcheck/00check.log:Package required but not available: ‘earth’
checks/biomod2/old/biomod2.Rcheck/00check.log:Package required but not available: ‘earth’
checks/blkbox/new/blkbox.Rcheck/00check.log:Package required but not available: ‘bartMachine’
checks/blkbox/old/blkbox.Rcheck/00check.log:Package required but not available: ‘bartMachine’
checks/CalibratR/new/CalibratR.Rcheck/00check.log:Package required but not available: ‘fitdistrplus’
checks/CalibratR/old/CalibratR.Rcheck/00check.log:Package required but not available: ‘fitdistrplus’
checks/ebmc/new/ebmc.Rcheck/00check.log:Package required but not available: ‘C50’
checks/ebmc/old/ebmc.Rcheck/00check.log:Package required but not available: ‘C50’
checks/finalfit/new/finalfit.Rcheck/00check.log:Package required but not available: ‘survminer’
checks/finalfit/old/finalfit.Rcheck/00check.log:Package required but not available: ‘survminer’
checks/GmAMisc/new/GmAMisc.Rcheck/00check.log:Package required but not available: ‘InPosition’
checks/GmAMisc/old/GmAMisc.Rcheck/00check.log:Package required but not available: ‘InPosition’
checks/kernDeepStackNet/new/kernDeepStackNet.Rcheck/00check.log:Package required but not available: ‘DiceOptim’
checks/kernDeepStackNet/old/kernDeepStackNet.Rcheck/00check.log:Package required but not available: ‘DiceOptim’
checks/LEGIT/new/LEGIT.Rcheck/00check.log:Package required but not available: ‘formula.tools’
checks/LEGIT/old/LEGIT.Rcheck/00check.log:Package required but not available: ‘formula.tools’
checks/lilikoi/new/lilikoi.Rcheck/00check.log:Package required but not available: ‘devtools’
checks/lilikoi/old/lilikoi.Rcheck/00check.log:Package required but not available: ‘devtools’
checks/mlDNA/new/mlDNA.Rcheck/00check.log:Package required but not available: ‘rsgcc’
checks/mlDNA/old/mlDNA.Rcheck/00check.log:Package required but not available: ‘rsgcc’
checks/mldr/new/mldr.Rcheck/00check.log:Package required but not available: ‘circlize’
checks/mldr/old/mldr.Rcheck/00check.log:Package required but not available: ‘circlize’
checks/nonet/new/nonet.Rcheck/00check.log:Package required but not available: ‘tidyverse’
checks/nonet/old/nonet.Rcheck/00check.log:Package required but not available: ‘tidyverse’
checks/r4lineups/new/r4lineups.Rcheck/00check.log:Package required but not available: ‘magick’
checks/r4lineups/old/r4lineups.Rcheck/00check.log:Package required but not available: ‘magick’
checks/SIAMCAT/new/SIAMCAT.Rcheck/00check.log:Package required but not available: ‘mlr’
checks/SIAMCAT/old/SIAMCAT.Rcheck/00check.log:Package required but not available: ‘mlr’

I also see a few missing Suggest:ed ones causing failures:

$ grep "there is no package called" */*/*.Rcheck/00check.log
aplore3/new/aplore3.Rcheck/00check.log:Error in library(vcdExtra) : there is no package called ‘vcdExtra’
aplore3/old/aplore3.Rcheck/00check.log:Error in library(vcdExtra) : there is no package called ‘vcdExtra’
caret/new/caret.Rcheck/00check.log:Error in library(earth) : there is no package called ‘earth’
caret/old/caret.Rcheck/00check.log:Error in library(earth) : there is no package called ‘earth’
eclust/new/eclust.Rcheck/00check.log:Error in loadNamespace(name) : there is no package called ‘factoextra’
eclust/old/eclust.Rcheck/00check.log:Error in loadNamespace(name) : there is no package called ‘factoextra’
riskRegression/new/riskRegression.Rcheck/00check.log:Error in library(pec) : there is no package called ‘pec’
riskRegression/old/riskRegression.Rcheck/00check.log:Error in library(pec) : there is no package called ‘pec’

And more Suggest:ed ones, some of them not causing failures

$ grep "Package suggested but not available for checking" */*/*.Rcheck/00check.log
aplore3/new/aplore3.Rcheck/00check.log:Package suggested but not available for checking: ‘vcdExtra’
aplore3/old/aplore3.Rcheck/00check.log:Package suggested but not available for checking: ‘vcdExtra’
blkbox/new/blkbox.Rcheck/00check.log:Package suggested but not available for checking: ‘bigrf’
blkbox/old/blkbox.Rcheck/00check.log:Package suggested but not available for checking: ‘bigrf’
bst/new/bst.Rcheck/00check.log:Package suggested but not available for checking: ‘hdi’
bst/old/bst.Rcheck/00check.log:Package suggested but not available for checking: ‘hdi’
caretEnsemble/new/caretEnsemble.Rcheck/00check.log:Package suggested but not available for checking: ‘lintr’
caretEnsemble/old/caretEnsemble.Rcheck/00check.log:Package suggested but not available for checking: ‘lintr’
doppelgangR/new/doppelgangR.Rcheck/00check.log:Package suggested but not available for checking: ‘simulatorZ’
doppelgangR/old/doppelgangR.Rcheck/00check.log:Package suggested but not available for checking: ‘simulatorZ’
finalfit/new/finalfit.Rcheck/00check.log:Package suggested but not available for checking: ‘covr’
finalfit/old/finalfit.Rcheck/00check.log:Package suggested but not available for checking: ‘covr’
mlDNA/new/mlDNA.Rcheck/00check.log:Package suggested but not available for checking: ‘cairoDevice’
mlDNA/old/mlDNA.Rcheck/00check.log:Package suggested but not available for checking: ‘cairoDevice’
nonet/new/nonet.Rcheck/00check.log:Package suggested but not available for checking: ‘ClusterR’
nonet/old/nonet.Rcheck/00check.log:Package suggested but not available for checking: ‘ClusterR’
RIVER/new/RIVER.Rcheck/00check.log:Package suggested but not available for checking: ‘devtools’
RIVER/old/RIVER.Rcheck/00check.log:Package suggested but not available for checking: ‘devtools’

I started this run on a machine with R 3.6.0, and no pre-existing CRAN cache.

xrobin avatar Jun 01 '19 16:06 xrobin

@xrobin revdepcheck tries to install all of them, but probably fails. Is this Linux? Then it probably fails because of the missing system requirements.

gaborcsardi avatar Jun 01 '19 16:06 gaborcsardi

@gaborcsardi It is Linux indeed.

I am trying to install them manually though, and at least some can be installed successfully, without any system requirement issue:

> crancache::install_packages("devtools")
Installing package into ‘/scicore/home/schwede/zohixe92/R/library’
(as ‘lib’ is unspecified)
also installing the dependencies ‘ini’, ‘gh’, ‘usethis’

* installing *binary* package ‘ini’ ...
* DONE (ini)
* installing *binary* package ‘gh’ ...
* DONE (gh)
* installing *binary* package ‘usethis’ ...
* DONE (usethis)
* installing *source* package ‘devtools’ ...
** package ‘devtools’ successfully unpacked and MD5 sums checked
** using staged installation
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
*** copying figures
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (devtools)

The downloaded source packages are in
	‘/scratch/RtmpdQwzfR/downloaded_packages’
Adding ‘devtools_2.0.2_R_x86_64-pc-linux-gnu.tar.gz’ to the cache

xrobin avatar Jun 01 '19 16:06 xrobin

Actually most packages installed just fine with crancache::install_packages. Only the following 7 failed: bigrf, simulatorZ, RGtk2, magick, cairoDevice, gWidgetsRGtk2 and rsgcc.

xrobin avatar Jun 01 '19 17:06 xrobin

Does crancache::install_packages() use some kind of mutex or similar to avoid clashes when checking/installing multiple packages in parallel? If not, could that explain the sporadic failure I'm seeing?

I've hacked together a revdep_precache_installs(pkg) function that call crancache::install_packages(..., lib = tempdir()) all on reverse package dependencies and their dependencies. This way I can populate the crancache file cache prior to launching revdep_check(). (It's not very clever right now; there are probably quite a few reinstalls of the same packages. One could identify an optimal installation order by inspection the complete dependency pkg DAG.) @gaborcsardi, does this approach make sense to you?

HenrikBengtsson avatar Jun 15 '19 04:06 HenrikBengtsson

bump: @HenrikBengtsson , can you please point me to your hacked function?

bbolker avatar Sep 23 '20 23:09 bbolker

@bbolker, it's your lucky day; it used to be an evergrowing messy R script, but I recently wrapped it all up in an R package: https://github.com/HenrikBengtsson/revdepcheck.extras

HenrikBengtsson avatar Sep 23 '20 23:09 HenrikBengtsson

Bug #375 may be the same issue. Failing to install dependencies of a reverse dependency. This was reported so 5 years ago. Are people using something else for revdep checks?

MLopez-Ibanez avatar Mar 20 '24 18:03 MLopez-Ibanez