You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@perl.apache.org by Fred Moyer <fr...@redhotpenguin.com> on 2010/10/15 06:22:14 UTC

Hacking away - changes coming

Long email - read for the full diff.  I'm getting all tests passing on
these changes.  Changes entries inline.

phred@pooky ~/dev/svn/modperl/mod_perl-2.0 $ svn status
X       docs
?       CONTRIBUTORS
?       SUPPORT
?       install-pl
X       Apache-Reload
X       Apache-SizeLimit
X       Apache-Test
M       RELEASE
M       META.yml
M       Makefile.PL
M       xs/maps/apache2_functions.map
M       xs/Apache2/URI/Apache2__URI.h
M       README
?       t/modperl/stdfd2.t
?       t/modperl/stdfd.t
M       lib/ModPerl/BuildOptions.pm
M       INSTALL
M       Changes

Performing status on external item at 'Apache-Test'
?       Apache-Test/blib
D       Apache-Test/install-pl
M       Apache-Test/Makefile.PL
M       Apache-Test/lib/Apache/TestConfigPerl.pm
M       Apache-Test/lib/Apache/TestConfig.pm
M       Apache-Test/Changes

Performing status on external item at 'Apache-Reload'
?       Apache-Reload/pm_to_blib
?       Apache-Reload/blib
?       Apache-Reload/Makefile.old
?       Apache-Reload/Makefile
?       Apache-Reload/t/TEST
?       Apache-Reload/t/htdocs
?       Apache-Reload/t/logs
?       Apache-Reload/t/conf/apache_test_config.pm
?       Apache-Reload/t/conf/modperl_inc.pl
?       Apache-Reload/t/conf/httpd.conf
?       Apache-Reload/t/conf/extra.last.conf
?       Apache-Reload/t/conf/modperl_startup.pl
M       Apache-Reload/Makefile.PL
M       Apache-Reload/Changes

Performing status on external item at 'Apache-SizeLimit'
?       Apache-SizeLimit/Apache2-SizeLimit-0.91-dev.tar.gz
M       Apache-SizeLimit/Makefile.PL

Performing status on external item at 'docs'


MOD_PERL DIFF STARTS HERE


Index: Makefile.PL
===================================================================
--- Makefile.PL	(revision 997487)
+++ Makefile.PL	(working copy)
@@ -629,13 +629,6 @@
 use constant WIN32 => $^O eq 'MSWin32';
 use constant BUILD_APREXT => Apache2::Build::BUILD_APREXT;

-my $apache_test_install;
-BEGIN {
-    $apache_test_install = -e 'Apache-Test';
-    use lib './Apache-Test';
-    require 'install-pl' if $apache_test_install;
-}
-
 sub MY::top_targets {
     my $self = shift;
     my $string = $self->ModPerl::BuildMM::MY::top_targets;
@@ -729,9 +722,6 @@

 EOF

-    $string .= Apache::Test::install::nuke_Apache__test_target()
-        if $apache_test_install;
-
     $string;
 }

@@ -747,9 +737,6 @@
 	# ModPerl::MM::add_dep(\$string, "pure${kind}_install" => 'aprext_install')
 	#    if BUILD_APREXT;

-	ModPerl::MM::add_dep(\$string, "pure${kind}_install" => 'nuke_Apache__test')
-	    if $apache_test_install;
-
 	ModPerl::MM::add_dep_after(\$string, "install$kind",
"doc${kind}_install", 'modperl_banner');

 	# glue_pods target must come first
Index: Changes
===================================================================
--- Changes	(revision 997487)
+++ Changes	(working copy)
@@ -12,6 +12,9 @@

 =item 2.0.5-dev

+Remove Apache::test compatibility (part of mod_perl 1.2.7)
+[Phred]
+
 Make sure perl is built either with multiplicity and ithreads or without
 both [Theory, Torsten]

Index: lib/ModPerl/BuildOptions.pm
===================================================================
--- lib/ModPerl/BuildOptions.pm	(revision 1002862)
+++ lib/ModPerl/BuildOptions.pm	(working copy)
@@ -66,6 +66,23 @@
     $build->{MP_COMPAT_1X} = 1
         unless exists $build->{MP_COMPAT_1X} && !$build->{MP_COMPAT_1X};

