Steve Hay wrote:
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]



Reply via email to