Hi Charles,

On 1 May 2017 at 14:53, Charles Plessy wrote:
| Le Sat, Apr 29, 2017 at 09:50:01AM -0500, Dirk Eddelbuettel a écrit :
| > 
| > I think I will cover these by hand now:
| > 
| >                package dotFortran  dotC recommended
| >  1:       class-7.3-14      FALSE  TRUE        TRUE
| >  2:      cluster-2.0.6       TRUE  TRUE        TRUE
| >  3:     foreign-0.8.68      FALSE  TRUE        TRUE
| >  4: KernSmooth-2.23-15       TRUE FALSE        TRUE
| >  5:        MASS-7.3-47      FALSE  TRUE        TRUE
| >  6:      Matrix-1.2-10      FALSE  TRUE        TRUE
| >  7:        mgcv-1.8-17      FALSE  TRUE        TRUE
| >  8:       nlme-3.1.131       TRUE  TRUE        TRUE
| >  9:        nnet-7.3-12      FALSE  TRUE        TRUE
| > 10:     spatial-7.3-11      FALSE  TRUE        TRUE
| > 11:    survival-2.41-3      FALSE  TRUE        TRUE
| > 
| > and we should binNMU the remaining ones satisfying
| > 
| >   binary: any                           (ie applicable for Debian binNMUs)
| >   has either .C() or .Fortran()
| > 
| > I have access to a fully expanded directory of CRAN sources of if we start 
we
| > the reverse depends I can refine the script above to get a set of packages
| > for which we can then set up binNMUs.
| > 
| > One caveat: the shell script does not (yet?) filter out those packages that
| > already had a post R 3.3.3 update which includes eg several from the set 
above.
| 
| Hi Dirk,
| 
| this is very neat to pinpoint which package needs to be rebuilt.  Related to

Let's recap: R Core told us in the release notes that with R 3.4.0, packages
containing .C() or .Fortran() calls need rebuilds with R 3.4.0 (or its release
candidate). Older builds will work for their R code, but not the compiled
code; hence the rebuilds.

This means the we have to find

  i)   the subset of packages having compiled code and
  ii)  among those having .C() / .Fortran and not .Call() and
  iii) those not yet having been rebuilt under R 3.4.0 (or its release 
candidate)

And I have more / better code now, still based on the RcppAPT package (and
its code on GitHub rather than CRAN). See the directory

  
https://github.com/eddelbuettel/rcppapt/tree/master/inst/scripts/debian-packages

In a nutshell, based on analysis I now ran twice, we

- have 514 reverse dependencies of r-base-core in Debian

- of which 487 match the '^r-' regexp suitable for package

- of which 241 have themselves a reverse dependency on libc6, ie have src/

- of which 149 have not yet been rebuilt

- of which 69 actually have .C() / .Fortran() calls

For that last step I grep'ed actual sources (as I have shell access to a
machine at CRAN central in Vienna which has all packages sources).

The list of the 69 packages follows (as printed by data.table)

                     package           Package  Version
 1:              r-cran-ade4              ade4    1.7-6
 2:          r-cran-adegenet          adegenet    2.0.1
 3:          r-cran-adephylo          adephylo   1.1-10
 4:            r-cran-amelia            Amelia    1.7.4
 5:               r-cran-ape               ape      4.1
 6:            r-cran-bayesm            bayesm    3.0-2
 7:            r-cran-bitops            bitops    1.0-6
 8:     r-cran-blockmodeling     blockmodeling    0.1.8
 9:           r-cran-boolnet           BoolNet    2.1.3
