failed to build DBD-Pg-2.17.1 under Solaris

[email protected] ("Rainer J.H. Brandt")
Newsgroups perl.dbd.pg
Message-ID <[email protected]>
Hi,

I have PostgreSQL 8.4.4 in /opt/BBCpostgresql/8.4.4 and can't build
DBD-Pg-2.17.1 with that.  My troubles are caused by the fact that other
PostgreSQL versions exist, in particular the one supplied by Sun, which
is visible under /usr.

(My environment includes this:
POSTGRES_INCLUDE=/opt/BBCpostgresql/8.4.4/include
POSTGRES_LIB=/opt/BBCpostgresql/8.4.4/lib -L/usr/sfw/lib -lssl -lcrypto
The README also mentions POSTGRES_HOME, but doesn't say what that could
meaningfully be set to -- perhaps the home directory of a user postgres,
if it exists?)

I could solve the first problem, which was that "perl Makefile.PL" used
the wrong pg_config (the one in /usr/bin).  I fiddled with my PATH, which
isn't a good workaround in my opinion.  How about using another environment
variable for that?

The next problem was that libssl wasn't found.  I looked at how
POSTGRES_LIB is used in Makefile.PL and used the value shown above.
I don't think unexperienced people would know what to do about libraries
located in unusual paths, so perhaps the README could mention how to do
that.

Here's what I have now:
> perl Makefile.PL
Configuring DBD::Pg 2.17.1
PostgreSQL version: 80404 (default port: 5432)
POSTGRES_HOME: (not set)
POSTGRES_INCLUDE: /opt/BBCpostgresql/8.4.4/include
POSTGRES_LIB: /opt/BBCpostgresql/8.4.4/lib -L/usr/sfw/lib -lssl -lcrypto
OS: solaris
Using DBI 1.613 (for perl 5.012001 on i86pc-solaris-64int) installed in
 /opt/BBCperl/5.12.1/lib/i86pc-solaris-64int/auto/DBI/
Writing Makefile for DBD::Pg

With this, make succeed with just one warning:
"quote.c", line 334: warning: assignment type mismatch:
        pointer to char "=" pointer to const char

The linker command looks ok:
LD_RUN_PATH="/usr/sfw/lib:/opt/BBCpostgresql/8.4.4/lib" cc  -G Pg.o
  dbdimp.o quote.o types.o  -o blib/arch/auto/DBD/Pg/Pg.so
  -L/opt/BBCpostgresql/8.4.4/lib -L/usr/sfw/lib -lssl -lcrypto -lpq -lm
(I've forgotten whether that usage of LD_RUN_PATH is the right way to
do it -- I'd have used -R instead.)
  
However, the new Pg.so refers to the wrong library, and "make test" fails:
> ldd blib/arch/auto/DBD/Pg/Pg.so | grep pq
          libpq.so.4 =>    /usr/lib/libpq.so.4
It should use /opt/BBCpostgresql/8.4.4/lib/libpq.so.5 instead.
Can anyone tell me how to build the module so that it does that?

(If the address I'm mailing to is a mail list, please also send your
response to my mail address [email protected].)

Thanks, Rainer
-- 
Rainer J. H. Brandt
Brandt & Brandt Computer GmbH
Am Wiesenpfad 6, 53340 Meckenheim
Geschäftsführer: Rainer J. H. Brandt und Volker A. Brandt
Handelsregister: Amtsgericht Bonn, HRB 10513

RFC 5322: "Each line [...] SHOULD be no more than 78 characters"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.