Author: stevehay
Date: Fri Aug 2 17:07:35 2013
New Revision: 1509781
URL: http://svn.apache.org/r1509781
Log:
Add the path to mod_perl.so to the PATH when running the test suite on Windows
Httpd.exe is able to find mod_perl.so because the test httpd.conf contains a
LoadModule line with the fully qualified path to mod_perl.so in it. However,
before httpd.exe is started the test framework must create that httpd.conf
file. In the case of mod_perl it uses perl.exe and goes into
Apache/TestConfigPerl.pm's run_apache_test_configure(), which runs
APACHE_TEST_CONFIGURE() in various modules in t/response/TestApache (e.g.
subprocess.pm). Those modules all use Apache2::Const, but
Apache2/Const/Const.dll and ModPerl/Const/Const.dll now depend on mod_perl.so
for the 'perl_module' symbol. Therefore, perl.exe must be able to find
mod_perl.so when running the tests, and this is the easiest way to achieve that.
There is no problem with Apache2::Const and ModPerl::Const depending on
mod_perl.so because they are normally only used within a mod_perl application,
which will (obviously) have mod_perl.so loaded already. (It is only the APR::*
modules which we are at pains (elsewhere) to avoid having a dependency on
mod_perl.so because they are of use outside of mod_perl applications.)
Modified:
perl/modperl/branches/httpd24/Makefile.PL
Modified: perl/modperl/branches/httpd24/Makefile.PL
URL:
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/Makefile.PL?rev=1509781&r1=1509780&r2=1509781&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/Makefile.PL (original)
+++ perl/modperl/branches/httpd24/Makefile.PL Fri Aug 2 17:07:35 2013
@@ -775,8 +775,24 @@ sub MY::test {
$ap_bindir = File::Spec->catdir($build->{MP_AP_PREFIX}, 'bin')
if $build->{MP_AP_PREFIX};
}
+ my $modperl_libexecdir = '';
+ if ($build->is_dynamic) {
+ # need to add the location of mod_perl.so to the PATH
+ my $lib = $build->modperl_libpath() || '';
+ if ($lib) {
+ $modperl_libexecdir = File::Basename::dirname($lib);
+ }
+ else {
+ $modperl_libexecdir = File::Spec->catdir($build->{cwd},
+ 'src/modules/perl')
+ if $build->{cwd};
+ }
+ }
+ my $extra_path = '';
+ $extra_path .= ";$ap_bindir" if $ap_bindir;
+ $extra_path .= ";$modperl_libexecdir" if $modperl_libexecdir;
$preamble = <<EOF;
-PATH = \$(PATH);$ap_bindir
+PATH = \$(PATH)$extra_path
EOF
}
else {