]> git.donarmstrong.com Git - debbugs.git/commitdiff
work around broken .debinfo files by faking the binarch from the
authorDon Armstrong <don@donarmstrong.com>
Mon, 17 Sep 2012 21:54:09 +0000 (14:54 -0700)
committerDon Armstrong <don@donarmstrong.com>
Mon, 17 Sep 2012 21:54:09 +0000 (14:54 -0700)
filename if there are only four fields.

examples/debian/versions/merge-one-debinfo

index 1ac22689308a48a55093bf9278ad04d0127a0a3d..132ee4505efe4acc8cecfb1486ea97ab53f55799 100755 (executable)
@@ -1,4 +1,6 @@
-#! /usr/bin/perl -w
+#! /usr/bin/perl
+
+use warnings;
 use strict;
 use MLDBM qw(DB_File Storable);
 use Fcntl;
@@ -13,16 +15,32 @@ tie %binsrc, 'MLDBM', '/org/bugs.debian.org/versions/indices/binsrc.idx',
             O_CREAT|O_RDWR, 0644
     or die "tie binsrc.idx: $!";
 
-while (<>) {
-    my ($binname, $binver, $binarch, $srcname, $srcver) = split;
-    print STDERR "$binname/$binver/$binarch => $srcname/$srcver\n";
+my @files  = @ARGV;
+
 
-    # see MLDBM(3pm)/BUGS
-    my $tmp = $srcbin{$srcname};
-    push @{$tmp->{$srcver}}, [$binname, $binver, $binarch];
-    $srcbin{$srcname} = $tmp;
+for my $file (@files) {
+    my $fh = IO::File->new($file,'r') or
+       die "Unable to open $file for reading: $!";
+    while (<$fh>) {
+       chomp;
+       next unless length $_;
+       my ($binname, $binver, $binarch, $srcname, $srcver) = split;
+       # if $srcver is not defined, this is probably a broken
+       # .debinfo file [they were causing #686106, see commit
+       # 49c85ab8 in dak.] Basically, $binarch didn't get put into
+       # the file, so we'll fudge it from the filename.
+       if (not defined $srcver) {
+           ($srcname,$srcver) = ($binarch,$srcname);
+           ($binarch) = $file =~ /_([^\.])\.debinfo/;
+       }
+       print STDERR "$binname/$binver/$binarch => $srcname/$srcver\n";
+       # see MLDBM(3pm)/BUGS
+       my $tmp = $srcbin{$srcname};
+       push @{$tmp->{$srcver}}, [$binname, $binver, $binarch];
+       $srcbin{$srcname} = $tmp;
 
-    $tmp = $binsrc{$binname};
-    $tmp->{$binver}{$binarch} = [$srcname, $srcver];
-    $binsrc{$binname} = $tmp;
+       $tmp = $binsrc{$binname};
+       $tmp->{$binver}{$binarch} = [$srcname, $srcver];
+       $binsrc{$binname} = $tmp;
+    }
 }