aboutsummaryrefslogtreecommitdiff
path: root/Tools/scripts
diff options
context:
space:
mode:
authorEdwin Groothuis <edwin@FreeBSD.org>2006-01-24 07:30:07 +0000
committerEdwin Groothuis <edwin@FreeBSD.org>2006-01-24 07:30:07 +0000
commit295732eff20dc445c8a5ba23ff11bc9399be28a6 (patch)
tree05d70793b706c2a9a172eb7d0e6f14769337052e /Tools/scripts
parent98bb6c6c4ce9ed1a0f141b6cd3617db209f403bf (diff)
downloadports-295732eff20dc445c8a5ba23ff11bc9399be28a6.tar.gz
ports-295732eff20dc445c8a5ba23ff11bc9399be28a6.zip
Notes
Diffstat (limited to 'Tools/scripts')
-rwxr-xr-xTools/scripts/distinfochecker105
1 files changed, 105 insertions, 0 deletions
diff --git a/Tools/scripts/distinfochecker b/Tools/scripts/distinfochecker
new file mode 100755
index 000000000000..1cb249a40406
--- /dev/null
+++ b/Tools/scripts/distinfochecker
@@ -0,0 +1,105 @@
+#!/usr/bin/perl -w
+
+#
+# $FreeBSD$
+#
+# Author: Edwin Groothuis <edwin@FreeBSD.org>
+#
+
+#
+# Small tool to find distinfo with missing MD5/SHA256/SIZE statements,
+# based on the assumption that if there is one of the MD5/SHA256/SIZE
+# statements, then there should be all of them (except for SIZE
+# when MD5/SHA256 is set to IGNORE).
+#
+# Usage: distinfochecker [-v] [-d directory]
+# -v - verbose (print)
+# -d - use directory instead of /usr/ports
+#
+
+use Getopt::Std;
+use strict;
+use Data::Dumper;
+
+my $UP="/usr/ports";
+my $verbose=0;
+
+my %opts=();
+getopt('d:v',\%opts);
+
+$UP=$opts{d} if (defined $opts{d});
+$verbose=1 if (defined $opts{v});
+
+opendir(DHUP,$UP);
+while (my $c=readdir(DHUP)) {
+
+ next if ($c=~/^\./);
+ next if ($c=~/^[A-Z]/);
+ next if ($c=~/^distfiles/);
+
+ opendir(DHUPC,"$UP/$c");
+ while (my $p=readdir(DHUPC)) {
+ next if ($p=~/^\./);
+ next if ($p=~/^Makefile/);
+
+ if (!-f "$UP/$c/$p/distinfo") {
+ print "$c/$p - No distinfo found\n" if ($verbose);
+ next;
+ }
+ open(FIN,"$UP/$c/$p/distinfo");
+ my @lines=<FIN>;
+ chomp(@lines);
+ close(FIN);
+
+ my %MD5=();
+ my %SHA256=();
+ my %SIZE=();
+
+ foreach my $line (@lines) {
+ $MD5{$1}=$2 if ($line=~/^MD5 \((.+?)\) = (.+?)$/);
+ $SHA256{$1}=$2 if ($line=~/^SHA256 \((.+?)\) = (.+?)$/);
+ $SIZE{$1}=$2 if ($line=~/^SIZE \((.+?)\) = (.+?)$/);
+ }
+
+ foreach my $f (sort(keys(%MD5))) {
+ if (!defined ($SHA256{$f})) {
+ print "$c/$p - Missing SHA256 for $f\n";
+ $SHA256{$f}="missing";
+ }
+ if ($MD5{$f} ne "IGNORE") {
+ if (!defined ($SIZE{$f})) {
+ print "$c/$p - Missing SIZE for $f\n";
+ $SIZE{$f}="missing";
+ }
+ }
+ }
+
+ foreach my $f (sort(keys(%SHA256))) {
+ if (!defined ($MD5{$f})) {
+ print "$c/$p - Missing MD5 for $f\n";
+ $MD5{$f}="missing";
+ }
+ if ($SHA256{$f} ne "IGNORE") {
+ if (!defined ($SIZE{$f})) {
+ print "$c/$p - Missing SIZE for $f\n";
+ $SIZE{$f}="missing";
+ }
+ }
+ }
+
+ foreach my $f (sort(keys(%SIZE))) {
+ if (!defined ($MD5{$f})) {
+ print "$c/$p - Missing MD5 for $f\n";
+ $MD5{$f}="missing";
+ }
+ if (!defined ($SHA256{$f})) {
+ print "$c/$p - Missing SHA256 for $f\n";
+ $SHA256{$f}="missing";
+ }
+ }
+
+
+ }
+ closedir(DHUPC);
+}
+closedir(DHUP);