Browse Source

Add portlintgrep.pl, an example on how to use portlint to find certain
portlint problems in the ports tree.

Submitted by: eik

marcus 20 years ago
parent
commit
c7b651038f
1 changed files with 53 additions and 0 deletions
  1. 53 0
      portlintgrep.pl

+ 53 - 0
portlintgrep.pl

@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+#
+# Copyright (c) 2003 Oliver Eikemeier. All rights reserved.
+#
+# BSD licensed.
+#
+
+#
+# List all the ports with FATAL errors:
+#
+# portlintgrep ^FATAL:
+#
+
+require 5.005;
+use diagnostics;
+use strict;
+use Carp;
+
+my $make     = $ENV{MAKE}     ? $ENV{MAKE}     : '/usr/bin/make';
+my $portlint = $ENV{PORTLINT} ? $ENV{PORTLINT} : '/usr/local/bin/portlint';
+my $portsdir = $ENV{PORTSDIR} ? $ENV{PORTSDIR} : '/usr/ports';
+my $portlint_args = $ENV{PORTLINT_ARGS} ? $ENV{PORTLINT_ARGS} : '';
+
+die "Usage: portlintgrep <regex>\n" if $#ARGV != 0;
+my $regex = qr/$ARGV[0]/;
+
+my %failedports;
+
+my @categories = split ' ', `cd $portsdir; $make -VSUBDIR`;
+foreach my $category (@categories) {
+        my @ports = split ' ', `cd "$portsdir/$category"; $make -VSUBDIR`;
+        foreach my $port (@ports) {
+                my @result =
+                    `cd "$portsdir/$category/$port"; $portlint $portlint_args`;
+                map chomp, @result;
+                my @filteredresult = grep /$regex/o, @result;
+                if (@filteredresult) {
+                        my $maintainer =
+                            `cd "$portsdir/$category/$port"; $make -VMAINTAINER`;
+                        chomp $maintainer;
+                        push @{$failedports{$maintainer}}, "$category/$port";
+                        print join("\n  ",
+                                "$category/$port <$maintainer>:",
+                                @filteredresult),
+                            "\n";
+                }
+        }
+}
+
+print "\nPorts sorted by maintainer:\n";
+foreach my $maintainer (sort { lc $a cmp lc $b } keys %failedports) {
+        print join("\n - ", $maintainer, @{$failedports{$maintainer}}), "\n";
+}