version => '1.20',
feature => 'Graphical Reports, New Charts, Old Charts'
},
+ {
+ package => 'Chart',
+ module => 'Chart::Base',
+ version => '1.0',
+ feature => 'New Charts, Old Charts'
+ },
{
package => 'Template-GD',
# This module tells us whether or not Template-GD is installed
version => 0,
feature => 'Graphical Reports'
},
- {
- package => 'Chart',
- module => 'Chart::Base',
- version => '1.0',
- feature => 'New Charts, Old Charts'
- },
{
package => 'GDGraph',
module => 'GD::Graph',
print "\n", install_string('checking_modules'), "\n" if $output;
my $root = ROOT_USER;
- my %missing = _check_missing(REQUIRED_MODULES, $output);
+ my $missing = _check_missing(REQUIRED_MODULES, $output);
print "\n", install_string('checking_dbd'), "\n" if $output;
my $have_one_dbd = 0;
}
print "\n", install_string('checking_optional'), "\n" if $output;
- my %missing_optional = _check_missing(OPTIONAL_MODULES, $output);
+ my $missing_optional = _check_missing(OPTIONAL_MODULES, $output);
# If we're running on Windows, reset the input line terminator so that
# console input works properly - loading CGI tends to mess it up
$/ = "\015\012" if ON_WINDOWS;
- my $pass = !scalar(keys %missing) && $have_one_dbd;
+ my $pass = !scalar(@$missing) && $have_one_dbd;
return {
pass => $pass,
one_dbd => $have_one_dbd,
- missing => \%missing,
- optional => \%missing_optional,
- any_missing => !$pass || scalar(keys %missing_optional),
+ missing => $missing,
+ optional => $missing_optional,
+ any_missing => !$pass || scalar(@$missing_optional),
};
}
sub _check_missing {
my ($modules, $output) = @_;
- my %missing;
+ my @missing;
foreach my $module (@$modules) {
unless (have_vers($module, $output)) {
- $missing{$module->{package}} = $module;
+ push(@missing, $module);
}
}
- return %missing;
+ return \@missing;
}
sub print_module_instructions {
}
# Required Modules
- if (my %missing = %{$check_results->{missing}}) {
+ if (my @missing = @{$check_results->{missing}}) {
print <<EOT;
***********************************************************************
* REQUIRED MODULES *
EOT
print "COMMANDS:\n\n";
- foreach my $package (keys %missing) {
- my $command = install_command($missing{$package});
+ foreach my $package (@missing) {
+ my $command = install_command($package);
print " $command\n";
}
print "\n";
return unless $output;
- if (my %missing = %{$check_results->{optional}}) {
+ if (my @missing = @{$check_results->{optional}}) {
print <<EOT;
**********************************************************************
* OPTIONAL MODULES *
**********************************************************************
EOT
- # We want to sort them so that they are ordered by feature.
- my @missing_names = sort {$missing{$a}->{feature}
- cmp $missing{$b}->{feature}} (keys %missing);
-
# Now we have to determine how large the table cols will be.
- my $longest_name = max(map(length($_), @missing_names));
+ my $longest_name = max(map(length($_->{package}), @missing));
# The first column header is at least 11 characters long.
$longest_name = 11 if $longest_name < 11;
printf "* \%${longest_name}s * %-${remaining_space}s *\n",
'MODULE NAME', 'ENABLES FEATURE(S)';
print '*' x 71 . "\n";
- foreach my $name (@missing_names) {
+ foreach my $package (@missing) {
printf "* \%${longest_name}s * %-${remaining_space}s *\n",
- $name, $missing{$name}->{feature};
+ $package->{package}, $package->{feature};
}
print '*' x 71 . "\n";
print "COMMANDS TO INSTALL:\n\n";
- foreach my $module (@missing_names) {
- my $command = install_command($missing{$module});
- printf "%15s: $command\n", $module;
+ foreach my $module (@missing) {
+ my $command = install_command($module);
+ printf "%15s: $command\n", $module->{package};
}
}
}
return sprintf $command, $package;
}
-
1;
__END__
=over 4
-=item C<check_requirements($output)>
-
- Description: This checks what optional or required perl modules
- are installed, like C<checksetup.pl> does.
-
- Params: C<$output> - C<true> if you want the function to print
- out information about what it's doing,
- and the versions of everything installed.
- If you don't pass the minimum requirements,
- the will always print out something,
- regardless of this parameter.
-
- Returns: A hashref containing three values:
- C<pass> - Whether or not we have all the mandatory
- requirements.
- C<missing> - A hash showing which mandatory requirements
- are missing. The key is the module name,
- and the value is the version we require.
- C<optional> - Which optional modules are installed and
- up-to-date enough for Bugzilla.
+=item C<check_requirements>
+
+=over
+
+=item B<Description>
+
+This checks what optional or required perl modules are installed, like
+C<checksetup.pl> does.
+
+=item B<Params>
+
+=over
+
+=item C<$output> - C<true> if you want the function to print out information
+about what it's doing, and the versions of everything installed.
+
+=back
+
+=item B<Returns>
+
+A hashref containing these values:
+
+=over
+
+=item C<pass> - Whether or not we have all the mandatory requirements.
+
+=item C<missing> - An arrayref containing any required modules that
+are not installed or that are not up-to-date. Each item in the array is
+a hashref in the format of items from L</REQUIRED_MODULES>.
+
+=item C<optional> - The same as C<missing>, but for optional modules.
+
+=item C<have_one_dbd> - True if at least one C<DBD::> module is installed.
+
+=item C<any_missing> - True if there are any missing modules, even optional
+modules.
+
+=back
+
+=back
=item C<check_graphviz($output)>