[R-pkg-devel] Error creating union class: object ‘.__C__compMatrix’ not found

renozao renoz@o @end|ng |rom protonm@||@com
Mon May 18 20:56:45 CEST 2020


So I can't use neither use the the class mMatrix form Matrix in my package, neither define an internal union class of ("Matrix", "matrix").
If I define a union class with a different name, then I have to import the class "Matrix" from Matrix or I get a check error.
But then I need to add Matrix as Depends (or I get an error, which makes sense).
The issue is that if I add Matrix as Depends I get the error that the package "Matrix" is not found, when checking if the package can be installed.
This error does not happen when installing with R CMD INSTALL.

I eventually managed to reproduce the error: as soon as I add ggplot2 in Imports I get the error.
A DESCRIPTION file with this breaks:

Depends:
  Matrix
Imports:
  ggplot2


I have Matrix 1.2.18 and ggplot2 3.3.0





Sent with ProtonMail Secure Email.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Monday, May 18, 2020 2:31 PM, Duncan Murdoch <murdoch.duncan using gmail.com> wrote:

> On 29/04/2020 1:16 p.m., renozao wrote:
>
> > Thank you Martin,
> > Looks like the mMatrix class defined in Matrix is not exported in 3.6.3, maybe it is now exported in the current R-devel.
>
> Matrix doesn't have the same versions as R: it's a recommended package,
> not a base package. It can be updated independently of R. The current
> version on CRAN is 1.2-18, but the R-forge version is 1.3-0. Neither
> one exports mMatrix.
>
> Duncan Murdoch
>
> > In this case I'd rather use a conditional import and definition.
> > I'll try that route.
> > Bests,
> > Renaud
> > Sent with ProtonMail Secure Email.
> > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> > On Saturday, April 18, 2020 12:36 PM, Martin Maechler maechler using stat.math.ethz.ch wrote:
> >
> > > > > > > > renozao
> > > > > > > > on Wed, 8 Apr 2020 16:19:59 +0000 writes:
> > >
> > > > Thank you William for the reproducible example.
> > >
> > >      > Currently I using the following (same as in William's example):
> > >
> > >      > setClassUnion("mMatrix", c("Matrix", "matrix"))
> > >
> > >
> > > > Martin, are the changes made in the union class handling affecting the way we should declare them?
> > >
> > > > Thank you.
> > >
> > > > Bests,
> > >
> > >      > Renaud
> > >
> > >
> > > Thank you, Renaud, and Bill Dunlap.
> > > There is obviously a bit of a problem there, but it may well be
> > > "only" a problem in error handling.
> > > As Bill's trace(get, ..) shows, R tries to get
> > > "#HAS_DUPLICATE_CLASS_NAMES" which is indeed an indication of the problem:
> > > You are trying to REdefine a class union that already exists
> > > identically in the Matrix package:
> > > In the R-forge development version of 'Matrix', it is
> > > line 717 of Matrix/R/AllClass.R (and that will be close also
> > > in the CRAN version of Matrix).
> > > So at least for you, Renaud, the solution to the problem is easy:
> > > Just don't do what you should not do: What you want is already
> > > part of Matrix.... and after searching: It's been part of
> > > Matrix since ca. July 2012 ...
> > >
> > > But yes, there's a buglet in the 'methods' package currently,
> > > which leads to a misleading error message
> > > (It's arguable if it should give an error which it did not previously;
> > > I think it would be quite a good idea to give at least a
> > > warning as you are masking class definition of the Matrix
> > > package which is in your search() path or at least among the
> > > loaded namespaces at this time).
> > > Best,
> > > Martin
> > >
> > > > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> > >
> > >      > On Wednesday, April 8, 2020 11:19 AM, William Dunlap <wdunlap using tibco.com> wrote:
> > >
> > >
> > > > > Use trace() to get a bit more detail - .__C_compMatrix is looked for in the wrong environment with inherits=FALSE.
> > >
> > >      >>
> > >
> > >      >>> setClassUnion("mMatrix", c("Matrix", "matrix"))
> > >
> > >      >> Tracing get(name, envir = env) on entry
> > >
> > >      >> x=".AllMTable", envir="<environment: 0x21dcf10>", topenv="<environment: namespace:methods>", inherits=TRUE
> > >
> > >      >> Tracing get(name, envir = env) on entry
> > >
> > >      >> x=".MTable", envir="<environment: 0x2238cf0>", topenv="<environment: namespace:methods>", inherits=TRUE
> > >
> > >      >> Tracing get(name, envir = env) on entry
> > >
> > >      >> x=".AllMTable", envir="<environment: 0x21dcf10>", topenv="<environment: namespace:methods>", inherits=TRUE
> > >
> > >      >> Tracing get("#HAS_DUPLICATE_CLASS_NAMES", envir = .classTable) on entry
> > >
> > >      >> x="#HAS_DUPLICATE_CLASS_NAMES", envir="<environment: 0x2787710>", topenv="<environment: base>", inherits=TRUE
> > >
> > >      >> Tracing get(name, envir = env) on entry
> > >
> > >      >> x=".AllMTable", envir="<environment: 0x21dcf10>", topenv="<environment: namespace:methods>", inherits=TRUE
> > >
> > >      >> Tracing get(name, envir = env) on entry
> > >
> > >      >> x=".MTable", envir="<environment: 0x2238cf0>", topenv="<environment: namespace:methods>", inherits=TRUE
> > >
> > >      >> Tracing get(name, envir = env) on entry
> > >
> > >      >> x=".MTable", envir="<environment: 0x21dcf10>", topenv="<environment: namespace:methods>", inherits=TRUE
> > >
> > >      >> Tracing get(".SigLength", envir = env) on entry
> > >
> > >      >> x=".SigLength", envir="<environment: 0x21dcf10>", topenv="<environment: namespace:methods>", inherits=TRUE
> > >
> > >      >> Tracing get(".SigLength", envir = env) on entry
> > >
> > >      >> x=".SigLength", envir="<environment: 0x21dcf10>", topenv="<environment: namespace:methods>", inherits=TRUE
> > >
> > >      >> Tracing get(name, envir = env) on entry
> > >
> > >      >> x=".MTable", envir="<environment: 0x2238cf0>", topenv="<environment: namespace:methods>", inherits=TRUE
> > >
> > >      >> Tracing get(".SigLength", envir = env) on entry
> > >
> > >      >> x=".SigLength", envir="<environment: 0x2238cf0>", topenv="<environment: namespace:methods>", inherits=TRUE
> > >
> > >      >> Tracing get(".SigLength", envir = env) on entry
> > >
> > >      >> x=".SigLength", envir="<environment: 0x2238cf0>", topenv="<environment: namespace:methods>", inherits=TRUE
> > >
> > >      >> Tracing get(cname, envir = cwhere, inherits = FALSE) on entry
> > >
> > >      >> x=".__C__compMatrix", envir="<environment: R_GlobalEnv>", topenv="<environment: R_GlobalEnv>", inherits=FALSE
> > >
> > >      >> Error in get(cname, envir = cwhere, inherits = FALSE) :
> > >
> > >      >> object '.__C__compMatrix' not found
> > >
> > >      >> ...
> > >
> > >      >>
> > >
> > >      >> Bill Dunlap
> > >
> > >      >> TIBCO Software
> > >
> > >      >> wdunlap tibco.com
> > >
> > >      >>
> > >
> > >      >> On Wed, Apr 8, 2020 at 7:52 AM William Dunlap <wdunlap using tibco.com> wrote:
> > >
> > >      >>
> > >
> > >      >>> % R-devel --vanilla --quiet
> > >
> > >      >>>> library(Matrix)
> > >
> > >      >>>> setClassUnion("mMatrix", c("Matrix", "matrix"))
> > >
> > >      >>> Error in get(cname, envir = cwhere, inherits = FALSE) :
> > >
> > >      >>> object '.__C__compMatrix' not found
> > >
> > >      >>> Error in setClassUnion("mMatrix", c("Matrix", "matrix")) :
> > >
> > >      >>> unable to create union class:  could not set members "Matrix"
> > >
> > >      >>>> sessionInfo()
> > >
> > >      >>> R Under development (unstable) (2020-04-07 r78175)
> > >
> > >      >>> Platform: x86_64-pc-linux-gnu (64-bit)
> > >
> > >      >>> Running under: Ubuntu 16.04.6 LTS
> > >
> > >      >>>
> > >
> > >      >>> Matrix products: default
> > >
> > >      >>> BLAS/LAPACK: /usr/lib/libopenblasp-r0.2.18.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] Matrix_1.2-18
> > >
> > >      >>>
> > >
> > >      >>> loaded via a namespace (and not attached):
> > >
> > >      >>> [1] compiler_4.1.0  grid_4.1.0      lattice_0.20-41
> > >
> > >      >>>
> > >
> > >      >>> Bill Dunlap
> > >
> > >      >>> TIBCO Software
> > >
> > >      >>> wdunlap tibco.com
> > >
> > >      >>>
> > >
> > >      >>> On Wed, Apr 8, 2020 at 7:35 AM Martin Maechler <maechler using stat.math.ethz.ch> wrote:
> > >
> > >      >>>
> > >
> > >      >>>>>>>>> renozao
> > >
> > >      >>>>>>>>> on Mon, 30 Mar 2020 21:20:43 +0000 writes:
> > >
> > >      >>>>
> > >
> > >      >>>> > Hi,
> > >
> > >      >>>> > when R CMD check is run under R-devel (2020-03-29 r78108) I get the following error at installation:
> > >
> > >      >>>>
> > >
> > >      >>>> > Error in get(cname, envir = cwhere, inherits = FALSE) :
> > >
> > >      >>>> > object ‘.__C__compMatrix’ not found
> > >
> > >      >>>> > Error in setClassUnion("mMatrix", c("Matrix", "matrix")) :
> > >
> > >      >>>> > unable to create union class:  could not set members "Matrix"
> > >
> > >      >>>>
> > >
> > >      >>>> > This does not happen on R 3.6.3.
> > >
> > >      >>>>
> > >
> > >      >>>> > I tried with Matrix listed in Depends but I still get the same error.
> > >
> > >      >>>>
> > >
> > >      >>>> > Is this linked to some changes in union classes or the Matrix package?
> > >
> > >      >>>>
> > >
> > >      >>>> > Thank you.
> > >
> > >      >>>>
> > >
> > >      >>>> > Bests,
> > >
> > >      >>>> > Renaud
> > >
> > >      >>>>
> > >
> > >      >>>> Hi Renaud,
> > >
> > >      >>>> One reason you got no response here, is because we don't even
> > >
> > >      >>>> know about which package you are talking.
> > >
> > >      >>>>
> > >
> > >      >>>> So there's nothing, anybody can reproduce from your posting.
> > >
> > >      >>>>
> > >
> > >      >>>> There have been changes in R's dealing with class unions etc,
> > >
> > >      >>>> notably even *relating* to an earlier bug report on class unions
> > >
> > >      >>>> exactly for such a case which was *triggered* when people built
> > >
> > >      >>>> on such Matrix classes.
> > >
> > >      >>>>
> > >
> > >      >>>> But we would really want to be able to reproduce what you are seeing..
> > >
> > >      >>>>
> > >
> > >      >>>> Best regards,
> > >
> > >      >>>> Martin Maechler
> > >
> > >      >>>>
> > >
> > >      >>>> ETH Zurich, R Core Team *and* maintainer("Matrix")
> > >
> > >      >>>>
> > >
> > >      >>>> ______________________________________________
> > >
> > >      >>>> R-package-devel using r-project.org mailing list
> > >
> > >      >>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
> > >
> > >      > [[alternative HTML version deleted]]
> > >
> > >
> > > >
> > >
> > >      > R-package-devel using r-project.org mailing list
> > >
> > >      > https://stat.ethz.ch/mailman/listinfo/r-package-devel
> > >
> >
> > R-package-devel using r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-package-devel



More information about the R-package-devel mailing list