[R-pkg-devel] Error creating union class: object ‘.__C__compMatrix’ not found
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 at 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 at 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 at 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 at 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 at 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 at r-project.org mailing list
> [[alternative HTML version deleted]]
> R-package-devel at r-project.org mailing list
R-package-devel at r-project.org mailing list