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

From: James T Brown <brownja_at_msu.edu>
Date: Tue, 11 Dec 2007 15:07:14 -0500

Prof Ripley:

>>
>> 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.
>
> Yes, the flags given in the R-admin manual. (We don't currently have
> a Solaris 10 Sparc box running, but this was with the current Sun
> Studio 12 at the time, just after it came out.)
>

Thanks for reply.

Yes, I have tried this, although I had to remove the "-xc99" flag from the CC environment variable. When used as shown in the installation manual, the compile fails:

In file included from regex.c:107:
/usr/include/stdbool.h:42:2: #error "Use of <stdbool.h> is valid only in a c99 compilation environment."
*** Error code 1
The following command caused the error:
cpp -M -I../../src/extra/zlib -I../../src/extra/bzip2 -I../../src/extra/pcre -I. -I../../src/include -I../../src/include -I/usr/local/include -DHAVE_CONFIG_H regex.c > regex.d make: Fatal error: Command failed for target `regex.d' Current working directory /apps/local/src/R-2.6.1/src/main *** Error code 1

By removing the "-xc99" flag and setting the others options as specified in the installation manual, the R package builds completely, but the "foreign" package continues to crash when I attempt to load it - all of the other packages that I have tried seem to work just fine. I suspect that since those that have built with GCC are not reporting any trouble, it would be difficult to point a finger at the "foreign" code and claim that this is a bug, but yet, I am not having any trouble with any of the other packages that have been built using Sun Studio 12.

Here are the latest "configure" options that I have tried (as specified in the manual, minus the "-xc99" flag):

  % ./configure --prefix=/usr/local/R-2.6.1

               CC=/opt/SUNWspro/bin/cc
               CFLAGS="-O -xlibmieee"
               LDFLAGS="-L/usr/local/lib -R/usr/local/lib"
               CXX=/opt/SUNWspro/bin/CC
               CXXFLAGS=-O
               F77=/opt/SUNWspro/bin/f95
               FFLAGS=-O
               FC=/opt/SUNWspro/bin/f95
               FCFLAGS=-O
               CPPFLAGS="-I/usr/local/include"
               SHLIB_CXXLDFLAGS="-G -lCstd"

  % make

  % /usr/local/R-2.6.1/bin/R

    > library(foreign)

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, ": ") LONG <- 75 msg <- conditionMessage(e) sm <- strsplit(msg, "\n")[[1]] if (14 + nchar(dcall, type = "w") + nchar(sm[1], type = "w") > LONG) prefix <- paste(prefix, "\n ", 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, ": ") LONG <- 75 msg <- conditionMessage(e) sm <- strsplit(msg, "\n")[[1]] if (14 + nchar(dcall, type = "w") + nchar(sm[1], type = "w") > LONG) prefix <- paste(prefix, "\n ", 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







I have recently applied several patches for Sun Studio 12. I am tempted to try Sun Studio 11 to see if there is any difference.

I guess the other alternative would be to grab the R package from "www.sunfreeware.com". However, most of the 3rd-party packages on my system have been built with Sun Studio 12 - was just hoping to be able to do the same with R. I was also curious if anyone else is using the latest (patched) Sun Studio 12 set of compilers on Sun Solaris 10 (sparc) and had any luck. I am running out of different complier flags to try. I have tried several different flags and most times, the R packages will build, but everytime that I attempt to load "foreign", it crashes. Again, all of the other R packages that I have tried seem to be fine - I am simply running into trouble with "foreign" which I believe is needed for me to install the "maptools" package.

All the best.

Jim

>
>> 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
UNIX System Administrator
Depts. of Geography/Fisheries & Wildlife
107 Geography Bldg.
Michigan State University
East Lansing, MI   48824

email:  brownja_at_msu.edu

______________________________________________
R-help_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Received on Tue 11 Dec 2007 - 20:10:41 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 11 Dec 2007 - 20:30:18 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.