[Rd] compile R with Portland Group compiler

Jennifer Lai lai at lindaspaces.com
Tue Aug 30 18:02:11 CEST 2005


Hi,
    After getting some help from Portland Group, I was able to pass the 
initial stage of building R with Portland Group Compiler on AMD Opeteron.

For anyone who is interested in building R with PG compiler, here is a 
list of set flags used in config.site,
CC=/usr/pgi/linux86-64/6.0/bin/pgcc
CFLAGS='-g -O2 -mieee-fp'
CPPFLAGS='-I/usr/pgi/linux86-64/6.0/include 
-I/usr/pgi/linux86-64/6.0/include/CC'
F77=/usr/pgi/linux86-64/6.0/bin/pgf77
FFLAGS=-O2
CPICFLAGS=-fpic
FPICFLAGS=-fpic
SHLIB_LDFLAGS=-shared
LDFLAGS='-L/usr/pgi/linux86-64/6.0/libso -L/usr/lib64'
CXX=/usr/pgi/linux86-64/6.0/bin/pgCC
CXXPICFLAGS=-fpic
SHLIB_CXXLDFLAGS=-shared

After installing R, I went ahead to install simpleaffy package. However, 
came across the following errors.

PGC-S-0035-Syntax error: Recovery attempted by replacing '/' by double  
0.00000000000000000E+0 (simpleaffy.c: 455)
PGC-S-0035-Syntax error: Recovery attempted by replacing identifier by 
by '!=' (simpleaffy.c: 455)
PGC-S-0035-Syntax error: Recovery attempted by replacing integer 15 by 
'!=' (simpleaffy.c: 455)
PGC-S-0039-Use of undeclared variable added (simpleaffy.c: 455)
PGC-S-0037-Syntax error: Recovery attempted by deleting identifier march 
(simpleaffy.c: 455)
PGC-S-0039-Use of undeclared variable Crispin (simpleaffy.c: 455)
PGC-S-0035-Syntax error: Recovery attempted by replacing identifier with 
by '!=' (simpleaffy.c: 455)
PGC-S-0035-Syntax error: Recovery attempted by replacing identifier in 
by '!=' (simpleaffy.c: 455)
PGC-S-0039-Use of undeclared variable deals (simpleaffy.c: 455)
PGC-S-0035-Syntax error: Recovery attempted by replacing identifier 
largest by '!=' (simpleaffy.c: 455)
PGC-S-0039-Use of undeclared variable ties (simpleaffy.c: 455)
PGC-S-0035-Syntax error: Recovery attempted by replacing '...' by ',' 
(simpleaffy.c: 455)
PGC-S-0039-Use of undeclared variable the (simpleaffy.c: 455)
PGC-S-0039-Use of undeclared variable ranks (simpleaffy.c: 455)
PGC/x86-64 Linux/x86-64 6.0-5: compilation completed with severe errors
make: *** [simpleaffy.o] Error 2
ERROR: compilation failed for package 'simpleaffy'

Apparently, PG compiler doesn't like "//" style for comments. So, by 
changing "//" to "/* */" style fixed above errors.
The commenting style errors also happened in other packages, such as affy.
Since "/* */" comment style is acceptable by both PG Compiler and gcc, 
it is probably worthwhile to use "/* */" consistently throughout R 
packages.


Regards,
Jennifer

Prof Brian Ripley wrote:

