[R-pkg-devel] Error when install binary from CRAN but not if install from source - Macintoh, lme4, Matrix, buildmer

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Wed Oct 19 20:55:24 CEST 2022


It seems that this could be mostly avoided if instead of caching copies 
of Matrix methods when buildmer was installed, R would cache promises to 
get those methods.  Then if the method for some particular signature 
changed, on first use buildmer would retrieve the current version.

There would still be a problem if Matrix completely dropped a method or 
it migrated to a different package, but I think that's less frequent 
than a change to the internal implementation.

Has any thought been given to making this change for R 4.3.0?

Duncan Murdoch



On 19/10/2022 3:39 a.m., Martin Maechler wrote:
>>>>>> Duncan Murdoch
>>>>>>      on Tue, 18 Oct 2022 15:17:33 -0400 writes:
> 
>      > I see the same thing.  This sounds like a problem in the handling of
>      > methods that has been discussed somewhat recently:
> 
>      > https://stat.ethz.ch/pipermail/r-devel/2022-September/081971.html
> 
>      > The problem is that when the binary is built, some code from other
>      > packages is kept as part of it.  When that other package is updated, you
>      > need a new source install of your own package (or a rebuild at CRAN to
>      > replace the binary) to cache the new code.
> 
>      > This can also be done explicitly by package startup code; I think this
>      > thread
> 
>      > https://stat.ethz.ch/pipermail/r-package-devel/2022q3/008481.html
> 
>      > turned out to be a case where rstan was caching something, and an update
>      > to ggplot2 didn't work with the cached data.  Given the error message,
>      > your issue sounds more like the first one.
> 
>      > I don't recall if there was a resolution.  Maybe you can ask the CRAN
>      > maintainers to rebuild buildmer.
> 
>      > Duncan Murdoch
> 
> Yes, thank you, Duncan!
> 
> The binary version of 'builmer' (or also lme4 ?) must have been created
> with an older version of Matrix  (which did not have the
> dgeMatrix_getDiag C code)  and the respective maintainer of the
> binary builds (*) must rebuild the binary versions of those
> Matrix-reverse-dependant packages,
> ---
> *) in this case the macOS ones (both for Intel and ARM Macs)
> 
> Martin Maechler
> (maintainer of Matrix)
> 
> 
> 
> 
> 
> 
> 
> 
>      > On 18/10/2022 2:51 p.m., Carl Schwarz wrote:
>      >> I've run into a problem where if you install the lme4, Matrix, and buildmer
>      >> packages using the binaries from CRAN on a Mac, I get an error message
>      >> about a missing method, but if I install the same packages from SOURCE, the
>      >> code runs fine.
>      >>
>      >> I would have thought that installing from source or using the binary
>      >> should look the same.
>      >>
>      >> Any suggestions on how to proceed to resolve this issue?
>      >>
>      >> The maintainer of buildmer is also puzzled.
>      >> You can follow the issue in more detail at:
>      >> https://github.com/cvoeten/buildmer/issues/20
>      >>
>      >> This is way above my paygrade...
>      >>
>      >> Carl Schwarz
>      >>
>      >> ------------------------------------------------------
>      >>
>      >> Tried this on an intel-Mac and arm-Mac with the same result.
>      >> Works fine on Windows machines under both scenarios.
>      >>
>      >> Here is a test example
>      >>
>      >> library(buildmer)
>      >> library(lme4)
>      >>
>      >> nrow <- 100
>      >>
>      >> test <- data.frame(x01=runif(nrow),
>      >> y=runif(nrow)<.1, block=as.factor(floor((1:nrow)/50)))
>      >> head(test)
>      >>
>      >>
>      >> fit.model <- lme4::glmer(y~x01 + (1|block), data=test,
>      >> family=binomial(link="logit"))
>      >> fit.model # this works
>      >>
>      >> class(fit.model)
>      >>
>      >> summary(fit.model)
>      >> # gives the following error message
>      >> Error in diag(from, names = FALSE) : object 'dgeMatrix_getDiag' not found
>      >>
>      >> A pdf document showing output is attached (shows the sessionInfo etc).
>      >>
>      >> When you install the buildmer and Matrix packages from SOURCE, it runs fine.
>      >>
>      >> I've tried all combinations of installing binary/source and only if both
>      >> packages (Matrix and buidmer) are installed from source, does the code run.
>      >>
>      >> Same issue on an intel-Mac.
>      >> Same issue when running under the R directly rather than Rstudio on a Mac.



More information about the R-package-devel mailing list