commit:     7a0bdecc24d03a76129348278503ca00d617322a
Author:     Kent Fredric <kentnl <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 21 21:50:15 2017 +0000
Commit:     Kent Fredric <kentnl <AT> gentoo <DOT> org>
CommitDate: Fri Jul 21 21:50:15 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7a0bdecc

dev-perl/DBD-mysql: -r1 bump for fix for type conversions for amvisd

Earlier versions break type conversions that amvisd uses, and though
the fix for this landed in 4.42.0, 4.42.0 also introduced a more serious
change that breaks existing code, and the entire thing was reverted
for 4.43.0

So this is borrowing debians patch for 4.41.0

Package-Manager: Portage-2.3.6, Repoman-2.3.2

 dev-perl/DBD-mysql/DBD-mysql-4.41.0-r1.ebuild      | 68 ++++++++++++++++++++++
 .../files/4.041-amvis-type-conversions.patch       | 47 +++++++++++++++
 2 files changed, 115 insertions(+)

diff --git a/dev-perl/DBD-mysql/DBD-mysql-4.41.0-r1.ebuild 
b/dev-perl/DBD-mysql/DBD-mysql-4.41.0-r1.ebuild
new file mode 100644
index 00000000000..1c899123f57
--- /dev/null
+++ b/dev-perl/DBD-mysql/DBD-mysql-4.41.0-r1.ebuild
@@ -0,0 +1,68 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+DIST_AUTHOR=MICHIELB
+DIST_VERSION=4.041
+inherit eutils perl-module
+
+DESCRIPTION="MySQL driver for the Perl5 Database Interface (DBI)"
+
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~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"
+
+# embedded=on disables ssl support
+# https://metacpan.org/source/MICHIELB/DBD-mysql-4.036/dbdimp.c#L1886
+REQUIRED_USE="?? ( embedded ssl )"
+IUSE="embedded test +ssl"
+
+RDEPEND=">=dev-perl/DBI-1.609.0
+       virtual/libmysqlclient:=
+       embedded? ( virtual/mysql[embedded] )
+"
+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}/${DIST_VERSION}-no-dot-inc.patch"
+       "${FILESDIR}/${DIST_VERSION}-amvis-type-conversions.patch"
+)
+src_configure() {
+       if use test; then
+               myconf="${myconf} --testdb=test \
+                       --testhost=localhost \
+                       --testuser=test \
+                       --testpassword=test"
+       fi
+       myconf="${myconf} --$(usex ssl ssl nossl)"
+       use embedded && myconf="${myconf} --force-embedded 
--embedded=mysql_config"
+       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
+}

diff --git a/dev-perl/DBD-mysql/files/4.041-amvis-type-conversions.patch 
b/dev-perl/DBD-mysql/files/4.041-amvis-type-conversions.patch
new file mode 100644
index 00000000000..041ba0a496a
--- /dev/null
+++ b/dev-perl/DBD-mysql/files/4.041-amvis-type-conversions.patch
@@ -0,0 +1,47 @@
+From: Pali <p...@cpan.org>
+Date: Fri, 24 Feb 2017 19:51:36 +0100
+Subject: [PATCH] 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
+
+--- a/dbdimp.c
++++ b/dbdimp.c
+@@ -4250,8 +4250,7 @@
+         switch (mysql_to_perl_type(fields[i].type)) {
+         case MYSQL_TYPE_DOUBLE:
+           /* Coerce to dobule and set scalar as NV */
+-          (void) SvNV(sv);
+-          SvNOK_only(sv);
++          sv_setnv(sv, SvNV(sv));
+           break;
+ 
+         case MYSQL_TYPE_LONG:
+@@ -4259,13 +4258,11 @@
+           /* 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;
+ 

Reply via email to