[Rd] Linking to the BH package introduces CRAN warnings

kaveh vakili.kaveh.email at gmail.com
Wed Nov 5 00:55:15 CET 2014


Dear all,


the simple code in below, when send to the
win-builder returns the following (and no other)
warning:


* checking compiled code ... WARNING
File 'quicky/libs/i386/quicky.dll':
   Found '_ZSt4cerr', possibly from 'std::cerr' (C++)
     Object: 'quicky.o'
   Found 'abort', possibly from 'abort' (C), 'runtime' (Fortran)
     Object: 'quicky.o'
File 'quicky/libs/x64/quicky.dll':
   Found '_ZSt4cerr', possibly from 'std::cerr' (C++)
     Object: 'quicky.o'
   Found 'abort', possibly from 'abort' (C), 'runtime' (Fortran)
     Object: 'quicky.o'

Compiled code should not call entry points which might terminate R nor
write to stdout/stderr instead of to the console, nor the C RNG.

See 'Writing portable packages' in the 'Writing R Extensions' manual.


Here is the source:

#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <functional>
#include <fstream>
#include <iostream>
#include <math.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <sstream>
#include <vector>
#include <random>

#include <boost/math/distributions/normal.hpp>
#include <boost/math/distributions/chi_squared.hpp>

#include <Eigen/Dense>

using namespace std;
using namespace Eigen;
using Eigen::MatrixXd;
using Eigen::VectorXd;
using Eigen::VectorXi;
using Eigen::RowVectorXd;


using boost::math::chi_squared;
using boost::math::quantile;
using boost::math::complement;
using boost::math::normal_distribution;
using namespace boost::math::policies;

typedef policy<
       promote_double<true>
       > my_policy_norm;
typedef policy<
       promote_double<true>
       > my_policy_chi2;

typedef boost::math::normal_distribution<double,my_policy_norm> my_norm;
typedef boost::math::chi_squared_distribution<double,my_policy_chi2> 
my_chi2;


VectorXd GetQs(const VectorXd& x){
     const int n=x.size();
     double mytol=1e-8;
     double the_max=x.maxCoeff();
     double the_min=x.minCoeff();
     double the_rag=(the_max-the_min);
     if(the_rag<mytol)    return(x);
     if(1.0-the_max<mytol)    return(x);
     if(the_min<mytol)    return(x);
     VectorXd y=x.array();
     for(int i=0;i<n;i++) 
y(i)=sqrt(quantile(complement(my_chi2(1.0),x(i))));
     return(y);
}
extern "C"{
     void quicky(int* rn,double* xi,double* yi){
         const int n=*rn;
         VectorXd x=Map<VectorXd>(xi,n);
         Map<VectorXd>(yi,n)=GetQs(x);
     }
}


So I guess, I should fill a bug report with the
BH maintainer?

Best regards,


On 2014-11-04 23:52, Dirk Eddelbuettel wrote:
> Gentlemen,
>
> On 4 November 2014 at 23:36, kaveh wrote:
> | Dear Hadley,
> |
> | Thank you for this information, maybe the CRAN gods
> | will look favourably on this case too,
>
> You seemed to have missed a point my earlier email tried to stress: Inclusion
> of BH does not lead to the warning.
>
> All this depends on WHICH headers are included, and the OP will need to sort
> this out by modifying his code.
>
> Dirk
>   
> | Best regards,
> |
> | On 2014-11-04 23:32, Hadley Wickham wrote:
> | >>> | However, it seems some of the codes in the BH package
> | >>> | might. At any rate, when I include some boost headers such as
> | >>> | boost/math/distributions/ through BH, I get the following warnings
> | >>> |   when  submitting to the win-builder page:
> | >>> |
> | >>> |
> | >>> |    Found '_ZSt4cerr', possibly from 'std::cerr' (C++)
> | >>> |
> | >>> |    Found 'abort', possibly from 'abort' (C), 'runtime' (Fortran)
> | >>> |
> | >>> |    Found '_ZSt4cerr', possibly from 'std::cerr' (C++)
> | >>> |
> | >>> |    Found 'abort', possibly from 'abort' (C), 'runtime' (Fortran)
> | >> You’re kind of out of luck. These functions are both:
> | >>   - used by the boost headers
> | >>   - forbidden by R, well at least forbidden by CRAN
> | > Maaaaybe - I had this note in RSQLite, and CRAN seemed ok with my explanation:
> | >
> | > * checking compiled code ... NOTE
> | >    File ‘/Users/hadley/Documents/databases/RSQLite.Rcheck/RSQLite/libs/RSQLite.so’:
> | >      Found ‘___stderrp’, possibly from ‘stderr’ (C)
> | >        Object: ‘sqlite-all.o’
> | >
> | >    This is in C code from the embedded SQLite database.
> | >
> | >
> | > Hadley
> | >
> |
>



More information about the R-devel mailing list