[Rd] Minimal build of R ...

peter dalgaard pdalgd at gmail.com
Thu May 23 23:55:37 CEST 2013


On May 23, 2013, at 23:07 , Jony Hudson wrote:

> Hi,
> 
> I'm making some progress with this, but have hit a sticking point and am looking for a hint. Most of the compilation seems to be going ok, after some liberal use of f2c, but I'm getting compile errors in src/main/connections.c :
> 
> connections.c:926:43: error: use of undeclared identifier 'SSIZE_MAX'
>    if ((double) size * (double) nitems > SSIZE_MAX)
>                                          ^
> connections.c:937:43: error: use of undeclared identifier 'SSIZE_MAX'
>    if ((double) size * (double) nitems > SSIZE_MAX)
>                                          ^
> connections.c:3354:21: warning: implicit conversion from 'long long' to
>      'R_xlen_t' (aka 'int') changes value from 4503599627370496 to 0
>      [-Wconstant-conversion]
>    nnn = (n < 0) ? R_XLEN_T_MAX : n;
>        ~           ^~~~~~~~~~~~
> ../../src/include/Rinternals.h:65:23: note: expanded from macro 'R_XLEN_T_MAX'
> # define R_XLEN_T_MAX 4503599627370496
>                      ^~~~~~~~~~~~~~~~
> connections.c:3662:11: error: duplicate case value '4'
>            case sizeof(long):
>                 ^
> connections.c:3660:11: note: previous case defined here
>            case sizeof(int):
>                 ^
> connections.c:3680:11: error: duplicate case value '4'
>            case sizeof(long):
>                 ^
> connections.c:3678:11: note: previous case defined here
>            case sizeof(int):
>                 ^
> connections.c:3912:11: error: duplicate case value '4'
>            case sizeof(long):
>                 ^
> connections.c:3910:11: note: previous case defined here
>            case sizeof(int):
>                 ^
> connections.c:3956:11: error: duplicate case value '4'
>            case sizeof(long):
>                 ^
> connections.c:3952:11: note: previous case defined here
>            case sizeof(int):
> 
> Recall that I'm compiling with emscripten, which uses clang to generate LLVM bitcode, which is then converted to javascript. I'm currently using the existing autotools build scripts, which emscripten tries to twist in to doing something sensible. It's quite possible that it's ending up mis-"./configure"d though.
> 
> I appreciate this is fairly off-topic, but if anyone has any pointers where to start looking, they would be greatly appreciated :-)
> 

Looks like SSIZE_MAX is usually <*/limits.h>:

pd$ grep -r SSIZE_MAX /usr/include/
/usr/include/i386/limits.h:#define	SSIZE_MAX	LONG_MAX	/* max value for a ssize_t */
/usr/include/limits.h:#define	_POSIX_SSIZE_MAX	32767
/usr/include/ppc/limits.h:#define	SSIZE_MAX	LONG_MAX	/* max value for a ssize_t */

If R_xlen_t is int, you need to adjust R_XLEN_T_MAX to INT_MAX or so.

The case warnings look like they are bound to happen on systems where int and long have the same size, and should presumably be harmless.

 


> Thanks,
> 
> 
> Jony
> 
> --
> Centre for Cold Matter, The Blackett Laboratory,
> Imperial College London, London SW7 2BW
> T: +44 (0)207 5947741
> http://www.imperial.ac.uk/people/jony.hudson
> http://www.imperial.ac.uk/ccm/research/edm
> http://www.monkeycruncher.org
> http://j-star.org/
> --
> 
> On 2 May 2013, at 17:12, Jony Hudson <jony.hudson at imperial.ac.uk> wrote:
> 
>> Hi,
>> 
>> I'm trying to cross-compile R to javascript so that it can run in a web-browser. Take as long as you need to stop laughing. So, as I was saying - I want to try and get a build of R running in the browser. [If you're not familiar with it already, you might enjoy looking at emscripten.org. It's a remarkably capable tool for translating LLVM bitcode to javascript. Check out some of the demos!]
>> 
>> I'm trying to start out with the most minimal build of R possible. I can turn off various options in the configure script, but I'm wondering about the bundled R packages (base, stats etc). I'm guessing that the native code portions of these packages are dynamically loaded at runtime, which will probably need patching. To start off, I'd like to not build these packages if possible.
>> 
>> So, is there a way to configure which packages in the library get built or is it just a case of editing the makefile? And is there a minimal set of them that would still allow R to run (not be useful - that can come later - just run)?
>> 
>> Thanks in advance for any help anyone can provide :-)
>> 
>> 
>> Jony
>> 
>> --
>> Centre for Cold Matter, The Blackett Laboratory,
>> Imperial College London, London SW7 2BW
>> T: +44 (0)207 5947741
>> http://www.imperial.ac.uk/people/jony.hudson
>> http://www.imperial.ac.uk/ccm/research/edm
>> http://www.monkeycruncher.org
>> http://j-star.org/
>> --
>> 
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-devel mailing list