summaryrefslogtreecommitdiffstats
path: root/Tools/scripts
diff options
context:
space:
mode:
authoredwin <edwin@FreeBSD.org>2006-01-24 07:30:07 +0000
committeredwin <edwin@FreeBSD.org>2006-01-24 07:30:07 +0000
commit5109a125615de41f2cd47caad8359c6f582f05e2 (patch)
tree5cc90ea6454878cace63aedea83e8d31b5f78a49 /Tools/scripts
parent8dd8b7912e45dcb2061f525aa631b778cc759675 (diff)
downloadFreeBSD-ports-5109a125615de41f2cd47caad8359c6f582f05e2.zip
FreeBSD-ports-5109a125615de41f2cd47caad8359c6f582f05e2.tar.gz
Small tool to check the necessary lines in the distinfo files, based
on the contents of the distinfo files. # # 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 #
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 0000000..1cb249a
--- /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);
OpenPOWER on IntegriCloud