summaryrefslogtreecommitdiffstats
path: root/Bugzilla/DB.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla/DB.pm')
-rw-r--r--Bugzilla/DB.pm63
1 files changed, 52 insertions, 11 deletions
diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm
index ae881cf05..cc2826f55 100644
--- a/Bugzilla/DB.pm
+++ b/Bugzilla/DB.pm
@@ -1,15 +1,34 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# -*- Mode: perl; indent-tabs-mode: nil -*-
#
-# This Source Code Form is "Incompatible With Secondary Licenses", as
-# defined by the Mozilla Public License, v. 2.0.
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# The Initial Developer of the Original Code is Netscape Communications
+# Corporation. Portions created by Netscape are
+# Copyright (C) 1998 Netscape Communications Corporation. All
+# Rights Reserved.
+#
+# Contributor(s): Terry Weissman <terry@mozilla.org>
+# Dan Mosedale <dmose@mozilla.org>
+# Jacob Steenhagen <jake@bugzilla.org>
+# Bradley Baetz <bbaetz@student.usyd.edu.au>
+# Christopher Aillon <christopher@aillon.com>
+# Tomas Kopal <Tomas.Kopal@altap.cz>
+# Max Kanat-Alexander <mkanat@bugzilla.org>
+# Lance Larsh <lance.larsh@oracle.com>
package Bugzilla::DB;
-use 5.10.1;
use strict;
-use warnings;
use DBI;
@@ -18,14 +37,11 @@ use base qw(DBI::db);
use Bugzilla::Constants;
use Bugzilla::Install::Requirements;
-use Bugzilla::Install::Util qw(install_string);
-use Bugzilla::Version qw(vers_cmp);
-use Bugzilla::Install::Util qw(install_string);
+use Bugzilla::Install::Util qw(vers_cmp install_string);
use Bugzilla::Install::Localconfig;
use Bugzilla::Util;
use Bugzilla::Error;
use Bugzilla::DB::Schema;
-use Bugzilla::Version;
use Bugzilla::Metrics::Mysql;
@@ -185,6 +201,10 @@ sub bz_check_requirements {
. bz_locations()->{'localconfig'};
}
+ # Check the existence and version of the DBD that we need.
+ my $dbd = $db->{dbd};
+ _bz_check_dbd($db, $output);
+
# We don't try to connect to the actual database if $db_check is
# disabled.
unless ($lc->{db_check}) {
@@ -199,6 +219,27 @@ sub bz_check_requirements {
print "\n" if $output;
}
+sub _bz_check_dbd {
+ my ($db, $output) = @_;
+
+ my $dbd = $db->{dbd};
+ unless (have_vers($dbd, $output)) {
+ my $sql_server = $db->{name};
+ my $command = install_command($dbd);
+ my $root = ROOT_USER;
+ my $dbd_mod = $dbd->{module};
+ my $dbd_ver = $dbd->{version};
+ die <<EOT;
+
+For $sql_server, Bugzilla requires that perl's $dbd_mod $dbd_ver or later be
+installed. To install this module, run the following command (as $root):
+
+ $command
+
+EOT
+ }
+}
+
sub bz_check_server_version {
my ($self, $db, $output) = @_;