When I run "perl Makefile.PL" to configure a static mod_perl2 build and have an older version of Apache already installed in the --prefix directory, I get the following error message:
Configuring Apache/2.0.52 mod_perl/1.999.21 Perl/v5.8.5 [ error] Can't find apr include/ directory, [ error] use MP_APR_CONFIG=/path/to/apr-config
Looking at lib/Apache/Build.pm the following code in subroutine dir seems to be the culprit:
if (IS_MOD_PERL_BUILD) {
my $build = $self->build_config; if ($dir = $build->{'dir'}) {
for ($dir, "../$dir", "../../$dir") {
last if -d ($dir = $_);
}
}
} $dir ||= $self->{MP_AP_PREFIX};If the right directory isn't found in the for loop $dir still contains a value, so the ||= has no effect.
Everything works as expected with the attached patch.
Nick
-- aevum gmbh leopoldstr. 41 80802 m�nchen germany
fon: +4989 38380653 [EMAIL PROTECTED] http://aevum.de/
--- mod_perl-2.0.0-RC4/lib/Apache/Build.pm 2005-01-11 09:33:07.000000000
+0100
+++ mod_perl-2.0.0-RC4-nik/lib/Apache/Build.pm 2005-01-22 21:05:56.638188739
+0100
@@ -905,11 +905,14 @@
return $self->{dir} if $self->{dir};
if (IS_MOD_PERL_BUILD) {
- my $build = $self->build_config;
+ my $bdir = $self->build_config->{dir};
- if ($dir = $build->{'dir'}) {
- for ($dir, "../$dir", "../../$dir") {
- last if -d ($dir = $_);
+ if ($bdir) {
+ for ($bdir, "../$bdir", "../../$bdir") {
+ if (-d $_) {
+ $dir = $_;
+ last;
+ }
}
}
}
