This is kind of convoluted, but bare with me: I have Apache2/mod_perl2 and Apache::Test installed on my system (FC6) in the standard locations. I now want to install Apache1/mod_perl1 and libapreq 1.33 in a separate location that doesn't have Apache::Test. Now running Makefile.PL in for libapreq (after Apache1/mod_perl1 have already been built in my local install of course) always fails with this message:
mod_perl 1.x ( < 1.99) is required at Makefile.PL line 58 And it doesn't matter what I put into PERL5LIB, LIB, APXS or APACHE environment vars. The reason is because libapreq's Makefile.PL first tries to locate Apache::Test, which on my system is configured to work with Apache2/mod_perl2. Apache::Test loads Apache::TestConfig which then loads mod_perl2.pm. And that's how it's supposed to work. But Apache::TestConfig sets $INC{'mod_perl.pm'} to /dev/null so when libapreq's Makefile.PL tries to require mod_perl it instead thinks it's mod_perl2 (not because mod_perl2 comes before mod_perl in @INC, but because Apache::Test specifically loads mod_perl2). The attached patch should fix this problem in Makefile.PL by doing the test for mod_perl version before the test for Apache::Test. -- Michael Peters Developer Plus Three, LP
--- Makefile.PL 2004-12-06 10:31:08.000000000 -0500 +++ Makefile.PL.new 2007-05-10 11:19:46.000000000 -0400 @@ -6,6 +6,18 @@ use File::Path qw(mkpath); use lib qw(Apache-Test/lib); +BEGIN { + unless (eval {require mod_perl}) { + die "Please install mod_perl: 1.25 < version < 1.99\n($@)"; + } + if ($mod_perl::VERSION < 1.2402) { + die "Please upgrade mod_perl to 1.24_02 or greater"; + } + elsif ($mod_perl::VERSION > 1.98) { + die "mod_perl 1.x ( < 1.99) is required"; + } +} + use constant MIN_A_T_VERSION => 1.13; use constant HAS_APACHE_TEST => eval { @@ -23,17 +35,6 @@ require Apache::TestMM; Apache::TestMM->import(qw(test clean)); } -BEGIN { - unless (eval {require mod_perl}) { - die "Please install mod_perl: 1.25 < version < 1.99\n($@)"; - } - if ($mod_perl::VERSION < 1.2402) { - die "Please upgrade mod_perl to 1.24_02 or greater"; - } - elsif ($mod_perl::VERSION > 1.98) { - die "mod_perl 1.x ( < 1.99) is required"; - } -} my $conf_data = join '', <DATA>; $conf_data =~ s|(blib/arch)|$FindBin::Bin/$1|;