[R] Building R on Sun Solaris 10 (SPARC) using Sun Studio 12

James T Brown brownja at msu.edu
Mon Dec 10 17:10:06 CET 2007


R Help List:

Just curious if anyone has successfully built R on a SPARC
platform running Sun Solaris 10 using the latest Sun Studio
12 set of compilers.   If so, I would be interested in the
compile flags that you used.

I have tried several different builds of version 2.5.1, 2.6.0,
and 2.6.1 using various different compile flags and I am able
to compile and check, but for whatever reason, the "foreign"
package crashes whenever it is loaded.   I need the "foreign"
package in order to install the "maptools" package.   This is
the error that I am getting when attempting to load "foreign":

> > library(foreign)
>
>  *** caught segfault ***
> address fbb1dc40, cause 'invalid permissions'
>
> Traceback:
>  1: .C("spss_init", PACKAGE = "foreign")
>  2: fun(...)
>  3: doTryCatch(return(expr), name, parentenv, handler)
>  4: tryCatchOne(expr, names, parentenv, handlers[[1]])
>  5: tryCatchList(expr, classes, parentenv, handlers)
>  6: tryCatch(expr, error = function(e) {    call <- 
> conditionCall(e)    if (!is.null(call)) {        if 
> (identical(call[[1]], quote(doTryCatch)))             call <- 
> sys.call(-4)        dcall <- deparse(call)[1]        prefix <- 
> paste("Error in", dcall, ": ")        LONGCALL <- 30        if 
> (nchar(dcall) > LONGCALL)             prefix <- paste(prefix, "\n\t", 
> sep = "")    }    else prefix <- "Error : "    msg <- paste(prefix, 
> conditionMessage(e), "\n", sep = "")    
> .Internal(seterrmessage(msg[1]))    if (!silent && 
> identical(getOption("show.error.messages"),         TRUE)) {        
> cat(msg, file = stderr())        .Internal(printDeferredWarnings())    
> }    invisible(structure(msg, class = "try-error"))})
>  7: try({    fun(...)    NULL})
>  8: runHook(".onLoad", package, env, package.lib, package)
>  9: loadNamespace(package, c(which.lib.loc, lib.loc), keep.source = 
> keep.source)
> 10: doTryCatch(return(expr), name, parentenv, handler)
> 11: tryCatchOne(expr, names, parentenv, handlers[[1]])
> 12: tryCatchList(expr, classes, parentenv, handlers)
> 13: tryCatch(expr, error = function(e) {    call <- 
> conditionCall(e)    if (!is.null(call)) {        if 
> (identical(call[[1]], quote(doTryCatch)))             call <- 
> sys.call(-4)        dcall <- deparse(call)[1]        prefix <- 
> paste("Error in", dcall, ": ")        LONGCALL <- 30        if 
> (nchar(dcall) > LONGCALL)             prefix <- paste(prefix, "\n\t", 
> sep = "")    }    else prefix <- "Error : "    msg <- paste(prefix, 
> conditionMessage(e), "\n", sep = "")    
> .Internal(seterrmessage(msg[1]))    if (!silent && 
> identical(getOption("show.error.messages"),         TRUE)) {        
> cat(msg, file = stderr())        .Internal(printDeferredWarnings())    
> }    invisible(structure(msg, class = "try-error"))})
> 14: try({    ns <- loadNamespace(package, c(which.lib.loc, lib.loc), 
> keep.source = keep.source)    dataPath <- file.path(which.lib.loc, 
> package, "data")    env <- attachNamespace(ns, pos = pos, dataPath = 
> dataPath)})
> 15: library(foreign)
>
> Possible actions:
> 1: abort (with core dump, if enabled)
> 2: normal R exit
> 3: exit R without saving workspace
> 4: exit R saving workspace



The latest build was compiled with the following flags:

> ./configure --prefix=/usr/local/R-2.5.1
>             --with-blas
>             --with-lapack
>             --with-tcl-config=/usr/local/lib/tclConfig.sh
>             --with-tk-config=/usr/local/lib/tkConfig.sh
>             --without-iconv
>             R_PAPERSIZE=letter
>             SHLIB_CXXLDFLAGS="-G /opt/SUNWspro/lib/libCrun.so"
>             CC=/opt/SUNWspro/bin/cc CXX=/opt/SUNWspro/bin/CC
>             F77=/opt/SUNWspro/bin/f77 F90=/opt/SUNWspro/bin/f95
>             FC=/opt/SUNWspro/bin/f95 CFLAGS="-mt -ftrap=%none 
> -xarch=sparcvis -fPIC -xmemalign=4s"
>             CXXFLAGS="-mt -ftrap=%none -xarch=sparcvis -xmemalign=4s"
>             FFLAGS="-mt -ftrap=%none -shared -xarch=sparcvis"
>             FCFLAGS="-mt -ftrap=%none -shared -xarch=sparcvis"
>             LDFLAGS="-V -fPIC -L/usr/local/lib -L/opt/SUNWspro/lib 
> -L/usr/sfw/lib -L/usr/lib
>                      
> -R/usr/local/lib:/opt/SUNWspro/lib:/usr/sfw/lib:/usr/lib"


I have been messing with the "xmemalign" flag, but doesn't seem to have much
of an impact.   I am curious if there may be a simple compile flag in Sun
Studio 12 that can be set to fix this problem.


At any rate, if anyone has been able to successfully build on Sun Solaris 10
(SPARC) using Sun Studio 12 and the "foreign" package loads without 
crashing,
I would be most appreciative if you could let me take a look at your 
".configure"
options.  


NOTE: So far, the only package that I am having trouble with is 
"foreign".   Everything
else seems to build and check ok.  In fact, when "foreign" is built, 
there are no errors
reported during the compile.   Also, I have tried 
"install.packages("foreign") from
within R to upgrade to the latest version of "foreign".  It compiles and 
installs, but
once again, it crashes when R attempts to use it producing the 
"segfault" error.


Any help would be most welcome.


Thanks.



Jim


-- 
=========================================
James T Brown
Depts. of Geography/Fisheries & Wildlife
Michigan State University



More information about the R-help mailing list