[Rcpp-devel] Build failures under windows 64 on R-forge?
Dirk Eddelbuettel
edd at debian.org
Wed Jan 11 20:30:41 CET 2012
On 11 January 2012 at 13:03, Douglas Bates wrote:
| On Wed, Jan 11, 2012 at 11:06 AM, Dirk Eddelbuettel <edd at debian.org> wrote:
| >
| > On 9 January 2012 at 13:18, Douglas Bates wrote:
| > | On Mon, Jan 9, 2012 at 12:50 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
| > | > Just a guess. Try tossing either one at win-builder.
| > |
| > | I did throw lme4Eigen at win-builder. Same errors. I'll try RcppEigen.
| >
| > Did you get anywhere with this? I am a bit pressed for time during the week
| > but could possibly help one of the evenings, or maybe on the weekend.
|
| Not really. Given that the problem seems to be from a wrap
| instantiation, I was hoping that it could be made to go away by adding
| a wrap specialization, similar to the specialization of as<int> to use
| ::Rf_asInteger. However, I haven't seen any changes by Romain
| regarding the specialization of as so I would be guessing on how to do
| the specialization of wrap.
I think this is different. We have been over this a few times. If I remember
correctly:
1) Old g++ (up to 4.4 or so) treated C++ on this more loosely
2) Newer g++ (4.5 ?, surely 4.6) complain about 'long long' as it is not
part of the C++1998 standard, only of C++2003.
3) You only get C++2003 behaviour if you use -std=c++0x
4) CRAN treats -std=c++0x as non-portable so we cannot really use it at
the package level, and consequently, 'plain' Rcpp does not see 'long
long'.
5) RcppCommon.h enables '#define RCPP_HAS_LONG_LONG_TYPES' if 4) is given
so the advice is to wrapp /all/ sections using 'long long' in
#ifdef RCPP_HAS_LONG_LONG_TYPES
Still with me and not fallen asleep?
Now, there had been a distinct issue with the introduction of int64 support
in 0.9.8 which also removed long support, but that is a different issue and
taken care of in Rcpp 0.9.9 (at the expense of int64 support, which
presumably nobody but Google uses and I conjecture they have enough internal
smarts to patch that locally until Romain comes up with a more generic fix).
How to enable all this transparently on all compiler versions (back to g++
4.2.1 used on a family of machines originating in Cupertino, CA, ...) and
word size (int is long on 64 bit but not on 32 bit) etc is a bit of a pain.
Rcpp, I believe, currently gets it right.
| Also, it is difficult to test it because it means changing Rcpp then
| re-installing RcppEigen and lme4Eigen - not something that can be done
| easily at win-builder. That means creating a windows 64 build
| environment under virtualbox or something like that. At this point I
| would prefer to wait to see if it sorts itself out.
"L'espoir fait vivre" or hope springs eternal...
| > It did look like the one of those "'long long' not know under C++2003". So I
| > would have a look at what Rcpp does, try a three-liner function with Rcpp
| > using a long long and go from there.
I still recommend this, but I may as have missed something alltogether. Am a
little undercaffeniated and underslept today ;-)
Dirk
| > Dirk
| >
| > --
| > "Outside of a dog, a book is a man's best friend. Inside of a dog, it is too
| > dark to read." -- Groucho Marx
--
"Outside of a dog, a book is a man's best friend. Inside of a dog, it is too
dark to read." -- Groucho Marx
More information about the Rcpp-devel
mailing list