From edd at debian.org  Tue Mar 21 18:30:58 2017
From: edd at debian.org (Dirk Eddelbuettel)
Date: Tue, 21 Mar 2017 12:30:58 -0500
Subject: [Rd] Incompatible change in R-devel
In-Reply-To: <667a73f1-dbd9-4008-5ab2-3099b4b9a818@stats.ox.ac.uk>
References: <f9a7edaa-63f9-f79f-f750-39d44511c188@stats.ox.ac.uk>
	<22737.22259.497157.821096@max.eddelbuettel.com>
	<667a73f1-dbd9-4008-5ab2-3099b4b9a818@stats.ox.ac.uk>
Message-ID: <22737.25426.686065.795521@max.eddelbuettel.com>


On 21 March 2017 at 17:18, Prof Brian Ripley wrote:
| On 21/03/2017 16:38, Dirk Eddelbuettel wrote:
| > 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.

Thanks for the prompt follow-up. Between your email and corresponding entry
in NEWS tagged over at the 'daily r-devel changes' RSS feed, I was also
thinking this might be limited to .C and .Fortran, but _not_ the .Call so
much more common in my world.
 
| 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).

Ok, thanks for the clarification.
 
| > 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).

Thanks also for the illustration.

Dirk

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



[Rd] Incompatible change in R-devel
Dirk Eddelbuettel