>>>>> Simon Urbanek <simon.urba...@r-project.org> >>>>> on Thu, 11 Jul 2013 23:10:21 -0400 writes:
> On Jul 11, 2013, at 10:57 PM, Ben Bolker wrote: >> >> With a recent SVN build (R Under development (unstable) (2013-07-10 >> r63264) -- "Unsuffered Consequences"), I'm having trouble installing the >> robustbase package. The bottom line is that I *think* it's a >> 32-bit-system problem, but I could easily be mistaken. >> > It's a bug in robustbase - it redefines R_xlen_t without checking the R version. I think the author's true intention was to make it conditional on R version for compatibility so it should be using R_VERSION and not LONG_VECTOR_SUPPORT since the latter is irrelevant here as R 3.0.0+ will have R_xlen_t regardless of the long vector support. I'm about to upload a new version of robustbase 0.9-9 which should fix this problem. However, note that all the CRAN checks of robustbase, nor my own checks, with R 2.15.1 and R-patched and R-devel, on both 32-bit or 64-bit do *NOT* reproduce the problem you report. Hence, I'm sending the tar file to Ben and someone else who enquired in direct private e-mail the tarball of the source package for robustbase, asking them to check if my changes fix the problem. > Cheers, > Simon >> robustbase is passing its package checks: >> http://cran.r-project.org/web/checks/check_results_robustbase.html >> >> ... but from the names of the targets it doesn't look like it is tested >> on 32-bit platforms? >> >> The error is: >> >> gcc -std=gnu99 -I/usr/local/lib/R/include -DNDEBUG -I/usr/local/include >> -fpic -g -O2 -c init.c -o init.o >> In file included from init.c:3: >> robustbase.h:20: error: redefinition of typedef ‘R_xlen_t’ >> /usr/local/lib/R/include/Rinternals.h:69: note: previous declaration of >> ‘R_xlen_t’ was here >> >> As far as I can see there isn't any junk left over in my systems from >> previous installs. >> >> Rinternals.h has >> >> #ifdef LONG_VECTOR_SUPPORT >> typedef ptrdiff_t R_xlen_t; >> typedef struct { R_xlen_t lv_length, lv_truelength; } R_long_vec_hdr_t; >> # define R_XLEN_T_MAX 4503599627370496 >> # define R_SHORT_LEN_MAX 2147483647 >> # define R_LONG_VEC_TOKEN -1 >> #else >> typedef int R_xlen_t; >> # define R_XLEN_T_MAX R_LEN_T_MAX >> #endif >> >> while robustbase has >> >> #ifndef LONG_VECTOR_SUPPORT >> # ifndef XLENGTH >> // for R <= 2.15.x : >> # define XLENGTH(x) LENGTH(x) >> typedef int R_xlen_t; >> # endif >> #endif >> >> It seems the problem is that I have >> >> #define SIZEOF_SIZE_T 4 >> >> in my config.log , which in turn turns off LONG_VECTOR_SUPPORT, which is >> otherwise (?) assumed only to be true for R<=2.15.x ... can this be >> because I'm on 32-bit Linux , or on old linux with gcc 4.4.3, or ... ? >> <http://stackoverflow.com/questions/918787/whats-sizeofsize-t-on-32-bit-vs-the-various-64-bit-data-models> >> >> Can anyone confirm/enlighten me? >> >> cheers >> Ben Bolker >> >> ______________________________________________ >> 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