freebsd-ports/ports-mgmt/portlint/src/portlintgrep.pl
Joe Marcus Clarke 1f93b36619 Update to 2.5.0.
* Add some linenumbers to the whole file search
* Hack the direct command use code some more
* Add a check for the deprecated USE_MESA
* Allow PKGCATEGORY not in CATEGORIES [1]
* Allow %B in pkg-plist, as it has a valid prefix [1]
* Allow simple rm -f, it needs no redirection [1]
* Add portlintgrep.pl, an example on how to use portlint to find certain
  portlint problems in the ports tree [2]

Submitted by:	dinoex [1]
		eik [2]
2003-11-17 20:17:46 +00:00

53 lines
1.7 KiB
Perl

#!/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";
}