> Let us be clear: some things in config.log are designed to fail, so 
> only unexpected errors are a cause to look there.  The regex.c 
> warnings are it seems from an over-zealous compiler.
>
> The problems here seem to be the unknown use of .lo (which it seems to 
> have coped with) and a problem in the PG's own libc, which it seems 
> cannot be used in a shared object.  That issue discussed in the 
> R-admin manual, and seems something you do need to take up with PG.  
> The crucial part is
>
>> /usr/bin/ld: /usr/pgi/linux86-64/6.0/lib/libpgc.a(fastmath.o): 
>> relocation
>> R_X86_64_PC32 against `__fvdlog' can not be used when making a shared 
>> object;
>> recompile with -fPIC
>
>
> which is asking you to recompile their static library.  If you can't 
> use a dynamic library then this is fatal.
>
>
> On Wed, 24 Aug 2005, Jennifer Lai wrote:
>
>> I downloaded R-devel and compiled it with pgcc. This time, instead of 
>> breaking in src/main, compilation breaks in src/modules with the 
>> following error messages.
>>
>> Copyright 1989-2000, The Portland Group, Inc.  All Rights Reserved.
>> Copyright 2000-2005, STMicroelectronics, Inc.  All Rights Reserved.
>> /usr/pgi/linux86-64/6.0/bin/pgcc -shared  
>> -L/usr/pgi/linux86-64/6.0/lib -L/usr/lib64 -o R_X11.so  dataentry.lo 
>> devX11.lo rotated.lo rbitmap.lo  -lSM -lICE -L/usr/X11R6/lib64 -lX11  
>> -ljpeg -lpng -lz
>> File with unknown suffix passed to linker: dataentry.lo
>> File with unknown suffix passed to linker: devX11.lo
>> File with unknown suffix passed to linker: rotated.lo
>> File with unknown suffix passed to linker: rbitmap.lo
>> /usr/bin/ld: /usr/pgi/linux86-64/6.0/lib/libpgc.a(fastmath.o): 
>> relocation R_X86_64_PC32 against `__fvdlog' can not be used when 
>> making a shared object; recompile with -fPIC
>> /usr/bin/ld: final link failed: Bad value
>> make[4]: *** [R_X11.so] Error 2
>> make[4]: Leaving directory `/home/cuser/R-devel/src/modules/X11'
>> make[3]: *** [R] Error 2
>> make[3]: Leaving directory `/home/cuser/R-devel/src/modules/X11'
>> make[2]: *** [R] Error 1
>> make[2]: Leaving directory `/home/cuser/R-devel/src/modules'
>> make[1]: *** [R] Error 1
>> make[1]: Leaving directory `/home/cuser/R-devel/src'
>> make: *** [R] Error 1
>>
>> Though src/main directory compiled successfully, I do still get 
>> warning messages from src/main/regex.c compilation.
>> PGC-W-0155-64-bit integral value truncated  (/usr/include/wctype.h: 109)
>> PGC-W-0155-64-bit integral value truncated  (/usr/include/wctype.h: 110)
>> PGC-W-0155-64-bit integral value truncated  (/usr/include/wctype.h: 111)
>> PGC-W-0155-64-bit integral value truncated  (/usr/include/wctype.h: 112)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #5 (regex.c: 3288)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 4464)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 4591)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 4635)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 4737)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 4792)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #4 (regex.c: 4793)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 4861)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 4904)
>> PGC-W-0155-Long value is passed to a nonprototyped function - argument 
>
> #3
>
>> (regex.c: 4954)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #4 (regex.c: 4961)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 5057)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 5581)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 5596)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 5628)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 5641)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 5669)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 5858)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 6230)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #6 (regex.c: 7035)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 7803)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #2 (regex.c: 7814)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #3 (regex.c: 7826)
>> PGC-W-0155-Long value is passed to a nonprototyped function - 
>> argument #7 (regex.c: 10722)
>> PGC/x86-64 Linux/x86-64 6.0-5: compilation completed with warnings
>>
>>
>> One last thing that I notice is the errors messages in config.log. 
>> Should I consult these error messages with Portland Group, or R-devel 
>> can help me out on this?
>>
>> Copyright 1989-2000, The Portland Group, Inc.  All Rights Reserved.
>> Copyright 2000-2005, STMicroelectronics, Inc.  All Rights Reserved.
>> PGC-S-0040-Illegal use of symbol, choke (conftest.c: 21)
>> PGC/x86-64 Linux/x86-64 6.0-5: compilation completed with severe errors
>> configure:4222: $? = 2
>> configure: failed program was:
>> | /* confdefs.h.  */
>> |
>> | #define PACKAGE_NAME "R"
>> | #define PACKAGE_TARNAME "R"
>> | #define PACKAGE_VERSION "2.2.0"
>> | #define PACKAGE_STRING "R 2.2.0"
>> | #define PACKAGE_BUGREPORT "r-bugs at R-project.org"
>> | #define PACKAGE "R"
>> | #define VERSION "2.2.0"
>> | #define R_PLATFORM "x86_64-unknown-linux-gnu"
>> | #define R_CPU "x86_64"
>> | #define R_VENDOR "unknown"
>> | #define R_OS "linux-gnu"
>> | #define Unix 1
>> | /* end confdefs.h.  */
>> |
>> | int
>> | main ()
>> | {
>> | #ifndef __GNUC__
>> |        choke me
>> | #endif
>> |
>> |   ;
>> |   return 0;
>> | }
>>
>> PGC-S-0035-Syntax error: Recovery attempted by replacing identifier 
>> me by ';' (conftest.c: 2)
>> PGC-W-0057-Old-style declaration used; int assumed (conftest.c: 2)
>> PGC/x86-64 Linux/x86-64 6.0-5: compilation completed with severe errors
>> configure:4453: $? = 2
>> configure: failed program was:
>> | #ifndef __cplusplus
>> |   choke me
>> | #endif
>>
>> PGFTN-S-0034-Syntax error at or near end of line (conftest.F: 3)
>> 0 inform,   0 warnings,   1 severes, 0 fatal for main
>> PGFTN/x86-64 Linux/x86-64 6.0-5: compilation completed with severe 
>> errors
>> configure:5400: $? = 2
>> configure: failed program was:
>> |       program main
>> | #ifndef __GNUC__
>> |        choke me
>> | #endif
>> |
>> |       end
>>
>> configure:5665: /usr/pgi/linux86-64/6.0/bin/pgCC -c 
>> -I/usr/pgi/linux86-64/6.0/include 
>> -I/usr/pgi/linux86-64/6.0/include/CC conftest.cc >&5
>> "conftest.cc", line 21: error: identifier "choke" is undefined
>>        choke me
>>        ^
>>
>> "conftest.cc", line 21: warning: variable "me" was declared but never
>>         referenced
>>        choke me
>>              ^
>>
>> 1 error detected in the compilation of "conftest.cc".
>> configure:5671: $? = 2
>> configure: failed program was:
>> | /* confdefs.h.  */
>> |
>> | #define PACKAGE_NAME "R"
>> | #define PACKAGE_TARNAME "R"
>> | #define PACKAGE_VERSION "2.2.0"
>> | #define PACKAGE_STRING "R 2.2.0"
>> | #define PACKAGE_BUGREPORT "r-bugs at R-project.org"
>> | #define PACKAGE "R"
>> | #define VERSION "2.2.0"
>> | #define R_PLATFORM "x86_64-unknown-linux-gnu"
>> | #define R_CPU "x86_64"
>> | #define R_VENDOR "unknown"
>> | #define R_OS "linux-gnu"
>> | #define Unix 1
>> | /* end confdefs.h.  */
>> |
>> | int
>> | main ()
>> | {
>> | #ifndef __GNUC__
>> |        choke me
>> | #endif
>> |
>> |   ;
>> |   return 0;
>> | }
>>
>> configure:5841: /usr/pgi/linux86-64/6.0/bin/pgCC -c -g 
>> -I/usr/pgi/linux86-64/6.0/include 
>> -I/usr/pgi/linux86-64/6.0/include/CC conftest.cc >&5
>> "conftest.cc", line 20: error: identifier "exit" is undefined
>> exit (42);
>> ^
>>
>> 1 error detected in the compilation of "conftest.cc".
>> configure:5847: $? = 2
>> configure: failed program was:
>> | /* confdefs.h.  */
>> |
>> | #define PACKAGE_NAME "R"
>> | #define PACKAGE_TARNAME "R"
>> | #define PACKAGE_VERSION "2.2.0"
>> | #define PACKAGE_STRING "R 2.2.0"
>> | #define PACKAGE_BUGREPORT "r-bugs at R-project.org"
>> | #define PACKAGE "R"
>> | #define VERSION "2.2.0"
>> | #define R_PLATFORM "x86_64-unknown-linux-gnu"
>> | #define R_CPU "x86_64"
>> | #define R_VENDOR "unknown"
>> | #define R_OS "linux-gnu"
>> | #define Unix 1
>> | /* end confdefs.h.  */
>> |
>> | int
>> | main ()
>> | {
>> | exit (42);
>> |   ;
>> |   return 0;
>> | }
>> configure:5796: /usr/pgi/linux86-64/6.0/bin/pgCC -c -g 
>> -I/usr/pgi/linux86-64/6.0/include 
>> -I/usr/pgi/linux86-64/6.0/include/CC conftest.cc >&5
>> "conftest.cc", line 16: error: namespace "std" has no member "exit"
>> extern "C" void std::exit (int) throw (); using std::exit;
>>                      ^
>>
>> "conftest.cc", line 16: error: namespace "std" has no member "exit"
>> extern "C" void std::exit (int) throw (); using std::exit;
>>                                                      ^
>>
>> 2 errors detected in the compilation of "conftest.cc".
>> configure:5802: $? = 2
>> configure: failed program was:
>> | /* confdefs.h.  */
>> |
>> | #define PACKAGE_NAME "R"
>> | #define PACKAGE_TARNAME "R"
>> | #define PACKAGE_VERSION "2.2.0"
>> | #define PACKAGE_STRING "R 2.2.0"
>> | #define PACKAGE_BUGREPORT "r-bugs at R-project.org"
>> | #define PACKAGE "R"
>> | #define VERSION "2.2.0"
>> | #define R_PLATFORM "x86_64-unknown-linux-gnu"
>> | #define R_CPU "x86_64"
>> | #define R_VENDOR "unknown"
>> | #define R_OS "linux-gnu"
>> | #define Unix 1
>> | /* end confdefs.h.  */
>> | extern "C" void std::exit (int) throw (); using std::exit;
>> | #include <stdlib.h>
>> | int
>> | main ()
>> | {
>> | exit (42);
>> |   ;
>> |   return 0;
>> | }
>> configure:5796: /usr/pgi/linux86-64/6.0/bin/pgCC -c -g 
>> -I/usr/pgi/linux86-64/6.0/include 
>> -I/usr/pgi/linux86-64/6.0/include/CC conftest.cc >&5
>> "conftest.cc", line 16: error: namespace "std" has no member "exit"
>> extern "C" void std::exit (int); using std::exit;
>>                      ^
>>
>> "conftest.cc", line 16: error: namespace "std" has no member "exit"
>> extern "C" void std::exit (int); using std::exit;
>>                                             ^
>>
>> 2 errors detected in the compilation of "conftest.cc".
>> configure:5802: $? = 2
>> configure: failed program was:
>> | /* confdefs.h.  */
>> |
>> | #define PACKAGE_NAME "R"
>> | #define PACKAGE_TARNAME "R"
>> | #define PACKAGE_VERSION "2.2.0"
>> | #define PACKAGE_STRING "R 2.2.0"
>> | #define PACKAGE_BUGREPORT "r-bugs at R-project.org"
>> | #define PACKAGE "R"
>> | #define VERSION "2.2.0"
>> | #define R_PLATFORM "x86_64-unknown-linux-gnu"
>> | #define R_CPU "x86_64"
>> | #define R_VENDOR "unknown"
>> | #define R_OS "linux-gnu"
>> | #define Unix 1
>> | /* end confdefs.h.  */
>> | extern "C" void std::exit (int); using std::exit;
>> | #include <stdlib.h>
>> | int
>> | main ()
>> | {
>> | exit (42);
>> |   ;
>> |   return 0;
>> | }
>> configure:5796: /usr/pgi/linux86-64/6.0/bin/pgCC -c -g 
>> -I/usr/pgi/linux86-64/6.0/include 
>> -I/usr/pgi/linux86-64/6.0/include/CC conftest.cc >&5
>> "/usr/include/stdlib.h", line 640: error: omission of exception 
>> specification
>>         is incompatible with previous function "exit" (declared at 
>> line 16
>>         of "conftest.cc")
>> extern void exit (int __status) __THROW __attribute__ ((__noreturn__));
>>                                                                       ^
>>
>> 1 error detected in the compilation of "conftest.cc".
>> configure:5802: $? = 2
>> configure: failed program was:
>> | /* confdefs.h.  */
>> |
>> | #define PACKAGE_NAME "R"
>> | #define PACKAGE_TARNAME "R"
>> | #define PACKAGE_VERSION "2.2.0"
>> | #define PACKAGE_STRING "R 2.2.0"
>> | #define PACKAGE_BUGREPORT "r-bugs at R-project.org"
>> | #define PACKAGE "R"
>> | #define VERSION "2.2.0"
>> | #define R_PLATFORM "x86_64-unknown-linux-gnu"
>> | #define R_CPU "x86_64"
>> | #define R_VENDOR "unknown"
>> | #define R_OS "linux-gnu"
>> | #define Unix 1
>> | /* end confdefs.h.  */
>> | extern "C" void exit (int) throw ();
>> | #include <stdlib.h>
>> | int
>> | main ()
>> | {
>> | exit (42);
>> |   ;
>> |   return 0;
>> | }
>> configure:5796: /usr/pgi/linux86-64/6.0/bin/pgCC -c -g 
>> -I/usr/pgi/linux86-64/6.0/include 
>> -I/usr/pgi/linux86-64/6.0/include/CC conftest.cc >&5
>> NOTE: your evaluation license will expire in 14 days, 5.7 hours.
>> For a permanent license, please read the order acknowledgement
>> that you received.  Connect to https://www.pgroup.com/License with
>> the username and password in the order acknowledgement.
>>
>>   Name:    lai
>>   User:    lai
>>   Email:    lai at lindaspaces.com
>>   Hostid:    PGI=00001AE0193111621CB217
>> configure:5802: $? = 0
>> configure:5806: test -z
>>            || test ! -s conftest.err
>> configure:5809: $? = 0
>> configure:5812: test -s conftest.o
>> configure:5815: $? = 0
>> configure:5841: /usr/pgi/linux86-64/6.0/bin/pgCC -c -g 
>> -I/usr/pgi/linux86-64/6.0/include 
>> -I/usr/pgi/linux86-64/6.0/include/CC conftest.cc >&5
>> NOTE: your evaluation license will expire in 14 days, 5.7 hours.
>> For a permanent license, please read the order acknowledgement
>> that you received.  Connect to https://www.pgroup.com/License with
>> the username and password in the order acknowledgement.
>>
>>   Name:    lai
>>   User:    lai
>>   Email:    lai at lindaspaces.com
>>   Hostid:    PGI=00001AE0193111621CB217
>> configure:5847: $? = 0
>> configure:5851: test -z
>>            || test ! -s conftest.err
>> configure:5854: $? = 0
>> configure:5857: test -s conftest.o
>> configure:5860: $? = 0
>> configure:5888: checking how to run the C++ preprocessor
>> configure:5919: /usr/pgi/linux86-64/6.0/bin/pgCC -E 
>> -I/usr/pgi/linux86-64/6.0/include 
>> -I/usr/pgi/linux86-64/6.0/include/CC conftest.cc
>> configure:5925: $? = 0
>> configure:5957: /usr/pgi/linux86-64/6.0/bin/pgCC -E 
>> -I/usr/pgi/linux86-64/6.0/include 
>> -I/usr/pgi/linux86-64/6.0/include/CC conftest.cc
>> "conftest.cc", line 19: catastrophic error: could not open source file
>>         "ac_nonexistent.h"
>> #include <ac_nonexistent.h>
>>                            ^
>>
>> 1 catastrophic error detected in the compilation of "conftest.cc".
>> Compilation terminated.
>> configure:5963: $? = 2
>> configure: failed program was:
>> | /* confdefs.h.  */
>> |
>> | #define PACKAGE_NAME "R"
>> | #define PACKAGE_TARNAME "R"
>> | #define PACKAGE_VERSION "2.2.0"
>> | #define PACKAGE_STRING "R 2.2.0"
>> | #define PACKAGE_BUGREPORT "r-bugs at R-project.org"
>> | #define PACKAGE "R"
>> | #define VERSION "2.2.0"
>> | #define R_PLATFORM "x86_64-unknown-linux-gnu"
>> | #define R_CPU "x86_64"
>> | #define R_VENDOR "unknown"
>> | #define R_OS "linux-gnu"
>> | #define Unix 1
>> | #ifdef __cplusplus
>> | extern "C" void exit (int);
>> | #endif
>> | /* end confdefs.h.  */
>> | #include <ac_nonexistent.h>
>> configure:6002: result: /usr/pgi/linux86-64/6.0/bin/pgCC -E
>> configure:6026: /usr/pgi/linux86-64/6.0/bin/pgCC -E 
>> -I/usr/pgi/linux86-64/6.0/include 
>> -I/usr/pgi/linux86-64/6.0/include/CC conftest.cc
>> configure:6032: $? = 0
>> configure:6064: /usr/pgi/linux86-64/6.0/bin/pgCC -E 
>> -I/usr/pgi/linux86-64/6.0/include 
>> -I/usr/pgi/linux86-64/6.0/include/CC conftest.cc
>> "conftest.cc", line 19: catastrophic error: could not open source file
>>         "ac_nonexistent.h"
>> #include <ac_nonexistent.h>
>>                            ^
>>
>> 1 catastrophic error detected in the compilation of "conftest.cc".
>> Compilation terminated.
>> configure:6070: $? = 2
>> configure: failed program was:
>> | /* confdefs.h.  */
>> |
>> | #define PACKAGE_NAME "R"
>> | #define PACKAGE_TARNAME "R"
>> | #define PACKAGE_VERSION "2.2.0"
>> | #define PACKAGE_STRING "R 2.2.0"
>> | #define PACKAGE_BUGREPORT "r-bugs at R-project.org"
>> | #define PACKAGE "R"
>> | #define VERSION "2.2.0"
>> | #define R_PLATFORM "x86_64-unknown-linux-gnu"
>> | #define R_CPU "x86_64"
>> | #define R_VENDOR "unknown"
>> | #define R_OS "linux-gnu"
>> | #define Unix 1
>> | #ifdef __cplusplus
>> | extern "C" void exit (int);
>> | #endif
>> | /* end confdefs.h.  */
>> | #include <ac_nonexistent.h>
>>
>>
>> Thank you in advance for your help!
>>
>> Sincerely,
>> Jennifer
>>
>> Prof Brian Ripley wrote:
>>
>>> regex.c is not our code, but from glibc.  Could you please try 
>>> R-devel instead, which has a later version of glibc.  Since 2.1.1 is 
>>> not longer part of the developement, we cannot help with that, but 
>>> we can help wih R-devel.
>>>
>>> I see the later regex.c does use prototypes.  But bitset is an 
>>> integer type, so that may be a compiler error.
>>>
>>> (It is on my list to try Intel and PG compilers on AMD64 as we have 
>>> licences, but not very high priority.)
>>>
>>>
>>>
>>
>>
>>
>



More information about the R-devel mailing list