--- /dev/null
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+DIST_AUTHOR=CAPTTOFU
+DIST_VERSION=4.044
+inherit eutils perl-module
+
+DESCRIPTION="MySQL driver for the Perl5 Database Interface (DBI)"
+
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
+
+IUSE="test +ssl"
+
+RDEPEND=">=dev-perl/DBI-1.609.0
+ virtual/libmysqlclient:=
+"
+DEPEND="${RDEPEND}
+ virtual/perl-ExtUtils-MakeMaker
+ virtual/perl-Data-Dumper
+ test? (
+ dev-perl/Test-Deep
+ >=virtual/perl-Test-Simple-0.900.0
+ virtual/perl-Time-HiRes
+ )
+"
+PATCHES=(
+ "${FILESDIR}/${PN}-${DIST_VERSION}-amvis-type-conversions.patch"
+ "${FILESDIR}/${PN}-${DIST_VERSION}-no-dot-inc.patch"
+ "${FILESDIR}/4.041-mariadb-10.2.patch"
+)
+src_configure() {
+ if use test; then
+ myconf="${myconf} --testdb=test \
+ --testhost=localhost \
+ --testuser=test \
+ --testpassword=test"
+ fi
+ myconf="${myconf} --$(usex ssl ssl nossl)"
+ perl-module_src_configure
+}
+
+# Parallel testing is broken as 2 tests create the same table
+# and mysql isn't acid compliant and can't limit visibility of tables
+# to a transaction...
+DIST_TEST="do"
+
+src_test() {
+ einfo
+ einfo "If tests fail, you have to configure your MySQL instance to create"
+ einfo "and grant some privileges to the test user."
+ einfo "You can run the following commands at the MySQL prompt: "
+ einfo "> CREATE USER 'test'@'localhost' IDENTIFIED BY 'test';"
+ einfo "> CREATE DATABASE test;"
+ einfo "> GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost';"
+ einfo
+ sleep 5
+ perl_rm_files t/pod.t t/manifest.t
+ # Don't be a hero and try to do EXTENDED_TESTING=1 unless you can figure
+ # out why 60leaks.t fails
+ perl-module_src_test
+}
--- /dev/null
+From eb7eddaa2341b853df045ad4a3690c60fc38c6c8 Mon Sep 17 00:00:00 2001
+From: Pali <pali@cpan.org>
+Date: Fri, 24 Feb 2017 19:51:36 +0100
+Subject: Fix type conversions
+
+Calling SvNV() for magical scalar is not enough for float type conversion.
+It caused problem for Amavis in tainted mode -- all float values were zero.
+On the other hand SvIV() and SvUV() seems to work fine. To be sure that
+correct value of float is in scalar use sv_setnv() with explicit NV float
+value. Similar code is changed also for integers IV/UV.
+
+This patch should fix reported Amavis bug:
+https://github.com/perl5-dbi/DBD-mysql/issues/78
+
+See also reported perl bug about SvNV():
+https://rt.perl.org/Public/Bug/Display.html?id=130801
+
+Bugs: https://github.com/perl5-dbi/DBD-mysql/issues/78
+Bugs-Debian: https://bugs.debian.org/856064
+---
+ dbdimp.c | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/dbdimp.c b/dbdimp.c
+index 9c33994..7fdfba1 100644
+--- a/dbdimp.c
++++ b/dbdimp.c
+@@ -4380,8 +4380,7 @@ process:
+ if (!(fields[i].flags & ZEROFILL_FLAG))
+ {
+ /* Coerce to dobule and set scalar as NV */
+- (void) SvNV(sv);
+- SvNOK_only(sv);
++ sv_setnv(sv, SvNV(sv));
+ }
+ break;
+
+@@ -4392,13 +4391,11 @@ process:
+ /* Coerce to integer and set scalar as UV resp. IV */
+ if (fields[i].flags & UNSIGNED_FLAG)
+ {
+- (void) SvUV(sv);
+- SvIOK_only_UV(sv);
++ sv_setuv(sv, SvUV(sv));
+ }
+ else
+ {
+- (void) SvIV(sv);
+- SvIOK_only(sv);
++ sv_setiv(sv, SvIV(sv));
+ }
+ }
+ break;
+--
+2.15.1
+
--- /dev/null
+From 35931a7465f19da53b97cd1bc5369a69aeac2ff6 Mon Sep 17 00:00:00 2001
+From: Pali <pali@cpan.org>
+Date: Mon, 17 Apr 2017 21:38:58 +0200
+Subject: Fix tests on Perl On 5.25.10 or greater with
+ -Ddefault_inc_excludes_dot
+
+Some tests do not include dot in %INC and fails with error:
+Can't locate t/lib.pl in @INC
+
+Fixes: https://rt.cpan.org/Public/Bug/Display.html?id=120709
+---
+ t/40server_prepare_crash.t | 3 ++-
+ t/lib.pl | 5 +++--
+ t/rt118977-zerofill.t | 2 +-
+ t/rt25389-bin-case.t | 3 ++-
+ t/rt50304-column_info_parentheses.t | 3 ++-
+ t/rt61849-bind-param-buffer-overflow.t | 3 ++-
+ t/rt75353-innodb-lock-timeout.t | 3 ++-
+ t/rt83494-quotes-comments.t | 3 ++-
+ 8 files changed, 16 insertions(+), 9 deletions(-)
+
+diff --git a/t/40server_prepare_crash.t b/t/40server_prepare_crash.t
+index df6e2b3..e2c8c9f 100644
+--- a/t/40server_prepare_crash.t
++++ b/t/40server_prepare_crash.t
+@@ -5,7 +5,8 @@ use Test::More;
+ use DBI;
+
+ use vars qw($test_dsn $test_user $test_password);
+-require "t/lib.pl";
++use lib 't', '.';
++require "lib.pl";
+
+ my $dbh = eval { DBI->connect($test_dsn, $test_user, $test_password, { PrintError => 1, RaiseError => 1, AutoCommit => 0, mysql_server_prepare => 1, mysql_server_prepare_disable_fallback => 1 }) };
+ plan skip_all => "no database connection" if $@ or not $dbh;
+diff --git a/t/lib.pl b/t/lib.pl
+index 2221c40..0c756a0 100644
+--- a/t/lib.pl
++++ b/t/lib.pl
+@@ -2,6 +2,7 @@ use strict;
+ use warnings;
+
+ use Test::More;
++use File::Spec ();
+ use DBI::Const::GetInfoType;
+ use vars qw($mdriver $dbdriver $childPid $test_dsn $test_user $test_password);
+
+@@ -31,7 +32,7 @@ if (-f ($file = "t/$dbdriver.dbtest") ||
+ -f ($file = "$dbdriver.dbtest") ||
+ -f ($file = "../tests/$dbdriver.dbtest") ||
+ -f ($file = "tests/$dbdriver.dbtest")) {
+- eval { require $file; };
++ eval { require File::Spec->rel2abs($file); };
+ if ($@) {
+ print STDERR "Cannot execute $file: $@.\n";
+ print "1..0\n";
+@@ -45,7 +46,7 @@ if (-f ($file = "t/$mdriver.mtest") ||
+ -f ($file = "$mdriver.mtest") ||
+ -f ($file = "../tests/$mdriver.mtest") ||
+ -f ($file = "tests/$mdriver.mtest")) {
+- eval { require $file; };
++ eval { require File::Spec->rel2abs($file); };
+ if ($@) {
+ print STDERR "Cannot execute $file: $@.\n";
+ print "1..0\n";
+diff --git a/t/rt118977-zerofill.t b/t/rt118977-zerofill.t
+index 27ba1b7..86edb8e 100644
+--- a/t/rt118977-zerofill.t
++++ b/t/rt118977-zerofill.t
+@@ -5,7 +5,7 @@ use Test::More;
+ use DBI;
+
+ use vars qw($test_dsn $test_user $test_password);
+-require "t/lib.pl";
++require "./t/lib.pl";
+
+ my $dbh = eval { DBI->connect($test_dsn, $test_user, $test_password, { PrintError => 1, RaiseError => 1 }) };
+ plan skip_all => "no database connection" if $@ or not $dbh;
+diff --git a/t/rt25389-bin-case.t b/t/rt25389-bin-case.t
+index 37bffb9..9d091b3 100644
+--- a/t/rt25389-bin-case.t
++++ b/t/rt25389-bin-case.t
+@@ -4,7 +4,8 @@ use warnings;
+ use DBI;
+
+ use vars qw($test_dsn $test_user $test_password);
+-require "t/lib.pl";
++use lib 't', '.';
++require "lib.pl";
+
+ use Test::More;
+
+diff --git a/t/rt50304-column_info_parentheses.t b/t/rt50304-column_info_parentheses.t
+index 5b6d799..8c31bf6 100644
+--- a/t/rt50304-column_info_parentheses.t
++++ b/t/rt50304-column_info_parentheses.t
+@@ -4,7 +4,8 @@ use warnings;
+ use DBI;
+
+ use vars qw($test_dsn $test_user $test_password $state);
+-require "t/lib.pl";
++use lib 't', '.';
++require "lib.pl";
+
+ use Test::More;
+
+diff --git a/t/rt61849-bind-param-buffer-overflow.t b/t/rt61849-bind-param-buffer-overflow.t
+index 99a4ccc..494f985 100644
+--- a/t/rt61849-bind-param-buffer-overflow.t
++++ b/t/rt61849-bind-param-buffer-overflow.t
+@@ -5,7 +5,8 @@ use Test::More;
+ use DBI;
+
+ use vars qw($test_dsn $test_user $test_password);
+-require "t/lib.pl";
++use lib 't', '.';
++require "lib.pl";
+
+ my $INSECURE_VALUE_FROM_USER = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
+
+diff --git a/t/rt75353-innodb-lock-timeout.t b/t/rt75353-innodb-lock-timeout.t
+index 69b740e..41d1b8f 100644
+--- a/t/rt75353-innodb-lock-timeout.t
++++ b/t/rt75353-innodb-lock-timeout.t
+@@ -5,7 +5,8 @@ use Test::More;
+ use DBI;
+
+ use vars qw($test_dsn $test_user $test_password);
+-require "t/lib.pl";
++use lib 't', '.';
++require "lib.pl";
+
+ my $dbh1 = eval { DBI->connect($test_dsn, $test_user, $test_password, { RaiseError => 1, AutoCommit => 0 }) };
+ plan skip_all => "no database connection" if $@ or not $dbh1;
+diff --git a/t/rt83494-quotes-comments.t b/t/rt83494-quotes-comments.t
+index 9df0d90..c42afe4 100644
+--- a/t/rt83494-quotes-comments.t
++++ b/t/rt83494-quotes-comments.t
+@@ -9,7 +9,8 @@ use DBI;
+ use Test::More;
+
+ use vars qw($test_dsn $test_user $test_password $state);
+-require "t/lib.pl";
++use lib 't', '.';
++require "lib.pl";
+
+ my $dbh;
+ eval {$dbh= DBI->connect($test_dsn, $test_user, $test_password,
+--
+2.15.1
+