PERL_DL_NONLAZY

jdavidb on 2006-08-11T19:34:11

Because I'm doing something evil (using an Oracle.so compiled on another system rather than one compiled for this system), I do NOT want PERL_DL_NONLAZY to be set when I make test. What's the easiest way to change this, which I hope is simply a parameter in my Makefile.PL? :) Do I need to switch to Module::Build?


overload

rafael on 2006-08-12T10:16:35

I suppose you could overload the test_via_script and test_via_harness methods. See the code of ExtUtils::MM_Unix for the originals. (untested)

Remember, you only have to return TAP...

Alias on 2006-08-14T06:42:59

So you have your 05_test.t script.

But there's no reason that has to do the actual work.

An alternative might be to use it as a proxy script.

    local $ENV{PERL_DL_NONLAZY} = 0;

    exec( "... the real test script ... " );

It's a but evil, but it might be good enough for you.

I'm not evil

jdavidb on 2006-08-15T15:50:52

It turns out that this is not because I was doing something evil. It's because Oracle did something evil. Or maybe because I did something unsupported. Oracle's instant client 10.2 doesn't appear to be linked exactly right on Solaris 5.8; with PERL_DL_NONLAZY set when DynaLoad tries to load Oracle.so, it tries to get a linked symbol out of Solaris's librt that does not exist at this point.