Skip to content

[Bioc-devel] How to fix the error checked in the development version of miRspongeR

3 messages · Zhang Junpeng, Hervé Pagès

#
Hi Bioconductor community,

When I build/check the miRspongeR R package (development version), there is
an error as follows. The release version of the miRspongeR R package is OK.

*Error: .onLoad failed in loadNamespace() for 'dbplyr', details:
  call: setClass(cl, contains = c(prevClass, "VIRTUAL"), where = where)
  error: error in contained classes ("character") for class ?ident?; class
definition removed from ?dbplyr?
Execution halted*

How can I fix this error? The details of error here:
https://master.bioconductor.org/checkResults/3.16/bioc-LATEST/miRspongeR/nebbiolo2-buildsrc.html

Thanks in advance
Junpeng
#
Hi Junpeng,

FWIW the EpiCompare package seems to be failing in exactly the same way:

https://bioconductor.org/checkResults/3.16/bioc-LATEST/EpiCompare/nebbiolo2-install.html

Also I can easily reproduce this on my laptop (Ubuntu 22.04):

 > BiocManager::install("miRspongeR")
Bioconductor version 3.16 (BiocManager 1.30.18), R 4.2.0 Patched 
(2022-05-04
 ? r82318)
Installing package(s) 'miRspongeR'
trying URL 
'https://bioconductor.org/packages/3.16/bioc/src/contrib/miRspongeR_2.1.0.tar.gz' 

Content type 'application/x-gzip' length 661557 bytes (646 KB)
==================================================
downloaded 646 KB

* installing *source* package ?miRspongeR? ...
** using staged installation
** libs
/usr/bin/gcc -I"/home/hpages/R/R-4.2.r82318/include" -DNDEBUG 
`/home/hpages/R/R-4.2.r82318/bin/Rscript -e "Rcpp:::CxxFlags()"` 
-I/usr/local/include?? -fpic? -O3 -c complex.c -o complex.o
/usr/bin/gcc -I"/home/hpages/R/R-4.2.r82318/include" -DNDEBUG 
`/home/hpages/R/R-4.2.r82318/bin/Rscript -e "Rcpp:::CxxFlags()"` 
-I/usr/local/include?? -fpic? -O3 -c registerDynamicSymbol.c -o 
registerDynamicSymbol.o
/usr/bin/gcc -shared -L/home/hpages/R/R-4.2.r82318/lib -L/usr/local/lib 
-o miRspongeR.so complex.o registerDynamicSymbol.o 
-L/home/hpages/R/R-4.2.r82318/lib -lR
installing to 
/home/hpages/R/R-4.2.r82318/library/00LOCK-miRspongeR/00new/miRspongeR/libs
** R
** inst
** byte-compile and prepare package for lazy loading
Error in completeSubclasses(classDef2, class1, obj, where) :
 ? trying to get slot "subclasses" from an object of a basic class 
("NULL") with no slots
Error: .onLoad failed in loadNamespace() for 'dbplyr', details:
 ? call: setClass(cl, contains = c(prevClass, "VIRTUAL"), where = where)
 ? error: error in contained classes ("character") for class ?ident?; 
class definition removed from ?dbplyr?
Execution halted
ERROR: lazy loading failed for package ?miRspongeR?
* removing ?/home/hpages/R/R-4.2.r82318/library/miRspongeR?

The downloaded source packages are in
 ?? ??/tmp/RtmpzFvmcs/downloaded_packages?
Updating HTML index of packages in '.Library'
Making 'packages.html' ... done

Let me take a closer look.

H.
On 20/09/2022 03:50, Zhang Junpeng wrote:

  
    
#
Looks like there's a nasty clash between dbplyr (CRAN) and the devel 
version of clusterProfiler:

 > library(clusterProfiler)
 > library(dbplyr)
Error in completeSubclasses(classDef2, class1, obj, where) :
 ? trying to get slot "subclasses" from an object of a basic class 
("NULL") with no slots
Error: package or namespace load failed for ?dbplyr?:
 ?.onLoad failed in loadNamespace() for 'dbplyr', details:
 ? call: setClass(cl, contains = c(prevClass, "VIRTUAL"), where = where)
 ? error: error in contained classes ("character") for class ?ident?; 
class definition removed from ?dbplyr?

This is on any platform with Bioc-devel and the latest version of each 
package:

 ? > packageVersion("clusterProfiler")
 ? [1] ?4.5.2?
 ? > packageVersion("dbplyr")
 ? [1] ?2.2.1?

Note that you need to load the two packages in this order to get this 
error. Loading them in the opposite order works fine.

This seems to break miRspongeR thru a series of events that involve the 
imports made by the SPONGE package:? miRspongeR imports clusterProfiler 
and SPONGE, in that order, and SPONGE itself imports dbplyr via tidyverse.

This is something you'll have to discuss with the clusterProfiler and/or 
dbplyr maintainers.

Finally note that, when miRspongeR is loaded, sessionInfo() reports 
about 200 packages loaded via a namespace! This is obviously a very 
fragile situation. Reducing that number would help make the package less 
vulnerable to these sorts of clash. Many of those "loaded via a 
namespace" packages are actually a consequence of SPONGE itself 
importing many many things (it imports the full tidyverse!), so there's 
probably some room for improvement on that side too.

Best,

H.
On 20/09/2022 13:32, Herv? Pag?s wrote: