From b2464a749517164cda4ab2ac1e36740f061fca31 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 30 Mar 2017 17:52:16 -0400 Subject: [PATCH] More early bailouts to avoid redoing work --- lib/Module.pm | 8 ++++++++ lib/TestCpanInc.pm | 8 ++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/Module.pm b/lib/Module.pm index 7934279..2694aac 100755 --- a/lib/Module.pm +++ b/lib/Module.pm @@ -8,6 +8,9 @@ use IPC::Run qw/run/; no warnings 'experimental'; has 'name' => (is => 'ro'); +has 'dist' => (is => 'ro', + builder => '_get_dist', + lazy => 1); has 'depends' => ( builder => 'get_deps', @@ -16,6 +19,11 @@ has 'depends' => ( lazy => 1, ); +sub _get_dist { + my $self = shift; + return $Dist::mod_to_dist{$self->name} // $self->name; +} + our %cache; if (-e 'modcache.stor') { eval { diff --git a/lib/TestCpanInc.pm b/lib/TestCpanInc.pm index b37ebc5..4f04499 100644 --- a/lib/TestCpanInc.pm +++ b/lib/TestCpanInc.pm @@ -22,6 +22,7 @@ sub remove_imc { } our $last_dep = time(); +our @total_deps = (); sub dep_order { my $module = shift; @@ -31,12 +32,14 @@ sub dep_order { for my $dep ($module->depends->@*) { - if ($level >= 200) { - print $dep->name, "\n"; + if (time() - $last_dep >= 10 || $level >= 200) { + print $dep->name," ",$dep->dist, " " ,$level, "\n"; $last_dep = time(); } next if (Module::_is_banned($dep->name)); + next if ($dep->dist ~~ @total_deps); # skip it if we've already added this to the total deps + push @total_deps, $dep->dist; push @orders, dep_order($dep, $level+1); } @@ -87,3 +90,4 @@ sub test_module { return "success"; } +1;