Author: randyk
Date: Thu Dec 23 19:59:54 2004
New Revision: 123271

URL: http://svn.apache.org/viewcvs?view=rev&rev=123271
Log:
speed up the 'perl Makefile.PL' stage
 - in ModPerl::BuildMM, introduce an overall $build, and call
   build_config() to define it only when it's not defined
 - in Apache::Build, change the apxs_cflags, apxs_extra_cflags,
   and apxs_extra_cppflags subs to call apxs as a method, if
   possible, so as to cache the result of the call
 - in the apxs sub of Apache::Build, return the cached result
   only if it's defined

Modified:
   perl/modperl/trunk/Changes
   perl/modperl/trunk/lib/Apache/Build.pm
   perl/modperl/trunk/lib/ModPerl/BuildMM.pm

Modified: perl/modperl/trunk/Changes
Url: 
http://svn.apache.org/viewcvs/perl/modperl/trunk/Changes?view=diff&rev=123271&p1=perl/modperl/trunk/Changes&r1=123270&p2=perl/modperl/trunk/Changes&r2=123271
==============================================================================
--- perl/modperl/trunk/Changes  (original)
+++ perl/modperl/trunk/Changes  Thu Dec 23 19:59:54 2004
@@ -12,6 +12,13 @@
 
 =item 1.99_20-dev
 
+speed up the 'perl Makefile.PL' stage [Randy Kobes]:
+ - reduce the number of calls to build_config() of
+   Apache::Build within ModPerl::BuildMM
+ - cache the results of the calls to apxs_cflags, apxs_extra_cflags,
+   and apxs_extra_cppflags in Apache::Build
+ - in apxs of Apache::Build, return a cached result only when defined
+
 move ModPerl::Util::exit() into mod_perl.so, since it needs to work,
 even if ModPerl::Util wasn't loaded [Stas]
 

Modified: perl/modperl/trunk/lib/Apache/Build.pm
Url: 
http://svn.apache.org/viewcvs/perl/modperl/trunk/lib/Apache/Build.pm?view=diff&rev=123271&p1=perl/modperl/trunk/lib/Apache/Build.pm&r1=123270&p2=perl/modperl/trunk/lib/Apache/Build.pm&r2=123271
==============================================================================
--- perl/modperl/trunk/lib/Apache/Build.pm      (original)
+++ perl/modperl/trunk/lib/Apache/Build.pm      Thu Dec 23 19:59:54 2004
@@ -152,7 +152,7 @@
     my $query_key;
     if ($is_query) {
         $query_key = 'APXS_' . uc $_[1];
-        if ($self->{$query_key}) {
+        if (defined $self->{$query_key}) {
             return $self->{$query_key};
         }
     }
@@ -185,21 +185,29 @@
 }
 
 sub apxs_cflags {
-    my $cflags = __PACKAGE__->apxs('-q' => 'CFLAGS');
+    my $who = who_am_i(shift);
+    my $cflags = $who->apxs('-q' => 'CFLAGS');
     $cflags =~ s/\"/\\\"/g;
     $cflags;
 }
 
 sub apxs_extra_cflags {
-    my $flags = __PACKAGE__->apxs('-q' => 'EXTRA_CFLAGS');
+    my $who = who_am_i(shift);
+    my $flags = $who->apxs('-q' => 'EXTRA_CFLAGS');
     $flags =~ s/\"/\\\"/g;
     $flags;
 }
 
 sub apxs_extra_cppflags {
-    my $flags = __PACKAGE__->apxs('-q' => 'EXTRA_CPPFLAGS');
+    my $who = who_am_i(shift);
+    my $flags = $who->apxs('-q' => 'EXTRA_CPPFLAGS');
     $flags =~ s/\"/\\\"/g;
     $flags;
+}
+
+sub who_am_i {
+    my $arg = shift;
+    return ($arg and ref($arg) eq __PACKAGE__) ? $arg : __PACKAGE__;
 }
 
 my %threaded_mpms = map { $_ => 1}

Modified: perl/modperl/trunk/lib/ModPerl/BuildMM.pm
Url: 
http://svn.apache.org/viewcvs/perl/modperl/trunk/lib/ModPerl/BuildMM.pm?view=diff&rev=123271&p1=perl/modperl/trunk/lib/ModPerl/BuildMM.pm&r1=123270&p2=perl/modperl/trunk/lib/ModPerl/BuildMM.pm&r2=123271
==============================================================================
--- perl/modperl/trunk/lib/ModPerl/BuildMM.pm   (original)
+++ perl/modperl/trunk/lib/ModPerl/BuildMM.pm   Thu Dec 23 19:59:54 2004
@@ -44,9 +44,11 @@
     q{-e "ModPerl::MM::install([EMAIL 
PROTECTED],'$(VERBINST)',0,'$(UNINST)');"}."\n";
 }
 
+my $build;
+
 sub build_config {
     my $key = shift;
-    my $build = Apache::Build->build_config;
+    $build ||= Apache::Build->build_config;
     return $build unless $key;
     $build->{$key};
 }
@@ -68,7 +70,7 @@
 sub WriteMakefile {
     my %args = @_;
 
-    my $build = build_config();
+    $build ||= build_config();
     ModPerl::MM::my_import(__PACKAGE__);
 
     my $inc = $build->inc;
@@ -133,7 +135,7 @@
 
 sub ModPerl::BuildMM::MY::constants {
     my $self = shift;
-    my $build = build_config();
+    $build ||= build_config();
 
     #install everything relative to the Apache2/ subdir
     if ($build->{MP_INST_APACHE2}) {
@@ -301,7 +303,7 @@
 
 sub ModPerl::BuildMM::MY::post_initialize {
     my $self = shift;
-    my $build = build_config();
+    $build ||= build_config();
     my $pm = $self->{PM};
 
     while (my($k, $v) = each %PM) {
@@ -343,10 +345,12 @@
     '';
 }
 
+my $apr_config;
+
 sub ModPerl::BuildMM::MY::libscan {
     my($self, $path) = @_;
 
-    my $apr_config = build_config()->get_apr_config();
+    $apr_config ||= $build->get_apr_config();
 
     if ($path =~ m/(Thread|Global)Mutex/) {
         return unless $apr_config->{HAS_THREADS};

Reply via email to