Hi all,
I'm trying to pass some ENV from mp2's Makefile.PL to
Apache::Test::generate_script() so that when it
is generated ./t/TEST will work out of the box on platforms who's linkers get
-rpath wrong.
As it stands, my patch only fixes mp2's 'make test' which is good cause thats
like 90% :)
As far as I can see, I don't see a yet coded way to do this:
======
# generate t/TEST script (or a different filename) which will drive
# Apache::TestRun
sub generate_script {
my ($class, @opts) = @_;
======
I'm thinking of hijacking @opts in the CALLER like so
->generate_script(env => { VAR => VAL });
$body . = $ENV{VAR} = q|VAL|; .....
Objections ?
--
------------------------------------------------------------------------
Philip M. Gollucci ([EMAIL PROTECTED]) 323.219.4708
Consultant / http://p6m7g8.net/Resume/resume.shtml
Senior Software Engineer - TicketMaster - http://ticketmaster.com
1024D/A79997FA F357 0FDD 2301 6296 690F 6A47 D55A 7172 A799 97F
When I call your name, Girl, it starts to flame
Burning in my heart, Tearing it all apart..
No matter how I try My love I cannot hide....
Index: Makefile.PL
===================================================================
--- Makefile.PL (revision 450701)
+++ Makefile.PL (working copy)
@@ -768,6 +768,31 @@
else {
# PASSENV confuses the Win32 command-line build
my $env = Apache::TestConfig->passenv_makestr();
+
+ # this is not in A-T because we don't want to affect everyone
+ # using A-T just mod_perl2's test suite environment
+ # take care to preserve existing SHELL LD_LIBRARY_PATH
+ # by PREPENDING
+ # All this to work around "broken" linkers on some platforms
+ # that refuse to get -rpaths correct....
+ # XXX: ./t/TEST will still fail on one of these platforms.
+ my $ldpath;
+ for ($build->apu_config_path, $build->apr_config_path) {
+ if (my $link = $_ && -x $_ && qx{$_ '--link-ld'}) {
+ chomp $link;
+ while ($link =~ /\-L(.*)\s+/g) {
+ $ldpath .= "$1:";
+ }
+ }
+ }
+
+ if ($ldpath) {
+ $env .= " LD_LIBRARY_PATH=$ldpath";
+ $env .= ":$ENV{LD_LIBRARY_PATH}" if exists $ENV{LD_LIBRARY_PATH};
+
+ $env =~ s/:$//;
+ }
+
$preamble = <<EOF;
PASSENV = $env
EOF