[R] Building 2.9.0 on Solaris 10 U6 x86
pulaskite at yahoo.com
Thu May 7 02:55:17 CEST 2009
I've run into a number of problems.
I'm not sure where they belong, so I thought I'd send it here in hope someone will send them where they do belong. It mostly seems to be either errors in the autoconf input or system header weirdness. There was one genuine compiler bug when compiling saveload.c which google resolved (add "-xunroll=1" ).
-liconv is missing from LIBS in the configure script causing an undefined symbol. Adding a line w/ LIBS = "$LIBS -liconv" fixed it. Gnu libiconv was installed and in the LDPATH. There appears to be a relevant comment in configure, but machine generated scripts are pretty painful to read and harder still to understand.
Once I saw in config.log that "-liconv" was missing I just tacked it on.
configure incorrectly decides that unsetenv(3c) is not present. "man -s 3c unsetenv" and "nm -Ago /usr/lib/libc.so | egrep setenv" show otherwise. Modifying config.h by hand fixes that. I didn't bother to read what configure was up to.
In general, the R Installation and Administration manual section on Solaris is not quite correct. I'm using U6 and Studio 12, but it required considerable examination of system headers and fiddling w/ preprocessor symbols. I needed to set:
DEFS="-D_STDC_C99 -D__STDC__ -D__EXTENSIONS__ "
There's a bit of weirdness about what the starting directory is if one follows the instructions at the bottom of page 8. It *really* cared what PWD was when I invoked R. Starting R in the wrong place caused setwd(outDir) to fail when I invoked testInstalledPackages("base"). Apparently because R.home() was not prepended to the package name when forming outDir. However, I'm not entirely sure of that even though I sort of got things to run by doing a "find . -name base" and moving around before starting R.
Once I got testInstalledPackages("base") to run it failed because
Sys.which() sets "intern = TRUE" which causes testInstalledPackages("base") to fail w/:
'intern=TRUE' is not implemented on this platform
Setting debug(system) and then resetting intern = FALSE allows the calls to succeed.
I'm still not done running the tests, so if anyone has suggestions, I'd appreciate them.
More information about the R-help