121 lines
2.5 KiB
Perl
Executable File
121 lines
2.5 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
|
|
$flavour = shift;
|
|
$prev_abidir = shift;
|
|
$abidir = shift;
|
|
$skipmodule = shift;
|
|
|
|
print "II: Checking modules for $flavour...";
|
|
|
|
if (-f "$prev_abidir/ignore.modules"
|
|
or -f "$prev_abidir/$flavour.ignore.modules") {
|
|
print "explicitly ignoring modules\n";
|
|
exit(0);
|
|
}
|
|
|
|
if (not -f "$abidir/$flavour.modules" or not -f
|
|
"$prev_abidir/$flavour.modules") {
|
|
print "previous or current modules file missing!\n";
|
|
print " $abidir/$flavour.modules\n";
|
|
print " $prev_abidir/$flavour.modules\n";
|
|
if (defined($skipmodule)) {
|
|
exit(0);
|
|
} else {
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
print "\n";
|
|
|
|
my %modules;
|
|
my %modules_ignore;
|
|
my $missing = 0;
|
|
my $new = 0;
|
|
my $errors = 0;
|
|
|
|
# See if we have any ignores
|
|
if (-f "$prev_abidir/../modules.ignore") {
|
|
my $ignore = 0;
|
|
open(IGNORE, "< $prev_abidir/../modules.ignore") or
|
|
die "Could not open $prev_abidir/../modules.ignore";
|
|
print " reading modules to ignore...";
|
|
while (<IGNORE>) {
|
|
chomp;
|
|
next if /\s*#/;
|
|
$modules_ignore{$_} = 1;
|
|
$ignore++;
|
|
}
|
|
close(IGNORE);
|
|
print "read $ignore modules.\n";
|
|
}
|
|
|
|
# Read new modules first
|
|
print " reading new modules...";
|
|
$new_count = 0;
|
|
open(NEW, "< $abidir/$flavour.modules") or
|
|
die "Could not open $abidir/$flavour.modules";
|
|
while (<NEW>) {
|
|
chomp;
|
|
$modules{$_} = 1;
|
|
$new_count++;
|
|
}
|
|
close(NEW);
|
|
print "read $new_count modules.\n";
|
|
|
|
# Now the old modules, checking for missing ones
|
|
print " reading old modules...";
|
|
$old_count = 0;
|
|
open(OLD, "< $prev_abidir/$flavour.modules") or
|
|
die "Could not open $prev_abidir/$flavour.modules";
|
|
while (<OLD>) {
|
|
chomp;
|
|
if (not defined($modules{$_})) {
|
|
print "\n" if not $missing;
|
|
$missing++;
|
|
if (not defined($modules_ignore{$_})) {
|
|
print " MISS: $_\n";
|
|
$errors++;
|
|
} else {
|
|
print " MISS: $_ (ignored)\n";
|
|
}
|
|
} else {
|
|
$modules{$_}++;
|
|
}
|
|
$old_count++;
|
|
}
|
|
close(OLD);
|
|
# Check for new modules
|
|
foreach $mod (keys(%modules)) {
|
|
if ($modules{$mod} < 2) {
|
|
print "\n" if not $missing and not $new;
|
|
print " NEW : $mod\n";
|
|
$new++;
|
|
}
|
|
}
|
|
if ($new or $missing) {
|
|
print " read $old_count modules : new($new) missing($missing)\n";
|
|
} else {
|
|
print "read $old_count modules.\n";
|
|
}
|
|
|
|
|
|
# Let's see where we stand...
|
|
if ($errors) {
|
|
if (defined($skipmodule)) {
|
|
print "WW: Explicitly asked to ignore failures (probably not good)\n";
|
|
} else {
|
|
print "EE: Missing modules (start begging for mercy)\n";
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
if ($new) {
|
|
print "II: New modules (you've been busy, wipe the poop off your nose)\n";
|
|
} else {
|
|
print "II: No new modules (hope you're happy, slacker)\n";
|
|
}
|
|
|
|
print "II: Done\n";
|
|
|
|
exit(0);
|