App-Chart

 view release on metacpan or  search on metacpan

devel/makefile-from-grep.pl  view on Meta::CPAN

}

print "main used: ",     join (', ', keys %used_module), "\n";
print "test optional: ", join (', ', keys %test_optional_module), "\n";
print "examples used: ", join (', ', keys %examples_used_module), "\n";
print "devel used: ",    join (', ', keys %devel_used_module), "\n";

used_vs_makefile ('main',     \%used_module, $makefile_prereq);
used_vs_makefile ('tests',    \%test_optional_module, $makefile_test_optional);
used_vs_makefile ('examples', \%examples_used_module, $makefile_examples_prereq);
# used_vs_makefile ('devel',    \%devel_used_module, $makefile_devel_prereq);

sub used_vs_makefile {
  my ($name, $usedref, $prereq) = @_;
  $prereq || return;
  my $ok = 1;

  foreach my $module (sort keys %$usedref) {
    my $module_version = $usedref->{$module};
    if (! (exists $makefile_prereq->{$module}
           || exists $prereq->{$module})) {
      print "$name: not in Makefile.PL $name: $module $module_version\n";
      $ok = 0;
    } else {
      my $prereq_version = $makefile_prereq->{$module} || $prereq->{$module}
        || version->new(0);
      if ($prereq_version < $module_version) {
        print "$name: $module Makefile.PL only $prereq_version but require $module_version\n";
        $ok = 0;
      }
    }
  }
  foreach my $module (sort keys %$prereq) {
    if (! exists $usedref->{$module}) {
      print "$name: extra in Makefile.PL $name: $module\n";
      $ok = 0;
    }
  }
  if ($ok) {
    print "$name: ok\n";
  }
}

exit 0;

#------------------------------------------------------------------------------
package MyModuleDepends;
use Devel::StackTrace;
use base 'Module::Depends::Intrusive';

sub requires {
  my $self = shift;
  if (@_) {
    # store
    my $trace = Devel::StackTrace->new;
    my $frame = $trace->frame(2)
      || die "oops, no frame(2):\n$trace";
    my %writeargs = $frame->args;
    $self->{'extra_meta'} = $writeargs{'EXTRA_META'};
  }
  return $self->SUPER::requires (@_);
}



( run in 1.516 second using v1.01-cache-2.11-cpan-97f6503c9c8 )