On Sep 14, 2011, at 9:52 AM, Paul Gilbert wrote:

> My understanding is that this cannot be done, for both licence and security 
> reasons. The package build expects source code and removes binaries. You can 
> link with binaries that are provided separately from the package, possibly 
> coming from a vendor that sells non-open source code, but you cannot include 
> them in the package.
> 

It is not quite true and it is not the reason for it failing ;). That reason is 
that libs is the wrong folder to put it in. Note that libs is the folder in the 
*installed* package that the shared object go to, not in the sources.

Also note that it is practically impossible to provide precompiled .so binaries 
(legal issues aside) because that would limit the package to one particular 
architecture and OS yet many R installations have at least two architectures. 
This also means that you would have to determine at build time where to put it 
... (or relay on R installation mechanism but then you must make sure your 
binary is compatible with the currently built architecture).

In practice this is occasionally done for very specific systems - for example 
Windows: it can be quite hard to compile some (open source) dependencies on 
Windows so they can be shipped as static binaries (for both x64 and i386) and 
used by the build process. On all other systems the system libraries are used 
instead (for an example of this approach see "png" or "jpeg" packages on CRAN). 
But still, the shared object (here .dll) is not shipped, because that depends 
on the R version, so it is created from the static libraries by the R package 
building process instead.

Cheers,
Simon


> Paul
> 
>> -----Original Message-----
>> From: [email protected] [mailto:r-devel-bounces@r-
>> project.org] On Behalf Of Francesco Finazzi
>> Sent: September 14, 2011 3:41 AM
>> To: [email protected]
>> Subject: [Rd] Building R package with precompiled shared library
>> 
>> Dear R users,
>> 
>> we are trying to build a R package that includes a precompiled shared
>> library, let's say mylib.so. We created the skeleton of the package
>> and we moved the mylib.so file into the libs folder that we created at
>> the same level of the folders man and R. Moreover we created the file
>> NAMESPACE and we added the line useDynLib(mylib, .registration=TRUE).
>> The building step seems to work correctly but when we try to install
>> the package we get
>> 
>> ** testing if installed package can be loaded
>> Error in library.dynam(lib, package, package.lib) :
>> shared library 'mylib' not found
>> 
>> we cannot understand what's wrong and where R searches for the mylib.so
>> files.
>> 
>> Any suggestion?
>> 
>> Thanks,
>> 
>> Michela and Francesco
>> 
>> ______________________________________________
>> [email protected] mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
> ====================================================================================
> 
> La version française suit le texte anglais.
> 
> ------------------------------------------------------------------------------------
> 
> This email may contain privileged and/or confidential information, and the 
> Bank of
> Canada does not waive any related rights. Any distribution, use, or copying 
> of this
> email or the information it contains by other than the intended recipient is
> unauthorized. If you received this email in error please delete it 
> immediately from
> your system and notify the sender promptly by email that you have done so. 
> 
> ------------------------------------------------------------------------------------
> 
> Le présent courriel peut contenir de l'information privilégiée ou 
> confidentielle.
> La Banque du Canada ne renonce pas aux droits qui s'y rapportent. Toute 
> diffusion,
> utilisation ou copie de ce courriel ou des renseignements qu'il contient par 
> une
> personne autre que le ou les destinataires désignés est interdite. Si vous 
> recevez
> ce courriel par erreur, veuillez le supprimer immédiatement et envoyer sans 
> délai à
> l'expéditeur un message électronique pour l'aviser que vous avez éliminé de 
> votre
> ordinateur toute copie du courriel reçu.
> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to