commit:     64144305133b868abbe1bc0638b4320218a6d677
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 17 14:34:55 2017 +0000
Commit:     Andreas Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Jun 17 14:34:55 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=64144305

dev-perl/Params-Classify: Add patch for Perl 5.26, bug 615090

Package-Manager: Portage-2.3.6, Repoman-2.3.2

 .../Params-Classify-0.13.0-r1.ebuild               | 10 +--
 .../files/Params-Classify-0.13.0-op_sibling.patch  | 82 ++++++++++++++++++++++
 2 files changed, 87 insertions(+), 5 deletions(-)

diff --git a/dev-perl/Params-Classify/Params-Classify-0.13.0-r1.ebuild 
b/dev-perl/Params-Classify/Params-Classify-0.13.0-r1.ebuild
index 95f1b759b52..a4eecbd4280 100644
--- a/dev-perl/Params-Classify/Params-Classify-0.13.0-r1.ebuild
+++ b/dev-perl/Params-Classify/Params-Classify-0.13.0-r1.ebuild
@@ -1,10 +1,10 @@
 # Copyright 1999-2017 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=6
 
-MODULE_AUTHOR=ZEFRAM
-MODULE_VERSION=0.013
+DIST_AUTHOR=ZEFRAM
+DIST_VERSION=0.013
 inherit perl-module
 
 DESCRIPTION="Argument type classification"
@@ -13,6 +13,8 @@ SLOT="0"
 KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~s390 ~sh ~sparc ~x86 ~x86-linux 
~ppc-macos ~x64-macos ~x86-macos ~x86-solaris"
 IUSE="test"
 
+PATCHES=( "${FILESDIR}/${P}-op_sibling.patch" )
+
 RDEPEND="
        >=virtual/perl-Scalar-List-Utils-1.10.0
        virtual/perl-XSLoader
@@ -26,5 +28,3 @@ DEPEND="
                virtual/perl-Test-Simple
        )
 "
-
-SRC_TEST="do"

diff --git 
a/dev-perl/Params-Classify/files/Params-Classify-0.13.0-op_sibling.patch 
b/dev-perl/Params-Classify/files/Params-Classify-0.13.0-op_sibling.patch
new file mode 100644
index 00000000000..a7c6adac0e9
--- /dev/null
+++ b/dev-perl/Params-Classify/files/Params-Classify-0.13.0-op_sibling.patch
@@ -0,0 +1,82 @@
+https://rt.cpan.org/Ticket/Display.html?id=114490
+
+
+--- Params-Classify-0.013a/lib/Params/Classify.xs      2010-11-16 
15:35:47.000000000 -0500
++++ Params-Classify-0.013b/lib/Params/Classify.xs      2017-03-26 
15:38:12.384693301 -0400
+@@ -41,6 +41,26 @@
+ # define FPTR2DPTR(t,x) ((t)(UV)(x))
+ #endif /* !FPTR2DPTR */
+ 
++#ifndef OpHAS_SIBLING
++#  define OpHAS_SIBLING(o)               (cBOOL((o)->op_sibling))
++#endif
++
++#ifndef OpSIBLING
++#  define OpSIBLING(o)                   (0 + (o)->op_sibling)
++#endif
++
++#ifndef OpMORESIB_set
++#  define OpMORESIB_set(o, sib)          ((o)->op_sibling = (sib))
++#endif
++
++#ifndef OpLASTSIB_set
++#  define OpLASTSIB_set(o, parent)       ((o)->op_sibling = NULL)
++#endif
++
++#ifndef OpMAYBESIB_set
++#  define OpMAYBESIB_set(o, sib, parent) ((o)->op_sibling = (sib))
++#endif
++
+ #ifndef ptr_table_new
+ 
+ struct q_ptr_tbl_ent {
+@@ -625,8 +645,8 @@
+       OP *(*ppfunc)(pTHX);
+       I32 cvflags;
+       pushop = cUNOPx(op)->op_first;
+-      if(!pushop->op_sibling) pushop = cUNOPx(pushop)->op_first;
+-      for(cvop = pushop; cvop->op_sibling; cvop = cvop->op_sibling) ;
++      if(!OpHAS_SIBLING(pushop)) pushop = cUNOPx(pushop)->op_first;
++      for(cvop = pushop; OpHAS_SIBLING(cvop); cvop = OpSIBLING(cvop)) ;
+       if(!(cvop->op_type == OP_RV2CV &&
+                       !(cvop->op_private & OPpENTERSUB_AMPER) &&
+                       (cv = rvop_cv(cUNOPx(cvop)->op_first)) &&
+@@ -635,20 +655,20 @@
+               return nxck_entersub(aTHX_ op);
+       cvflags = CvXSUBANY(cv).any_i32;
+       op = nxck_entersub(aTHX_ op);   /* for prototype checking */
+-      aop = pushop->op_sibling;
+-      bop = aop->op_sibling;
++      aop = OpSIBLING(pushop);
++      bop = OpSIBLING(aop);
+       if(bop == cvop) {
+               if(!(cvflags & PC_ALLOW_UNARY)) return op;
+               unary:
+-              pushop->op_sibling = bop;
+-              aop->op_sibling = NULL;
++              OpLASTSIB_set(pushop, bop);
++              OpLASTSIB_set(aop, NULL);
+               op_free(op);
+               op = newUNOP(OP_NULL, 0, aop);
+               op->op_type = OP_RAND;
+               op->op_ppaddr = ppfunc;
+               op->op_private = (U8)cvflags;
+               return op;
+-      } else if(bop && bop->op_sibling == cvop) {
++      } else if(bop && OpSIBLING(op) == cvop) {
+               if(!(cvflags & PC_ALLOW_BINARY)) return op;
+               if(ppfunc == THX_pp_check_sclass &&
+                               (cvflags & PC_TYPE_MASK) == SCLASS_REF) {
+@@ -667,9 +687,9 @@
+                       cvflags &= ~PC_TYPE_MASK;
+                       ppfunc = THX_pp_check_dyn_battr;
+               }
+-              pushop->op_sibling = cvop;
+-              aop->op_sibling = NULL;
+-              bop->op_sibling = NULL;
++              OpLASTSIB_set(pushop, cvop);
++              OpLASTSIB_set(aop, NULL);
++              OpLASTSIB_set(bop, NULL);
+               op_free(op);
+               op = newBINOP(OP_NULL, 0, aop, bop);
+               op->op_type = OP_RAND;

Reply via email to