aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormkanat%bugzilla.org <>2007-03-21 02:36:45 +0000
committermkanat%bugzilla.org <>2007-03-21 02:36:45 +0000
commit4768da33ddeec1bbb73f158e65b3f509a949f479 (patch)
tree13ddbda086f13ec48a6045f62bb1e11b93e7b9d8
parent0a18cfa0a6a941a2ed525e6c934cf6c25fc87fce (diff)
downloadbugs-4768da33ddeec1bbb73f158e65b3f509a949f479.tar
bugs-4768da33ddeec1bbb73f158e65b3f509a949f479.tar.gz
bugs-4768da33ddeec1bbb73f158e65b3f509a949f479.tar.bz2
bugs-4768da33ddeec1bbb73f158e65b3f509a949f479.tar.xz
bugs-4768da33ddeec1bbb73f158e65b3f509a949f479.zip
Bug 192054: Bugzilla dependencies upgrade messages in wrong order
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> (module owner) a=mkanat
-rw-r--r--Bugzilla/Install/Requirements.pm115
1 files changed, 65 insertions, 50 deletions
diff --git a/Bugzilla/Install/Requirements.pm b/Bugzilla/Install/Requirements.pm
index 4c62564d7..07729554c 100644
--- a/Bugzilla/Install/Requirements.pm
+++ b/Bugzilla/Install/Requirements.pm
@@ -107,6 +107,12 @@ sub OPTIONAL_MODULES {
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
# on Template-Toolkits after 2.14, and still works with 2.14 and lower.
@@ -115,12 +121,6 @@ sub OPTIONAL_MODULES {
feature => 'Graphical Reports'
},
{
- package => 'Chart',
- module => 'Chart::Base',
- version => '1.0',
- feature => 'New Charts, Old Charts'
- },
- {
package => 'GDGraph',
module => 'GD::Graph',
version => 0,
@@ -264,7 +264,7 @@ sub check_requirements {
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;
@@ -275,19 +275,19 @@ sub check_requirements {
}
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),
};
}
@@ -295,14 +295,14 @@ sub check_requirements {
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 {
@@ -337,7 +337,7 @@ EOT
}
# Required Modules
- if (my %missing = %{$check_results->{missing}}) {
+ if (my @missing = @{$check_results->{missing}}) {
print <<EOT;
***********************************************************************
* REQUIRED MODULES *
@@ -351,8 +351,8 @@ EOT
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";
@@ -386,7 +386,7 @@ EOT
return unless $output;
- if (my %missing = %{$check_results->{optional}}) {
+ if (my @missing = @{$check_results->{optional}}) {
print <<EOT;
**********************************************************************
* OPTIONAL MODULES *
@@ -402,12 +402,8 @@ EOT
**********************************************************************
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;
@@ -420,16 +416,16 @@ EOT
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};
}
}
}
@@ -549,7 +545,6 @@ sub install_command {
return sprintf $command, $package;
}
-
1;
__END__
@@ -581,26 +576,46 @@ represent the name of the module and the version that we require.
=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)>