+    # make a last ditch effort to find apxs in $ENV{PATH}
+    if (!$build->{MP_AP_PREFIX} && !$build->{MP_APXS}) {
+
+        my @paths = split(/:/, $ENV{PATH});
+        my $potential_apxs;
+        while (!$potential_apxs) {
+
+            $potential_apxs = File::Spec->catfile(shift @paths, 'apxs');
+            if (-e $potential_apxs && -x $potential_apxs) {
+
+                $build->{MP_APXS} = $potential_apxs;
+                print "MP_APXS unspecified, using $potential_apxs\n\n";
+            } else {
+                undef $potential_apxs;
+            }
+        }
+    }
 }

 sub parse {


APACHE-TEST DIFF

Index: install-pl
===================================================================
--- install-pl	(revision 1022724)
+++ install-pl	(working copy)
@@ -1,67 +0,0 @@
-# this is just a helper module for the installation phase, so it can
-# be re-used during the standalone and mod_perl 2.0 install
-
-# it has this unusual filename: install-pl, to prevent MakeMaker from
-# installing it system-wide
-package Apache::Test::install;
-
-use strict;
-use warnings;
-
-use File::Spec::Functions qw(catfile catdir);
-
-# on Case-Insensitive systems Apache/Test.pm can't coexist with
-# Apache/test.pm, since Apache::test is now deprecated (was renamed to
-# Apache/testold.pm in mod_perl 1.28, we need to find and remove any
-# occurrences of this file. CPAN authors should
-# s/Apache::test/Apache::testold/ and can either require mod_perl 1.28
-# which already carries it or simply bundle it. The best option is to
-# port the test suite to use Apache::Test which works with both
-# mod_perl generations.
-#
-# we could have done this cleanup only for case-insensitive systems,
-# but I feel that doing it for all systems, will speedup the
-# transitions from Apache::test to either Apache::Test or
-# Apache::testold.
-#
-sub nuke_Apache__test_target {
-
-    my $cleanup_packlist = ".mypacklist";
-
-    my @convicts = ();
-    foreach (@INC) {
-        my $dir = catdir $_, "Apache";
-        next unless -d $dir;
-        opendir DIR, $dir or die "Cannot opendir $dir: $!\n";
-        my @matches = grep /^test.pm$/, readdir DIR;
-        closedir DIR;
-        push @convicts, map { catfile $dir, $_ } @matches if @matches;
-    }
-
-    if (@convicts) {
-        print <<EOI;
-!!! Makefile.PL has found old copies of Apache/test.pm which will
-be removed during 'make install' to prevent collisions with Apache::Test:
-
-@{[join "\n", @convicts]}
-
-CPAN authors are advised to either use Apache::testold or port their
-test suite to Apache::Test which works with both mod_perl generations.
-EOI
-    }
-
-    open PACKLIST, ">$cleanup_packlist"
-        or die "Can't open $cleanup_packlist: $!";
-    print PACKLIST join "", map "$_\n", @convicts;
-    close PACKLIST;
-
-    return <<EOF;
-
-nuke_Apache__test:
-\t\$(FULLPERL) -MExtUtils::Install -e \\
-\t"-e qq{$cleanup_packlist} && uninstall(qq{$cleanup_packlist}, 1, 0)"
-EOF
-
-}
-
-1;
Index: Makefile.PL
===================================================================
--- Makefile.PL	(revision 1022724)
+++ Makefile.PL	(working copy)
@@ -8,7 +8,7 @@

 # was this file invoked directly via perl, or via the top-level
 # (mp2) Makefile.PL? if top-level, this env var will be set
-use constant TOP_LEVEL => !exists $ENV{MOD_PERL_2_BUILD};
+use constant TOP_LEVEL => $ENV{MOD_PERL_2_BUILD};

 use ExtUtils::MakeMaker;
 use Symbol;
@@ -24,8 +24,6 @@
 my $VERSION;
 set_version();

-sanity_check();
-
 Apache::TestMM::filter_args();

 my @scripts = qw(t/TEST);
@@ -52,13 +50,6 @@
 }
 Apache::TestReport->generate_script;

-# if built with mod_perl 2.0, its top-level Makefile.PL already
-# installs the uninstall code
-if (TOP_LEVEL) {
-    require "./install-pl";
-    add_Apache__test_target();
-}
-
 my @clean_files =
     qw(.mypacklist
        t/TEST
@@ -143,37 +134,6 @@
     close $fh;
 }

