hi all...
in TestConfigPerl we have this logic and comment
# modules like Embperl.so need mod_perl.so to be loaded first,
# so make sure that it's loaded before files inherited from the
# global httpd.conf
$self->preamble_first(IfModule => '!mod_perl.c', $cfg);
what this does is load mod_perl.so ahead of all other modules, giving it
least priority. there are a few problems I see with this
- in 1.3 this is a _very_ untypical setup - mod_perl.so needs to be loaded
last so that it gets first crack at each phase.
- in 2.X order doesn't matter due to the new hooking API, but it _does_
matter for overriding directives. that is, you can't load mod_perl.so first
and get first crack at _directive_ parsing.
anyway, I guess what I'm saying is that 99% of the time we want mod_perl to
have the highest priority, but we do the exact opposite with Apache-Test,
which is probably ungood.
now, in all fairness to embperl I don't want to just yank this out without
giving gerald some alternative. however, I think it's a bad idea to create
a test environment that doesn't accurately represent the most common case.
so, here are some possible solutions...
- historically I think this was introduced before we had
extra.last.conf.in functionality. gerald, does using that file help you?
- we could provide for an extra argument to configure_libmodperl() which
would place mod_perl.so first instead of the (new) default of last. this
would allow folks like embperl to do something like
package My::TestConfigurePerl;
our @ISA = qw(Apache::TestConfigurePerl);
sub configure_libmodperl { shift->SUPER::configure_libmodperl(1) }
and have things work the way they did before. patch attached.
thoughts?
--Geoff
Index: lib/Apache/TestConfigPerl.pm
===================================================================
--- lib/Apache/TestConfigPerl.pm (revision 152675)
+++ lib/Apache/TestConfigPerl.pm (working copy)
@@ -29,6 +29,8 @@
sub configure_libmodperl {
my $self = shift;
+ my $first = shift;
+
my $server = $self->{server};
my $libname = $server->version_of(\%libmodperl);
my $vars = $self->{vars};
@@ -94,10 +96,17 @@
debug $msg;
}
- # modules like Embperl.so need mod_perl.so to be loaded first,
- # so make sure that it's loaded before files inherited from the
- # global httpd.conf
- $self->preamble_first(IfModule => '!mod_perl.c', $cfg);
+ if ($first) {
+ # modules like Embperl.so need mod_perl.so to be loaded first,
+ # so make sure that it's loaded before files inherited from the
+ # global httpd.conf
+ $self->preamble_first(IfModule => '!mod_perl.c', $cfg);
+ }
+ else {
+ # the default for most mod_perl installations - give mod_perl
+ # highest priority by loading it last.
+ $self->preamble(IfModule => '!mod_perl.c', $cfg);
+ }
}