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 {


Reply via email to