[Rd] robustbase compilation problem: probably boneheaded? maybe 32-bit?

Ben Bolker bbolker at gmail.com
Fri Jul 12 04:57:28 CEST 2013


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.

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



More information about the R-devel mailing list