diff --git a/lib/Module.pm b/lib/Module.pm index 1a485c9..52f04ed 100755 --- a/lib/Module.pm +++ b/lib/Module.pm @@ -82,6 +82,8 @@ sub _is_core { my $module = shift; my ($name, $version) = split (/[\-~]/, $module); + return 0 unless $name; + my $ret = ($name eq 'perl' || Module::CoreList->first_release($name)) // 0; return $ret; @@ -101,7 +103,7 @@ sub get_deps { my $out; run \@cmd, '>&', \$out; - my $deps = [map {Module->new_module($_)} grep {!_is_core($_)} split($/, $out)]; + my $deps = [map {Module->new_module($_)} grep {!_is_core($_)} grep {defined $_ && $_ !~ /^\s*$/} split($/, $out)]; __save_cache; return $deps; } @@ -146,7 +148,6 @@ sub get_failed_descendants { return(); } - if (ref($rev_depcache{$self->name}) eq 'ARRAY') { return $rev_depcache{$self->name}->@*; } @@ -159,13 +160,14 @@ sub get_failed_descendants { my $module = Module->new_module($mod_name); if ($module->depends_on($self)) { - push @total, $module->get_failed_descendants($candidates, $level+1, [@$loop, $self]); + push @total, $module, $module->get_failed_descendants($candidates, $level+1, [@$loop, $self]); } } print "\n"; - $rev_depcache{$self->name} = \@total; + $rev_depcache{$self->name} = [@total]; + __save_cache; return @total; } diff --git a/modcache.stor b/modcache.stor index a715770..7bf70c3 100644 Binary files a/modcache.stor and b/modcache.stor differ diff --git a/statfailures.pl b/statfailures.pl index 86b17f0..7b85af3 100755 --- a/statfailures.pl +++ b/statfailures.pl @@ -13,7 +13,7 @@ use Data::Dumper; my $data = retrieve 'everything.stor'; -my @failed_list = grep {$data->{jobstatus}{$_}{status} ne 'success'} grep {defined $_ && $_ ne ''} keys($data->{jobstatus}->%*); +my @failed_list = grep {my $s=$data->{jobstatus}{$_}{status}; $s ne 'success' && $s ne 'inc failed'} grep {defined $_ && $_ ne ''} keys($data->{jobstatus}->%*); my %mods; @@ -25,7 +25,7 @@ LOOP: for my $mod ($data->{modules}->@*) { my $module = Module->new_module($mod); my @dependedonby = $module->get_failed_descendants(\@failed_list); - $mods{$mod} = \@dependedonby; - print Dumper(\@dependedonby); + $mods{$mod} = 0+@dependedonby; + print "Count $mod => $mods{$mod}\n";; } }