summaryrefslogtreecommitdiffstats
path: root/checksetup.pl
diff options
context:
space:
mode:
authormkanat%kerio.com <>2005-05-27 05:09:22 +0200
committermkanat%kerio.com <>2005-05-27 05:09:22 +0200
commit1af7f272868e1d7fa84c69be59be55abd62993d2 (patch)
treeff06e4732e6aeaa9e8eaf638da518e7e28786a9a /checksetup.pl
parent31985208f02a64aed42d915663504ba2eefd6bcf (diff)
downloadbugzilla-1af7f272868e1d7fa84c69be59be55abd62993d2.tar.gz
bugzilla-1af7f272868e1d7fa84c69be59be55abd62993d2.tar.xz
Bug 286672: Require correct DBD depending on the $db_driver in use
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=justdave
Diffstat (limited to 'checksetup.pl')
-rwxr-xr-xchecksetup.pl22
1 files changed, 18 insertions, 4 deletions
diff --git a/checksetup.pl b/checksetup.pl
index ef3d80735..7151b86bf 100755
--- a/checksetup.pl
+++ b/checksetup.pl
@@ -300,10 +300,6 @@ my $modules = [
version => '1.38'
},
{
- name => 'DBD::mysql',
- version => '2.9003'
- },
- {
name => 'File::Spec',
version => '0.82'
},
@@ -1469,9 +1465,27 @@ $::ENV{'PATH'} = $origPath;
if ($my_db_check) {
# Do we have the database itself?
+ # Unfortunately, $my_db_driver doesn't map perfectly between DBD
+ # and Bugzilla::DB. We need to fix the case a bit.
+ (my $dbd_name = trim($my_db_driver)) =~ s/(\w+)/\u\L$1/g;
+ # And MySQL is special, because it's all lowercase in DBD.
+ $dbd_name = 'mysql' if $dbd_name eq 'Mysql';
+
+ my $dbd = "DBD::$dbd_name";
+ unless (eval("require $dbd")) {
+ print "Bugzilla requires that perl's $dbd be installed.\n"
+ . "To install this module, you can do:\n "
+ . " " . install_command($dbd) . "\n";
+ exit;
+ }
+
my $dbh = Bugzilla::DB::connect_main("no database connection");
my $sql_want = $dbh->REQUIRED_VERSION;
my $sql_server = $dbh->PROGRAM_NAME;
+ my $dbd_ver = $dbh->DBD_VERSION;
+ unless (have_vers($dbd, $dbd_ver)) {
+ die "Bugzilla requires at least version $dbd_ver of $dbd.";
+ }
printf("Checking for %15s %-9s ", $sql_server, "(v$sql_want)") unless $silent;
my $sql_vers = $dbh->bz_server_version;