Hi,
I've been having trouble building (the latest CVS) mp2 with perl 5.8.1 (@21148) -- see this thread on p5p if you want the gory details:
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2003-09/msg00701.html
The answer seems to be to ensure that mod_perl.so appears before mod_perl.lib in the MODPLER_LIB macro in src/modules/perl/Makefile.modperl. The attached patch to lib/Apache/Build.pm (against CVS) achieves this by simply sorting the keys of the %libs hash (which are 'dso', 'shared', 'static').
Is this an appropriate way to do it, or too much like a happy coincidence?
Thanks Steve. I think it's better not to rely on any happy coincidences. If you need to make sure that mod_perl.so is listed first we need to explictly do that, so that if in the future something changes this happy coincidence doesn't vanish without a warning.
A possible way to code it:
Index: lib/Apache/Build.pm =================================================================== RCS file: /home/cvs/modperl-2.0/lib/Apache/Build.pm,v retrieving revision 1.145 diff -u -r1.145 Build.pm --- lib/Apache/Build.pm 6 Sep 2003 01:10:18 -0000 1.145 +++ lib/Apache/Build.pm 12 Sep 2003 16:56:57 -0000 @@ -1280,7 +1280,11 @@
my @libs;
for my $type (map { uc } keys %libs) {
- push @libs, $self->{"MODPERL_LIB_$type"} if $self->{"MP_USE_$type"};
+ next unless $self->{"MP_USE_$type"};
+ # on win32 mod_perl.lib must come after mod_perl.so
+ $type eq 'DSO'
+ ? unshift @libs, $self->{"MODPERL_LIB_$type"}
+ ? push @libs, $self->{"MODPERL_LIB_$type"};
}print $fh $self->canon_make_attr('lib', "@libs");
or did you want to make sure that mod_perl.lib would be the very last one? most likely this is the case since now we have: $libs{shared} = $libs{dso};
Index: lib/Apache/Build.pm =================================================================== RCS file: /home/cvs/modperl-2.0/lib/Apache/Build.pm,v retrieving revision 1.145 diff -u -r1.145 Build.pm --- lib/Apache/Build.pm 6 Sep 2003 01:10:18 -0000 1.145 +++ lib/Apache/Build.pm 12 Sep 2003 17:00:07 -0000 @@ -1280,7 +1280,11 @@
my @libs;
for my $type (map { uc } keys %libs) {
- push @libs, $self->{"MODPERL_LIB_$type"} if $self->{"MP_USE_$type"};
+ next unless $self->{"MP_USE_$type"};
+ # on win32 mod_perl.lib must come after mod_perl.so
+ $type eq 'STATIC'
+ ? push @libs, $self->{"MODPERL_LIB_$type"}
+ : unshift @libs, $self->{"MODPERL_LIB_$type"};
}print $fh $self->canon_make_attr('lib', "@libs");
------------------------------------------------------------------------
--- Build.pm.orig 2003-09-06 02:10:18.000000000 +0100
+++ Build.pm 2003-09-11 16:42:22.000000000 +0100
@@ -1279,7 +1279,9 @@
}
my @libs;
- for my $type (map { uc } keys %libs) {
+ # NOTE: The keys are sorted to make sure the DSO/SHARED lib comes out before
+ # the STATIC lib. Happily, a straightforward sort() does this for us!
+ for my $type (map { uc } sort keys %libs) {
push @libs, $self->{"MODPERL_LIB_$type"} if $self->{"MP_USE_$type"};
}
__________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
