[Rcpp-devel] Rcpp and required steps before next release

Dirk Eddelbuettel edd at debian.org
Tue Jan 28 02:35:56 CET 2014


All,

A new Rcpp release is ready. But we need to take a few step to get to it.

With considerable help from Kevin Ushey, I have spent the last two weeks
testing this release against all known [but 5] CRAN dependents (and Kevin did
the same for BioConductor), identifying and correcting a few last minute
issues, and preparing patches for the few packages which need a change. More
on that below. Per JJ's suggestion, we also rebuilt the entire Rcpp Gallery
which lead to another fix.

So in sum, we are at the same time excited about the new release, and pretty
confident that it will be a reasonably smooth passage.

There is one major change in the build process: Romain changed Rcpp to
instantiate all required symbols via registration with R (see Section 5.4 of
Writing R Extensions).  The non-technical upshot is that there is no longer a
linking step, and src/Makevars will go away for most packages. [ Exceptions:
Armadillo users still to link to LAPACK,BLAS,FORTAN as provided by R; those
using an external library still need to link to it too. But no more linking
to Rcpp. ]

[ The release also brings a run-time change. You will probably have to
  reinstall all packages using Rcpp on all your systems. See below for a
  pointer to a short script finding all those packages. ]

I kept track of all the testing, scripts, logs and patches here:

     https://github.com/RcppCore/rcpp-logs

What follows below is the file status/status-2014-01-27.txt summarizing
things.  Please give it a read (below, or via the repo).  I will also contact
the maintainers of the fifteen packages needed a simple Imports:/importFrom:
patch, and those of the three other packages with issues.

Per discussion with the CRAN maintainers, it has been suggested to plan a
week for this next step of prepating the client packages.  

In case of questions, please do not hesitate to email me, or better still,
the rcpp-devel list here.

Regards,

Dirk 
on behalf of the Rcpp Core team





Release status of Rcpp as of 2014-01-27
=======================================


Summary
-------

Running the script summarizing results straight out of its repo:

    edd at max:~/git/rcpp-logs$ Rscript results/Rcpp-Summary-20140112.R 
    Good          157 
      AsIs        139
      w/Imports   15 
      w/Other     2
      w/Question  1 
    Bad Rcpp      0 
      RcppApi     0 
      Unclear     0 
    Bad other     6 
      BioCDep     4 
      NotRcpp     1 
      Skipped     1 
    Total         163 
    Bad Rcpp Pct  0 

The scripts contains more details and comments. It reflect two weeks of
testing, patching and refinements following an initial batch test on Jan 12.

The script, patches, summary (as well as old release checks) are in the
repository at https://github.com/RcppCore/rcpp-logs


Current state:
--------------

Rcpp development sources are in the GitHub repo 

    https://github.com/RcppCore/Rcpp

and build and test fine.  

The rest of this post is about how this version fares relative to existing
CRAN packages with a reverse dependency on Rcpp.


Good packages: Works "As Is"
----------------------------

The vast majority of packages -- 139 in total -- build as-is under the
upcoming Rcpp releease, including 'R CMD check' which is very satisfying.


Good packages: Need an Imports / importFrom update
--------------------------------------------------

Fifteen packages need to 

    i)  add   Imports: Rcpp               to DESCRIPTION

    ii) add   importFrom(Rcpp, evalCpp)   to NAMESPACE

Note that just adding import(Rcpp) does not suffice.

We have provided patches in this Github repo / directory:

    https://github.com/RcppCore/rcpp-logs/tree/master/patches/2014-01

for the following packages

    CDM-2.4-9.patch
    fdaMixed-0.3.patch
    gRbase-1.6-12.patch
    gRim-0.1-17.patch
    HLMdiag-0.2.3.patch
    lme4-1.05.patch
    openair-0.9-0.patch
    rgam-0.6.2.patch
    Ruchardet-0.0-2.patch
    Rvcg-0.6-3.patch
    SBSA-0.2.2.patch
    sirt-0.41-21.patch
    SpatialTools-0.5.5.patch
    strum-0.1.patch
    TAM-1.0-0.patch

I will also contact each of these maintainers by email.


Good packages: Need another update / fix
----------------------------------------

Two remaining package needs to apply a minimal change to their include files
and order (in essence: include just Rcpp.h, or RcppArmadillo.h, and no other
Rcpp* headers as this can often derail some internal interdependencies).

We have provided patches in this Github repo / directory:

    https://github.com/RcppCore/rcpp-logs/tree/master/patches/2014-01

for the following package

    httpuv-1.2.1.patch

The dplyr package is already fixed in its repo as well and builds, but needs
an update on CRAN. I also suggested a minor update to the examples (which do
not always check if packages from a Suggests: are installed as it should).

A few of our packages neededed fixes as well, we first updated them in their
respective R-Forge or GitHub repos, and have since uploaded them to CRAN:
RQuantLib, RcppClassic, RcppEigen, RcppZiggurat as well as an earlier change
in RProtoBuf

Special thanks to Alexios who already applied patches to rugarch and rmgarch,
and uploaded those new versions to CRAN, and to Martin Vincent who relaxed a
test condition in his sglOptim and uploaded it to CRAN.


Good packages: Open question
----------------------------

Amelia builds, and tests fine -- but loops forever in one segment in the
vignette.  After discussing this with Matt it was concluded that this is
probably an Amelia issue.


Bad/unknown packages: Missing Depends on BioConductor
-----------------------------------------------------

Four packages were not tested as their Depends included BioConductor packages:

     GeneticTools GOsummaries orQA snplist 

It would be nice if someone with BioC installs could test these.


Bad/unknown: Not Rcpp
---------------------

One packages has anoother issues:

     roxygen2  does not terminate its unit test


Bad/skipped: Not tested
-----------------------

As before, we have excluded the quadrupen package as its test appears to run
for hours on end.


BioConductor
------------

Kevin also tested the sixteen or so BioConductor packages, see 

     https://github.com/kevinushey/RcppBiocChecks

One package needs one of our fixed packages, another fails with an include
issue similar to the one reported above -- and the rest passes.


Summary
=======

We consider Rcpp ready for release.  

Per discussion with CRAN, we plan to upload Rcpp in a week from giving
maintainers time to apply the patches we prepared.



Appendix
--------

There is also a run-time issue.  We recommend to reinstall all packages that
use Rcpp.  A helper script is provided at 

   https://github.com/RcppCore/rcpp-logs/blob/master/scripts/showReverseRcppDepends.r

which lists installed package that use Rcpp, and for which current sources
are (or are not) currently available on CRAN and its mirrors.


-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com


More information about the Rcpp-devel mailing list