#! perl -nlw
$fn=$_;
next unless /dry-(.+)\.out$/;
$p=$1;
open FI,$fn or die;
while(<FI>){
    chomp;
    #Warning the package list is old.
    #Run 'cabal update' to get the latest list
    last if /Resolving dependencies\.\.\./;
}
unless($_ eq "Resolving dependencies..."){
    print STDERR "weird 1st line $fn";
    close FI;
    next;
}
$todo=0;
undef$pversion;
undef@deps;
while(<FI>){
    chomp;
    die if /Could not resolve dependencies/;
    die if /\(latest:/;
    if(/^In order, the following would be installed/){
        $todo=1;
        next;
    } else {push@deps,$_}
    if(/All the requested packages are already installed/){
        print STDERR "duplicate $fn";
        die;
    }
    if($todo){
        $pversion=$_;
    }
}
close FI;
die unless $todo;
if (@deps == 0){
    print STDERR "no lines $fn";
    die;
} else {
    $a=pop @deps;
    die unless $a eq $pversion;
}
die if defined($big{$pversion});
$big{$pversion}=[@deps]; #copy the array
#print "added $pversion ",scalar@deps;
END{
    for$p(sort keys%big){
#        print "now $p";
        undef$bad;
        for(@{$big{$p}}){
#            print "dep $_";
            $bad=$_ unless defined$big{$_}
        }
        if($bad){
            print STDERR "rejecting $p because $bad";
        }else{
            print $p;
        }
    }
}
