[Rcpp-devel] help packaging Rcpp modules

Dirk Eddelbuettel edd at debian.org
Wed May 9 02:32:50 CEST 2012


On 8 May 2012 at 18:34, James Simone wrote:
| Hi Dirk,
| 
| Thank You for the quick reply.
| 
| 
| After reading many posts, I found your suggestion works:
| 
|  > R.version.string
| [1] "R version 2.13.1 (2011-07-08)"
|  > require(Rcpp)
|  > dl <- dyn.load("mod.so")
|  > mod <- Module("mod",PACKAGE=dl)
|  > mod$norm(1,2)
| [1] 2.236068

Oh, gee, good catch -- had forgotten about that one.  Well, there's hope that we can
fix it via the loading mechanism.  Just a question of getting the external
pointer to the right place...

Dirk
 
| On 05/08/2012 06:14 PM, Dirk Eddelbuettel wrote:
| >
| > Hi James,
| >
| > On 8 May 2012 at 17:51, James Simone wrote:
| > | I have followed the Rcpp developer's recommendation that a package
| > | greatly simplifies using RCPP_MODULE wrappering. Unfortunately, I'm
| > | having difficulty building and checking even a simple package
| > | containing an Rcpp module. I have read previous posts on this topic
| > | but I did not find anything helpful. I must be overlooking something
| > | very simple, please help.
| >
| > You did the right thing.
| >
| > Unfortunately, things are a little bit in flux right now as some of the
| > related 'module loading' code got changed recently, and not all pieces have
| > been put together right.  I am flipping back and forth between our current
| > SVN version and the most recent release 0.9.10, but I fear that 0.9.10 isn't
| > quite right with R 2.15.0.
| >
| > To make matters worse, Romain appears to be mostly off email right now.
| >
| > So I don't have an immediate fix.  Modules loading should get better with R
| > 2.15.1 making it simpler than the zzz.R you have below -- but in the meantime
| > you may have to resort to non-Modules code for Rcpp.
| >
| > Sorry,  Dirk
| >
| >
| > | The package check fails with this error:
| > | ** testing if installed package can be loaded
| > | Error : .onLoad failed in loadNamespace() for 'mod', details:
| > |    call: value[[3L]](cond)
| > |    error: failed to load module mod from package mod
| > | no binding for "norm"
| > |
| > | The package skeleton was created with Rcpp.package.skeleton() to which
| > | I added a C++ source file and then edited files according to the
| > | 'Read-and-delete-me' file.
| > |
| > | Here are my build and check steps:
| > |
| > | $ R CMD build mod
| > | * checking for file `mod/DESCRIPTION' ... OK
| > | * preparing `mod':
| > | * checking DESCRIPTION meta-information ... OK
| > | * cleaning src
| > | * checking for LF line-endings in source and make files
| > | * checking for empty or unneeded directories
| > | * building `mod_1.0.tar.gz'
| > |
| > | $ R CMD check mod
| > | * using log directory '/home/simone/R/Rcpp/module/mod.Rcheck'
| > | * using R version 2.13.1 (2011-07-08)
| > | * using platform: x86_64-pc-linux-gnu (64-bit)
| > | * using session charset: UTF-8
| > | * checking for file 'mod/DESCRIPTION' ... OK
| > | * checking extension type ... Package
| > | * this is package 'mod' version '1.0'
| > | * checking package name space information ... OK
| > | * checking package dependencies ... OK
| > | * checking if this is a source package ... OK
| > | * checking for executable files ... OK
| > | * checking whether package 'mod' can be installed ... ERROR
| > | Installation failed.
| > |
| > | The package skeleton was created with Rcpp.package.skeleton().
| > |
| > | Here is the module directory structure:
| > | $ /bin/ls -R mod
| > | mod:
| > | DESCRIPTION  man  NAMESPACE  R  Read-and-delete-me  src
| > |
| > | mod/man:
| > | mod-package.Rd
| > |
| > | mod/R:
| > | zzz.R
| > |
| > | mod/src:
| > | Makevars  Makevars.win  rcpp_module.cpp
| > |
| > | Here are the key files:
| > |
| > | $ cat mod/NAMESPACE
| > | useDynLib(mod)
| > | exportPattern("^[[:alpha:]]+")
| > | import( Rcpp )
| > |
| > | $ cat mod/R/zzz.R
| > |
| > | .onLoad<- function(libname, pkgname) {
| > |      require("methods", character=TRUE, quietly=FALSE)
| > |      loadRcppModules()
| > | }
| > |
| > | $ cat mod/src/rcpp_module.cpp
| > | #include<math.h>
| > | #include<Rcpp.h>
| > |
| > | double norm( double x, double y ) {
| > |    return sqrt( x*x + y*y );
| > | }
| > |
| > | RCPP_MODULE(mod) {
| > |    using namespace Rcpp;
| > |    function( "norm",&norm );
| > | }
| > | _______________________________________________
| > | Rcpp-devel mailing list
| > | Rcpp-devel at lists.r-forge.r-project.org
| > | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
| >
| 

-- 
R/Finance 2012 Conference on May 11 and 12, 2012 at UIC in Chicago, IL
See agenda, registration details and more at http://www.RinFinance.com


More information about the Rcpp-devel mailing list