-sub sanity_check {
-    # don't allow running an explicit 'perl Makefile.PL', when
-    # Apache-Test is checked out into the modperl-2.0 tree, since
-    # it then decides that it's a part of the modperl-2.0 build and
-    # will try to use modperl httpd/apxs arguments which could be
-    # unset or wrong
-    if (TOP_LEVEL && -e "../lib/mod_perl2.pm") {
-        error "Do not run 'perl Makefile.PL' when Apache-Test is a " .
-            "subdirectory of modperl-2.0. Copy it elsewhere and run " .
-            "from there.";
-        Apache::TestRun::exit_perl(0);
-    }
-}
-
-if (TOP_LEVEL && $ExtUtils::MakeMaker::VERSION < 6.06) {
-    # now that we're using subversion, make sure that
-    # .svn directories are skipped during the build process
-    # for old versions of MakeMaker
-    *MY::libscan = sub {
-        my $self = shift;
-
-        my $path = shift;
-
-        return '' if $path =~ /\B\.svn\b/;
-
-        return $path;
-    };
-    # avoid warning: used only once: possible typo at ...
-    *MY::libscan = *MY::libscan;
-}
-
 sub MY::postamble {
     my $self = shift;

@@ -188,52 +148,11 @@
     return $string;
 }

-sub MY::constants {
-    my $self = shift;
-
-    my $string = $self->MM::constants;
-
-    # mp2 installs A-T into INSTALLSITEARCH, so in order to avoid
-    # problems when users forget 'make install UNINST=1', trick MM into
-    # installing pure perl modules to the sitearch location, when A-T is
-    # not installed as a part of mp2 build
-    if (TOP_LEVEL) {
-        $string .= <<'EOI';
-
-# install into the same location as mod_perl 2.0
-INSTALLSITELIB = $(INSTALLSITEARCH)
-DESTINSTALLSITELIB = $(DESTINSTALLSITEARCH)
-EOI
-    }
-
-    $string;
-}
-
 sub add_dep {
     my($string, $targ, $add) = @_;
     $$string =~ s/($targ\s+::)/$1 $add/;
 }

