[Rd] R package compilation: files in src directory should be ignored if C library is not available

Cule, Erika erika.cule05 at imperial.ac.uk
Fri Aug 17 11:11:44 CEST 2012


I have written an R package which contains C source code (in the directory pkg/src). 

Only a subset of the functions in the pkg/R directory contain a .C() call to the functions in the pkg/src directory. The rest of the package will still work and be useful without the functions containing a .C() call.

To compile the code in pkg/src requires the GSL library. This is detailed in the SystemRequirements line of the DESCRIPTION file and the Makevars file directs the compiler to LIB_GSL.

At what stage will installation fail for the end user if they don't have GSL installed? 

I have used Autoconf and configure, following the example in 1.2 of "Writing R Extensions" and the configure.ac file in the R package gsl, to detect whether the GSL library is installed on the computer and disable the R functions if the GSL library is not found (by using a TRUE/FALSE pattern substitution, as in the example in "Writing R Extensions"). If GSL is not available, will the package now install on another users machine with these functions disabled? Or upon installation will the installer try to install the code in pkg/src and fail because the libraries are not available?

Is there a practical way to test this? Both of the computers I have access to have GSL available, and installation works whether I set HAVE_GSL=TRUE or HAVE_GSL=FALSE (although in the latter case the corresponding R functions are disabled). 

I hope that this is clear, and am happy to post my code if it would be useful.

Many thanks in advance.

Erika

---

Erika Cule
PhD student in Statistical Genetics
Imperial College London
Department of Epidemiology and Public Health
erika.cule05 at imperial.ac.uk
http://occamstypewriter.org/erikacule/



More information about the R-devel mailing list