10:             r-cran-brglm             brglm    0.5-9
11:             r-cran-caret             caret   6.0-76
12:           r-cran-catools           caTools   1.17.1
13:            r-cran-cmprsk            cmprsk    2.2-7
14:              r-cran-coin              coin    1.2-0
15:          r-cran-contfrac          contfrac   1.1-10
16:        r-cran-data.table        data.table   1.10.4
17:              r-cran-deal              deal   1.2-37
18:            r-cran-deldir            deldir   0.1-14
19:           r-cran-desolve           deSolve     1.14
20:       r-cran-dosefinding       DoseFinding   0.9-15
21:               r-cran-eco               eco    3.1-7
22:               r-cran-erm               eRm   0.15-7
23:               r-cran-etm               etm    0.6-2
24:               r-cran-evd               evd    2.3-2
25:              r-cran-expm              expm  0.999-2
26:            r-cran-fields            fields      9.0
27:               r-cran-gam               gam   1.14-4
28:           r-cran-genabel           GenABEL    1.8-0
29:            r-cran-glmnet            glmnet   2.0-10
30:           r-cran-goftest           goftest    1.1-1
31:               r-cran-gsl               gsl 1.9-10.3
32:       r-cran-haplo.stats       haplo.stats    1.7.7
33:            r-cran-hexbin            hexbin   1.27.1
34:            r-cran-igraph            igraph    1.0.1
35:               r-cran-lhs               lhs     0.14
36:         r-cran-logspline         logspline    2.1.9
37:           r-cran-mapproj           mapproj    1.2-5
38:              r-cran-maps              maps    3.2.0
39:          r-cran-maptools          maptools    0.9-2
40:              r-cran-mcmc              mcmc    0.9-5
41:          r-cran-mcmcpack          MCMCpack    1.4-0
42:          r-cran-mixtools          mixtools    1.1.0
43:           r-cran-mlbench           mlbench    2.1-1
44:               r-cran-mnp               MNP    3.0-1
45:               r-cran-msm               msm    1.6.4
46:             r-cran-ncdf4             ncdf4     1.16
47:              r-cran-nnls              nnls      1.4
48:          r-cran-pbivnorm          pbivnorm    0.6.0
49:          r-cran-phangorn          phangorn    2.2.0
50:         r-cran-phylobase         phylobase    0.8.4
51:           r-cran-polycub           polyCub    0.6.0
52:         r-cran-princurve         princurve   1.1-12
53:              r-cran-pscl              pscl    1.4.9
54:               r-cran-qtl               qtl   1.41-6
55:      r-cran-randomfields      RandomFields   3.1.50
56: r-cran-randomfieldsutils RandomFieldsUtils   0.3.25
57:      r-cran-randomforest      randomForest   4.6-12
58:      r-cran-raschsampler      RaschSampler    0.8-8
59:             r-cran-rcurl             RCurl 1.95-4.8
60:                r-cran-sp                sp    1.2-4
61:              r-cran-spam              spam    1.4-0
62:          r-cran-spatstat          spatstat   1.51-0
63:               r-cran-spc               spc    0.5.3
64:             r-cran-spdep             spdep   0.6-13
65:      r-cran-surveillance      surveillance   1.13.1
66:               r-cran-tgp               tgp   2.4-14
67:        r-cran-tikzdevice        tikzDevice   0.10-1
68:             r-cran-vegan             vegan    2.4-3
69:              r-cran-vgam              VGAM    1.0-3
                     package           Package  Version

I'll be traveling to some workshops and conferences over the next two weeks
so it will be harder for me to re-run this.

But the code is generic, and I left comments in there. Anybody with access to
Debian unstable and R can run this (having to install r-cran-rcpp and
r-cran-data.table, and then having to install RcppAPT from source which is
quick). 

| this I had one more reminder from a member of the Release team that r-base
| should not be co-installable with the packages that it breaks.  This is 
related
| to the support of partial upgrades that I was mentioning earlier.
| 
| At this point I see 3 options:
| 
|  - For each rebuild, insert a "Breaks" relationship in r-base's control file;
| 
|  - Increment r-api-3 to r-api-4 (or r-api-3.4, etc.) in order to not have to
|    maintain a long list of "Breaks" declarations.  In that case, we have to
|    rebuild everything.
| 
|  - Just rebuild what has to be rebuilt, and do not support partial upgrades,
|    which is what has been done until now.

I still think that is _perfectly_ adequate as it reduces _487 potential_
builds down to _69 actual_ ones.

A few dozen binNMUs seems fine, a few hundred including hundreds of false
positives less so.
 
| Not supporting partial upgrades puts the maintainers of the r-cran and r-bioc
| packages between the hammer and the anvil.  This said, I think that we have
| made constant progresses over the years, so I do not feel shy saying "not yet"
| to the Release team again if needed.

We can actually analyse this data and find the packages needing rebuilds, and
that course of actions strikes me as the most appropriate one.

Cheers, Dirk


| Have a nice day,
| 
| Charles
| 
| -- 
| Charles Plessy
| Debian Med packaging team,
| http://www.debian.org/devel/debian-med
| Tsurumi, Kanagawa, Japan

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

Reply via email to