-sub add_Apache__test_target {
-    use subs qw(MY::install MY::top_targets);
-    *MY::install = sub {
-        my $self = shift;
-
-        my $string = $self->MM::install(@_);
-        add_dep(\$string, pure_install => 'nuke_Apache__test');
-        $string;
-    };
-
-    *MY::top_targets = sub {
-        my $self = shift;
-        my $string = $self->MM::top_targets;
-
-        $string .= Apache::Test::install::nuke_Apache__test_target();
-
-        $string;
-    };
-}
-
 sub MY::test {
     my $self = shift;

Index: lib/Apache/TestConfigPerl.pm
===================================================================
--- lib/Apache/TestConfigPerl.pm	(revision 1022724)
+++ lib/Apache/TestConfigPerl.pm	(working copy)
@@ -45,16 +45,21 @@
     # $server->{rev} could be set to 2 as a fallback, even when
     # the wanted version is 1. So check that we use mod_perl 2
     elsif ($server->{rev} >= 2 && IS_MOD_PERL_2) {
+
         if (my $build_config = $self->modperl_build_config()) {
             if ($build_config->{MODPERL_LIB_SHARED}) {
                 $libname = $build_config->{MODPERL_LIB_SHARED};
                 $vars->{libmodperl} ||= $self->find_apache_module($libname);
+            } else {
+                $vars->{libmodperl} ||=
$self->find_apache_module('mod_perl.so');
             }
             # XXX: we have a problem with several perl trees pointing
             # to the same httpd tree. So it's possible that we
             # configure the test suite to run with mod_perl.so built
             # against perl which it wasn't built with. Should we use
             # something like ldd to check the match?
+            #
+            # For now, we'll default to the first mod_perl.so found.
         }
         else {
             # XXX: can we test whether mod_perl was linked statically
Index: lib/Apache/TestConfig.pm
===================================================================
--- lib/Apache/TestConfig.pm	(revision 1022724)
+++ lib/Apache/TestConfig.pm	(working copy)
@@ -1011,11 +1011,13 @@
         }
     }

-    for (qw(. ..)) {
-        my $dir = canonpath catdir $FindBin::Bin, $_ , "Apache-Test", "lib";
-        if (-d $dir) {
-            push @dirs, $dir;
-            last;
+    foreach my $lib (qw( lib blib) ) {
+        for (qw(. ..)) {
+            my $dir = canonpath catdir $FindBin::Bin, $_ , "Apache-Test", $lib;
+            if (-d $dir) {
+                push @dirs, $dir;
+                last;
+            }
         }
     }

Index: Changes
===================================================================
--- Changes	(revision 1022724)
+++ Changes	(working copy)
@@ -8,6 +8,14 @@

 =item 1.34-dev

+When an explicit shared mod_perl lib is not defined, default to the first
+shared module found by find_apache_module().
+[Fred Moyer]
+
+Fix logic error in TOP_LEVEL constant calculation.  Remove Apache::test
+compatibility from mod_perl 1.27.
+[Fred Moyer]
+
 Remove the custom config feature, and instead use inline directives,
 ENV vars, and look for apxs et al in PATH.
 [Fred Moyer]


APACHE-RELOAD

Index: Makefile.PL
===================================================================
--- Makefile.PL	(revision 997487)
+++ Makefile.PL	(working copy)
@@ -5,7 +5,7 @@
 my %prereqs = ();
 my %mp2 = ( mod_perl2 => 1.99022 );
 my %mp1 = ( mod_perl  => 0 );
-my $at_min_ver = 1.30;
+my $at_min_ver = 1.34;

 my $mp_gen;
 if ($ENV{MOD_PERL_2_BUILD}) {
@@ -45,6 +45,7 @@
                               );
 }

+# MOD_PERL_2_BUILD is set from building from mod_perl Makefile.PL
 if ($ENV{MOD_PERL_2_BUILD}) {
     pop @ARGV;
 }
@@ -53,10 +54,9 @@
     return unless eval {
         require Apache::Test;
         if ($Apache::Test::VERSION < $at_min_ver) {
-            warn "Apache::Test version is " . $Apache::Test::VERSION .
+            die "Apache::Test version is " . $Apache::Test::VERSION .
                 ", minimum version required is $at_min_ver" .
                 ", tests will be skipped\n";
-            die;
         }
         require Apache::TestMM;
         require Apache::TestRunPerl;
@@ -67,13 +67,6 @@

     my %args = @Apache::TestMM::Argv;

-    return 0
-        unless (( Apache::TestConfig->can('custom_config_path')
-                  and -f Apache::TestConfig->custom_config_path())
-                or $args{apxs} or $args{httpd}
-                or $ENV{APACHE_TEST_HTTPD} or $ENV{APACHE_TEST_APXS});
-
-
     Apache::TestRunPerl->generate_script();

     return 1;
Index: Changes
===================================================================
--- Changes	(revision 997487)
+++ Changes	(working copy)
@@ -11,6 +11,9 @@

 =item 0.11 August 21, 2010

+Add Apache-Test 1.34 dependency.
+[Phred]
+
 Ignore require-hooks which exist in %INC
 [Ryan Gies <ry...@livesite.net>]


APACHE-SIZELIMIT

Index: Makefile.PL
===================================================================
--- Makefile.PL	(revision 997487)
+++ Makefile.PL	(working copy)
@@ -5,6 +5,7 @@
 my %prereqs = ();
 my %mp2 = ( mod_perl2 => 1.99022 );
 my %mp1 = ( mod_perl  => 0 );
+my $at_min_ver = 1.34;

 my $mp_gen;
 if ($ENV{MOD_PERL_2_BUILD}) {
@@ -72,6 +73,11 @@
 sub check_for_apache_test {
     return unless eval {
         require Apache::Test;
+         if ($Apache::Test::VERSION < $at_min_ver) {
+            die "Apache::Test version is " . $Apache::Test::VERSION .
+                ", minimum version required is $at_min_ver" .
+                ", tests will be skipped\n";
+        }
         require Apache::TestMM;
         require Apache::TestRunPerl;
         1;
@@ -81,13 +87,6 @@

     my %args = @Apache::TestMM::Argv;

-    return 0
-        unless (( Apache::TestConfig->can('custom_config_path')
-                  and -f Apache::TestConfig->custom_config_path())
-                or $args{apxs} or $args{httpd}
-                or $ENV{APACHE_TEST_HTTPD} or $ENV{APACHE_TEST_APXS});
-
-
     Apache::TestRunPerl->generate_script();

     return 1;

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org