A couple of days ago, the (effective) Maintainer and rather active developer
of the Matrix package Mikael Jagan (CC'ed) posted on the r-package-devel list
(the primary list for R package development) that the upcoming change of
Matrix 1.7-0, planned for March 11, will be _very midly disruptive_ but only
to the very small subset of Matrix dependents that _actually use its
headers_. See the full mail at [1]. The gory detail is that Matrix embeds and
uses an advanced sparse matrix library (called SuiteSparse) which it updates,
and the change in headers affects those (and only those!) who compile against
these headers.

Now, Matrix currently has 1333 packages at CRAN using it [2]. But he lists 15
(fifteen) of possibly breaking because these are the packages having a
'LinkingTo: Matrix' [3].  That 1.113 per cent.

It is similar for us. Running a simple `apt-cache rdepends r-cran-matrix | wc 
-l`
gets us 145 lines (including headers and meta packages). Call it 140 that a
transition would cover.

But among the 15 affected only five are in Debian:

  irlba    r-cran-irlba
  lme4     r-cran-lme4
  OpenMx   r-cran-openmx
  TMP      r-cran-tmp
  bcSeq    r-bioc-bcseq
  
One of these is mine (lme4), I can easily produce a sequenced update. I
suggested we deal with the other _four packages_ by standard bug reports and
NMUs as needed instead of forcing likely 140 packages through a transition.

Note that is in fact truly different from the past two hickups with Matrix
transition which happened at the R-only level of caching elements of its OO
resolution and whatnot hence affecting more package. This time it really is
compilation, and packages NOT touching the SuiteSparse headers (ie roughly
135 or so of the 140 Debian packages using Matrix) will not be affected.

That said, I of course defer to the release team. If the feeling is 'eff
this, transition it is' that is what we do. Whether I think is overkill or
not is moot.

Feel free to CC me as I am not longer a regular on debian-devel.

Cheers,  Dirk


[1] https://stat.ethz.ch/pipermail/r-package-devel/2024q1/010463.html
[2] In R:
    > db <- tools::CRAN_package_db()
    > matrixrevdep <- tools::package_dependencies("Matrix", reverse=TRUE, 
db=db)[[1]]
    > length(matrixrevdep)    # the vector 'matrixrevdep' list all
    [1] 1333
    > 
[3] LinkingTo:, despite its name, is the directive to include the package C
    headers in the compilation. The 'db' object above allows to us to subset
    which of the 1333 packages using Matrix also have a LinkingTo
 

-- 
dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

Reply via email to