mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-07 04:05:49 +00:00
Bug 360710: checksetup.pl needs to blacklist some non-working external modules
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=justdave
This commit is contained in:
parent
6abdaa7b12
commit
f7a82b4318
@ -359,10 +359,21 @@ use constant INSTALLATION_MODE_NON_INTERACTIVE => 1;
|
||||
# Data about what we require for different databases.
|
||||
use constant DB_MODULE => {
|
||||
'mysql' => {db => 'Bugzilla::DB::Mysql', db_version => '4.1.2',
|
||||
dbd => 'DBD::mysql', dbd_version => '2.9003',
|
||||
dbd => {
|
||||
package => 'DBD-mysql',
|
||||
module => 'DBD::mysql',
|
||||
version => '2.9003',
|
||||
# Certain versions are broken, development versions are
|
||||
# always disallowed.
|
||||
blacklist => ['^3\.000[3-6]', '_'],
|
||||
},
|
||||
name => 'MySQL'},
|
||||
'pg' => {db => 'Bugzilla::DB::Pg', db_version => '8.00.0000',
|
||||
dbd => 'DBD::Pg', dbd_version => '1.45',
|
||||
dbd => {
|
||||
package => 'DBD-Pg',
|
||||
module => 'DBD::Pg',
|
||||
version => '1.45',
|
||||
},
|
||||
name => 'PostgreSQL'},
|
||||
};
|
||||
|
||||
|
@ -136,16 +136,17 @@ sub bz_check_requirements {
|
||||
|
||||
# Check the existence and version of the DBD that we need.
|
||||
my $dbd = $db->{dbd};
|
||||
my $dbd_ver = $db->{dbd_version};
|
||||
my $sql_server = $db->{name};
|
||||
my $sql_want = $db->{db_version};
|
||||
unless (have_vers({ module => $dbd, version => $dbd_ver }, $output)) {
|
||||
unless (have_vers($dbd, $output)) {
|
||||
my $command = install_command($dbd);
|
||||
my $root = ROOT_USER;
|
||||
my $dbd_mod = $dbd->{module};
|
||||
my $dbd_ver = $dbd->{version};
|
||||
my $version = $dbd_ver ? " $dbd_ver or higher" : '';
|
||||
print <<EOT;
|
||||
|
||||
For $sql_server, Bugzilla requires that perl's ${dbd}${version} be
|
||||
For $sql_server, Bugzilla requires that perl's $dbd_mod $dbd_ver be
|
||||
installed. To install this module, run the following command (as $root):
|
||||
|
||||
$command
|
||||
|
@ -51,6 +51,10 @@ use Bugzilla::Constants;
|
||||
# of the actual module we load with "require" to see if the package is
|
||||
# installed or not. "version" is the version we need, or 0 if we'll accept
|
||||
# any version.
|
||||
#
|
||||
# "blacklist" is an arrayref of regular expressions that describe versions that
|
||||
# are 'blacklisted'--that is, even if the version is high enough, Bugzilla
|
||||
# will refuse to say that it's OK to run with that version.
|
||||
sub REQUIRED_MODULES {
|
||||
my @modules = (
|
||||
{
|
||||
@ -272,9 +276,8 @@ sub check_requirements {
|
||||
my $have_one_dbd = 0;
|
||||
my $db_modules = DB_MODULE;
|
||||
foreach my $db (keys %$db_modules) {
|
||||
my %info = (module => $db_modules->{$db}->{dbd},
|
||||
version => $db_modules->{$db}->{dbd_version});
|
||||
$have_one_dbd = 1 if have_vers(\%info, $output);
|
||||
my $dbd = $db_modules->{$db}->{dbd};
|
||||
$have_one_dbd = 1 if have_vers($dbd, $output);
|
||||
}
|
||||
|
||||
print "\nThe following Perl modules are optional:\n" if $output;
|
||||
@ -379,13 +382,10 @@ EOT
|
||||
|
||||
my %db_modules = %{DB_MODULE()};
|
||||
foreach my $db (keys %db_modules) {
|
||||
my $command = install_command(
|
||||
{ module => $db_modules{$db}->{dbd},
|
||||
package => $db_modules{$db}->{dbd} });
|
||||
|
||||
my $command = install_command($db_modules{$db}->{dbd});
|
||||
printf "%10s: \%s\n", $db_modules{$db}->{name}, $command;
|
||||
print ' ' x 12 . "Minimum version required: "
|
||||
. $db_modules{$db}->{dbd_version} . "\n";
|
||||
. $db_modules{$db}->{dbd}->{version} . "\n";
|
||||
}
|
||||
print "\n";
|
||||
}
|
||||
@ -525,7 +525,15 @@ sub have_vers {
|
||||
}
|
||||
|
||||
my $vok = (vers_cmp($vnum,$wanted) > -1);
|
||||
print ((($vok) ? "ok: " : " "), "$vstr\n") if $output;
|
||||
my $blacklisted;
|
||||
if ($vok && $params->{blacklist}) {
|
||||
$blacklisted = grep($vnum =~ /$_/, @{$params->{blacklist}});
|
||||
$vok = 0 if $blacklisted;
|
||||
}
|
||||
|
||||
my $ok = $vok ? "ok:" : "";
|
||||
my $black_string = $blacklisted ? "(blacklisted)" : "";
|
||||
print "$ok $vstr $black_string\n" if $output;
|
||||
return $vok ? 1 : 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user