pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/pkgtools/pkglint/files Optimized the doc/CHANGES handl...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/e2240def26c4
branches:  trunk
changeset: 557978:e2240def26c4
user:      rillig <rillig%pkgsrc.org@localhost>
date:      Sun Apr 26 12:51:35 2009 +0000

description:
Optimized the doc/CHANGES handling to get the get_doc_CHANGES function
out of the top-15 time consumers, as measured by DProf. The execution
time decreased by about 15 percent.

diffstat:

 pkgtools/pkglint/files/pkglint.pl |  24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)

diffs (62 lines):

diff -r 6b75a657934d -r e2240def26c4 pkgtools/pkglint/files/pkglint.pl
--- a/pkgtools/pkglint/files/pkglint.pl Sun Apr 26 11:43:44 2009 +0000
+++ b/pkgtools/pkglint/files/pkglint.pl Sun Apr 26 12:51:35 2009 +0000
@@ -1,5 +1,5 @@
 #! @PERL@
-# $NetBSD: pkglint.pl,v 1.809 2009/04/26 11:24:23 rillig Exp $
+# $NetBSD: pkglint.pl,v 1.810 2009/04/26 12:51:35 rillig Exp $
 #
 
 # pkglint - static analyzer and checker for pkgsrc packages
@@ -2189,21 +2189,21 @@
        my ($fname) = @_;
        my $lines = load_file($fname) or die;
 
-       my @changes = ();
+       my $changes = {}; # { pkgpath -> @changes }
        foreach my $line (@$lines) {
                my $text = $line->text;
                next unless $text =~ m"^\t[A-Z]";
 
                if ($text =~ m"^\t(Updated) (\S+) to (\S+) \[(\S+) (\d\d\d\d-\d\d-\d\d)\]$") {
-                       push(@changes, PkgLint::Change->new($line, $1, $2, $3, $4, $5));
+                       push(@{$changes->{$2}}, PkgLint::Change->new($line, $1, $2, $3, $4, $5));
                } elsif ($text =~ m"^\t(Added) (\S+) version (\S+) \[(\S+) (\d\d\d\d-\d\d-\d\d)\]$") {
-                       push(@changes, PkgLint::Change->new($line, $1, $2, $3, $4, $5));
+                       push(@{$changes->{$2}}, PkgLint::Change->new($line, $1, $2, $3, $4, $5));
                } elsif ($text =~ m"^\t(Removed) (\S+) (?:successor (\S+) )?\[(\S+) (\d\d\d\d-\d\d-\d\d)\]$") {
-                       push(@changes, PkgLint::Change->new($line, $1, $2, undef, $3, $4));
+                       push(@{$changes->{$2}}, PkgLint::Change->new($line, $1, $2, undef, $3, $4));
                } elsif ($text =~ m"^\t(Downgraded) (\S+) to (\S+) \[(\S+) (\d\d\d\d-\d\d-\d\d)\]$") {
-                       push(@changes, PkgLint::Change->new($line, $1, $2, $3, $4, $5));
+                       push(@{$changes->{$2}}, PkgLint::Change->new($line, $1, $2, $3, $4, $5));
                } elsif ($text =~ m"^\t(Renamed|Moved) (\S+) to (\S+) \[(\S+) (\d\d\d\d-\d\d-\d\d)\]$") {
-                       push(@changes, PkgLint::Change->new($line, $1, $2, $3, $4, $5));
+                       push(@{$changes->{$2}}, PkgLint::Change->new($line, $1, $2, $3, $4, $5));
                } else {
                        $line->log_warning("Unknown doc/CHANGES line: " . $line->text);
                        $line->explain_warning(
@@ -2211,10 +2211,10 @@
 "established by mk/misc/developer.mk?");
                }
        }
-       return \@changes;
-}
-
-my $get_doc_CHANGES_docs = undef; # [ $fname, undef or $lines ]
+       return $changes;
+}
+
+my $get_doc_CHANGES_docs = undef; # [ $fname, undef or { pkgpath -> @changes } ]
 sub get_doc_CHANGES($) {
        my ($pkgpath) = @_;
 
@@ -2243,7 +2243,7 @@
                        $doc->[1] = load_doc_CHANGES("${cwd_pkgsrcdir}/doc/$doc->[0]");
                }
 
-               foreach my $change (@{$doc->[1]}) {
+               foreach my $change (@{$doc->[1]->{$pkgpath}}) {
                        next unless $pkgpath eq $change->pkgpath;
                        push(@result, $change);
                }



Home | Main Index | Thread Index | Old Index