All,
In the hope that this will help others...
I have solved my problem with DBD-Ingres on Solaris. The problem was that DBD-Ingres
was apparently making correctly, but make test failed with a dynamic linking problem.
I beat my head against this for several days, trying different versions of perl and
different compilers. Eventually, in a fit of pique, I compiled some C code against the
Ingres libraries directly and discovered a whole list of libraries that I needed to
link against. That triggered a little bell in my memory banks about configuring perl -
one of the questions is which libraries do we need to link against (the default list
is almost always correct). Half of the libraries that I needed to link against with my
C/Ingres code aren't in the list that you need to get perl to work. So I tried again,
this time giving perl a list of the libraries that Ingres needs. Voila! DBD-Ingres
tests OK now.
So, the take home message is that dynamic linking under perl (at least on Solaris)
only attempts to link against libraries explicitly mentioned during configuration of
perl prior to compilation and installation. Get that list of libraries wrong and you
are screwed. This strikes me as 'unhelpful', if not downright wrong behaviour. Perl
(DynaLoader) has access to LD_LIBRARY_PATH and can scan each of the directories for
*.so files - why doesn't it do that as a fallback?
Later,
Andy
-------------
Yada, yada, yada...
The information contained in this e-mail (including any attachments) is confidential
and is intended for the use of the addressee only. The opinions expressed within
this e-mail (including any attachments) are the opinions of the sender and do not
necessarily constitute those of Roslin Institute (Edinburgh) ("the Institute") unless
specifically stated by a sender who is duly authorised to do so on behalf of the
Institute.
> -----Original Message-----
> From: Andy Law [mailto:[EMAIL PROTECTED]
> Sent: 09 June 2003 13:19
> To: [EMAIL PROTECTED]
> Cc: Andy Law
> Subject: DBD-Ingres problem on Solaris
>
>
> All,
>
> I have successfully compiled and installed perl-5.8.0 on this
> system. I
> have also compiled, tested and installed DBI-1.35. I am now
> trying to
> install DBD-Ingres-0.36 over the top of that.
>
> make proceeds OK, although there are a slew of warnings that I would
> prefer didn't appear.
>
> make test fails (output below)
>
> FWIW, libcrt.so (which is where I *think* that clock_gettime
> lives) is
> in /usr/lib on this system and I have set LD_LIBRARY_PATH to
> ':/usr/local/lib:/opt/sfw/lib:/local/ingres/lib:/usr/lib'.
>
> Any clues that anyone can provide will be gratefully accepted.
>
>
> Later,
>
> Andy
>
>
>
>
> ---------- output attached ----------
> $ make test
> PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e"
> "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
> t/dbi......install_driver(Ingres) failed: Can't load
> '/space/users/ingres/DBD-Ingres-0.36/blib/arch/auto/DBD/Ingres/
> Ingres.so' for module DBD::Ingres: ld.so.1: /usr/bin/perl: fatal:
> relocation error: file
> /space/users/ingres/DBD-Ingres-0.36/blib/arch/auto/DBD/Ingres/
> Ingres.so: symbol clock_gettime: referenced symbol not found at
> /usr/local/lib/perl5/5.8.0/sun4-solaris/DynaLoader.pm line 229.
> at (eval 1) line 3
> Compilation failed in require at (eval 1) line 3.
> Perhaps a required shared library or dll isn't installed
> where expected
> at t/dbi.t line 49
> t/dbi......dubious
> Test returned status 255 (wstat 65280, 0xff00)
> t/event....install_driver(Ingres) failed: Can't load
> '/space/users/ingres/DBD-Ingres-0.36/blib/arch/auto/DBD/Ingres/
> Ingres.so' for module DBD::Ingres: ld.so.1: /usr/bin/perl: fatal:
> relocation error: file
> /space/users/ingres/DBD-Ingres-0.36/blib/arch/auto/DBD/Ingres/
> Ingres.so: symbol clock_gettime: referenced symbol not found at
> /usr/local/lib/perl5/5.8.0/sun4-solaris/DynaLoader.pm line 229.
> at (eval 1) line 3
> Compilation failed in require at (eval 1) line 3.
> Perhaps a required shared library or dll isn't installed
> where expected
> at t/event.t line 24
> t/event....dubious
> Test returned status 255 (wstat 65280, 0xff00)
> DIED. FAILED tests 1-17
> Failed 17/17 tests, 0.00% okay
> t/exec.....install_driver(Ingres) failed: Can't load
> '/space/users/ingres/DBD-Ingres-0.36/blib/arch/auto/DBD/Ingres/
> Ingres.so' for module DBD::Ingres: ld.so.1: /usr/bin/perl: fatal:
> relocation error: file
> /space/users/ingres/DBD-Ingres-0.36/blib/arch/auto/DBD/Ingres/
> Ingres.so: symbol clock_gettime: referenced symbol not found at
> /usr/local/lib/perl5/5.8.0/sun4-solaris/DynaLoader.pm line 229.
> at (eval 1) line 3
> Compilation failed in require at (eval 1) line 3.
> Perhaps a required shared library or dll isn't installed
> where expected
> at t/exec.t line 53
> t/exec.....dubious
> Test returned status 255 (wstat 65280, 0xff00)
> Failed Test Stat Wstat Total Fail Failed List of Failed
> --------------------------------------------------------------
> ----------
> -------
> t/dbi.t 255 65280 ?? ?? % ??
> t/event.t 255 65280 17 17 100.00% 1-17
> t/exec.t 255 65280 ?? ?? % ??
> Failed 3/3 test scripts, 0.00% okay. 17/17 subtests failed,
> 0.00% okay.
> make: *** [test_dynamic] Error 2
>
>
>
> ---------------
> Dr Andy Law
> --------------------
> Head of Bioinformatics - Roslin Institute
>
> Unfortunately, legal niceties require me to add the following
> to this
> message...
>
> The information contained in this e-mail (including any
> attachments) is
> confidential and is intended for the use of the addressee
> only.�� The
> opinions expressed within this e-mail (including any
> attachments) are
> the opinions of the sender and do not necessarily constitute
> those of
> Roslin Institute (Edinburgh) ("the Institute") unless specifically
> stated by a sender who is duly authorised to do so on behalf of the
> Institute.
> �
>