From ripley at stats.ox.ac.uk  Tue Mar 21 18:18:26 2017
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Tue, 21 Mar 2017 17:18:26 +0000
Subject: [Rd] Incompatible change in R-devel
In-Reply-To: <22737.22259.497157.821096@max.eddelbuettel.com>
References: <f9a7edaa-63f9-f79f-f750-39d44511c188@stats.ox.ac.uk>
	<22737.22259.497157.821096@max.eddelbuettel.com>
Message-ID: <667a73f1-dbd9-4008-5ab2-3099b4b9a818@stats.ox.ac.uk>

On 21/03/2017 16:38, Dirk Eddelbuettel wrote:
>
> Hi Brian,
>
> On 21 March 2017 at 07:29, Prof Brian Ripley wrote:
> | As of today's commit r72375 all packages with native-routine
> | registration of C or Fortran routines need to be reinstalled in R-devel
> | (and that include some of the recommended packages in R itself which
> | will not be reinstalled via make dependencies, so we advise a clean
> | rebuild of R).
>
> I am confused by this.
>
> So in order to test this, I just triggered rebuild of the smaller drd ("daily
> r-devel") and r-devel Docker images for R.
>
> Using drd, I used R 3.3.3 to install digest and anytime (also installing Rcpp
> and BH). I then launch the R-devel build freshly created, and reported as
>
>  root at b00daf469882:/# RD --version
>  R Under development (unstable) (2017-03-21 r72380) -- "Unsuffered Consequences"
>
> yet both digest and anytime loaded fine by R-devel. Despite the fact that
> they were installed by R 3.3.3.

None register C/Fortran routines for .C or .Fortran.

My belief is that packages which register more than one .C or more than 
one .Fortran native routine are affected, but that may not be exhaustive 
(and might depend on the compiler).

> As I understand your email, that should not have worked.  So I must be
> missing something -- can you help set me straight?

All packages should load ... the issue is finding (all of the) 
registered symbols.  Here's an example of what can go wrong, x86_64 Linux;

 > library(mgcv, lib = "/usr/local/lib64/R/library") # R 3.3.3
Loading required package: nlme
This is mgcv 1.8-17. For overview type 'help("mgcv-package")'.
 > mgcv:::in.out
...
     um <- .C(C_in_out, bx = as.double(bnd[, 1]), by = as.double(bnd[,
...
 > mgcv:::C_in_out
Error in get(name, envir = asNamespace(pkg), inherits = FALSE) :
   object 'C_in_out' not found

(the last message being found in testing a package which called mgcv).

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Emeritus Professor of Applied Statistics, University of Oxford



[Rd] Incompatible change in R-devel
Prof Brian Ripley