use BSE::Util::Iterate;
use BSE::Util::Prereq;
-our $VERSION = "1.001";
+our $VERSION = "1.002";
my %actions =
(
my @modules;
my @bad;
+ my %prereqs_checked;
for my $modname (sort keys %$versions) {
my $module =
{
$error = "Module file $filename not found";
}
my $content;
- if (!$error) {
+ unless ($error) {
if (open my $in, "<", $full) {
$content = do { local $/; <$in> };
close $in;
}
}
my $vers;
- if (!$error) {
+ unless ($error) {
if ($content =~ /^our \$VERSION = "([0-9.]+)"/m) {
$vers = $1;
$module->{found} = $vers;
$error = "No version found in $filename";
}
}
- if (!$error) {
+ unless ($error) {
if ($vers ne $versions->{$modname}) {
$error = "Version $vers in file doesn't match expected $versions->{$modname}";
}
}
- if (!$error) {
+ unless ($error) {
local $SIG{__DIE__};
my $prereqs_good = 1;
if ($prereqs->{$modname}) {
for my $prereq (@{$prereqs->{$modname}}) {
- if (!eval "require $prereq; 1") {
+ my $good_prereq;
+ if (exists $prereqs_checked{$prereq}) {
+ $good_prereq = $prereqs_checked{$prereq};
+ }
+ else {
+ $good_prereq = eval "require $prereq; 1";
+ $prereqs_checked{$prereq} = $good_prereq;
+ }
+ unless ($good_prereq) {
$module->{notes} = "Prerequisite $prereq not found";
$prereqs_good = 0;
last;
unshift @modules, @bad;
my $it = BSE::Util::Iterate->new(req => $req);
+ $req->set_variable(modules => \@modules);
my %acts =
(
$req->admin_tags,