[Rcpp-devel] C++11 Solaris cmath/math.H

Dirk Eddelbuettel edd at debian.org
Mon Sep 11 13:28:30 CEST 2017


Jan: This is hard/impossible for me to read. I do not use a html email
client, so if you used colour here, I don't see.  Please use indentation if
you can.

On 10 September 2017 at 22:35, Jan Wijffels wrote:
|  Solaris no longer really matters.
| Does that mean that CRAN will accept a package which gives errors on
| Solaris?

I don't know. Only CRAN can speak to that. But Solaris no exists (as an
Oracle product) and is no longer maintained at U Oxford meaning CRAN may noe
have test machines any more.

| 
| You could add C++11 conditionally, ie only on Linux/macOS/Windows
| Yes, but I always need C++11 for this package. I just wanted to make a
| small reproducible example. The bigger reproducible example is the package
| at https://github.com/bnosac/udpipe

Fine, then use it. I use CXX_STD=CXX11 in many of my packages too.
 
| If I add the Rcpp.h header to file
| https://github.com/bnosac/udpipe/blob/master/src/udpipe.cpp, I'm getting
| issues similar to this
| 
| udpipe.cpp:23406:30: error: macro "Free" passed 2 arguments, but takes just 1
|    alloc->Free(alloc, p->probs);

Quite possibly not a Solaris issue but a simply _ordering issue_: place
Rcpp.h last, not first, and/or tell R not to define macros. An `#undef`
may help too.
 
| ​ Also [[Rcpp::plugins(cpp11)]] should not be needed in a package.
| Thank you for the remark. The udpipe package currently uses CXX_STD=CXX11
| in Makevars and specifies SystemRequirements: C++11 in DESCRIPTION. Example

You need one of these two, not both.

| was just put there to show a minimal example of the error, coming from when
| Rcpp compiles the attributes.
| 
| If you could provide a pointer where I should look for a solution, this
| would be great otherwise the package which is now on CRAN will be rejected
| any time soon I think.

Try reordering.

Hth,  Dirk

| 
| best,
| Jan
| 
| 
| 
| 
| 
| 
| Jan Wijffels
| Statistician
| www.bnosac.be  | +32 486 611708
| 
| On 6 September 2017 at 18:49, Dirk Eddelbuettel <edd at debian.org> wrote:
| 
| >
| > Hi Jan,
| >
| > On 6 September 2017 at 15:03, Jan Wijffels wrote:
| > | I'm trying to fix the installation issue I have with the package udpipe:
| > | https://github.com/bnosac/udpipe but I'm getting issues on Solaris
| > giving
| > | messages like this:
| >
| > Solaris no longer really matters.
| >
| > | If I do not add ​SystemRequirements: C++11 and remove the Makevars file,
| > | this works fine on Solaris.
| >
| > You could add C++11 conditionally, ie only on Linux/macOS/Windows.  You
| > could
| > use (even a shell script named) configure for that.
| >
| > | I need however C++11 as I need it in the udpipe
| > | R package for building udpipe.cpp but can't add
| > | to that udpipe.cpp file the following types of statements due to
| > conflicts
| > | on the use of the Free macro.
| > | #include <Rcpp.h>
| > | using namespace Rcpp;
| > | // [[Rcpp::plugins(cpp11)]]
| >
| > Can you explain a bit more?  What Free macro?  Do you know about forcing R
| > to
| > add Rf_ to its macros?
| >
| > Also [[Rcpp::plugins(cpp11)]] should not be needed in a package.
| >
| > Dirk
| >
| > --
| > http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
| >

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org


More information about the Rcpp-devel mailing list