Skip to content

[plr for postgressql] make throws "*** Cannot build PL/R because libR is not a shared library" error

2 messages · Sam Hunting, Simon Urbanek

#
Configuring R-2.4.1 for postgresql-8.2.0 on Mac OS X:

sh-2.05b#sudo gcc_select 3.3

...

sh-2.05b# ./configure --enable-R-shlib

Results of configure:

  R is now configured for powerpc-apple-darwin8.8.0

  Source directory:          .
  Installation directory:    /Library/Frameworks

  C compiler:                gcc -std=gnu99  -g -O2
  Fortran 77 compiler:       g77  -g -O2

  C++ compiler:              g++  -g -O2
  Fortran 90/95 compiler:    g77 -g -O2

  Interfaces supported:      X11, aqua, tcltk
  External libraries:        readline
  Additional capabilities:   iconv, MBCS, NLS
  Options enabled:           framework, shared BLAS, R
profiling

  Recommended packages:      yes

Then make and install run to completion.

However, when I go to make plr as the postgres user,
this happens:

    eve:/usr/local/src/postgresql-8.2.0/contrib/plr   

    postgres$ make

   *** Cannot build PL/R because libR is not a shared
library.
   *** You might have to rebuild your R installation. 
Refer to
*** the documentation for details.

I thought that "--enable-R-shlib" was supposed to
handle the shared library error? Any suggestions?
Thanks in advance for any help you can give.]

[I've cross-posted this to the plr list; hope that's OK.]
#
Sam,

just for the record, are you sure you want to re-compile R yourself?  
It is not necessary, so I'm just asking ...
On Jan 8, 2007, at 1:10 PM, Sam Hunting wrote:

            
Pretty much all builds of R for Mac (including the CRAN binary  
version) come with libR.dylib, so that is not really the problem. I'm  
not a pgsql user, so the following is only based on a quick look at R/ 
PL sources. Firstly, you'll need to run something like "R CMD make",  
because the R/PL documentation fails to tell you that it requires you  
to set the environment variables correctly.

Secondly, AFAICs there is a bug in R/PL, because it is not using the  
correct paths in its Makefile. A proper way would be to get the flags  
via R CMD config (as most other packages do), but it's using fixed  
paths are are incorrect for multi-arch R builds (the CRAN build  
creates fat libraries, so it will still work, but other builds may  
fail). If the above trick doesn't work, I suspect that you will have  
to hack the Makefile manually to fix all this. I would suggest you to  
contact the maintainer of R/PL and ask them to use R CMD config for  
linking R which will vastly simplify their Makefile.

Cheers,
Simon