Thanks Uwe

I am not quite sure I understand.

To clarify, do you mean writing my R functions as something like:

functionRequiringGsl <- function(arg1, arg2) 
{
        if(require(gsl))
        {
                ## Some functions that use GSL 
                ## called using .C()
        } else {
                stop("GSL not available")
        }
}

If so, I still don't understand what happens when I compile the package if GSL 
is not installed on the computer, as there will still be C code in the src 
directory.

Thanks again

Erika


On 17 Aug 2012, at 12:35, Uwe Ligges wrote:

> 
> 
> On 17.08.2012 11:11, Cule, Erika wrote:
>> 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?
> 
> Yes, you have to work around the installation steps that compile and link 
> your C sources and then the call to dynload the shared library in R.
> 
> It is porbably easier to use the gsl library via the gsl package, given it 
> ptovides the gsl functionality you are using. In that case, you just need to 
> suggest the gsl package an load it for the one function on demand only.
> 
> Best,
> Uwe ligges
> 
> 
>> 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.cul...@imperial.ac.uk
>> http://occamstypewriter.org/erikacule/
>> 
>> ______________________________________________
>> R-devel@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>> 

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to