From efe7b4107ba1a750e60545618afe090057765bfd Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 31 May 2018 16:00:39 +0000
Subject: perl-params-classify: rebuild

---
 .../perl_modules/perl-params-classify/PKGBUILD     | 44 ++++++++----
 .../perl-params-classify/op-sibling-fixes.patch    | 79 ++++++++++++++++++++++
 2 files changed, 111 insertions(+), 12 deletions(-)
 create mode 100644 abs/core/perl_modules/perl-params-classify/op-sibling-fixes.patch

diff --git a/abs/core/perl_modules/perl-params-classify/PKGBUILD b/abs/core/perl_modules/perl-params-classify/PKGBUILD
index d0dae4a..caa6278 100644
--- a/abs/core/perl_modules/perl-params-classify/PKGBUILD
+++ b/abs/core/perl_modules/perl-params-classify/PKGBUILD
@@ -1,23 +1,43 @@
-# $Id: PKGBUILD 71821 2012-06-02 10:31:50Z bluewind $
+# $Id$
 # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
 
 pkgname=perl-params-classify
 pkgver=0.013
-pkgrel=2
+pkgrel=10
 pkgdesc="argument type classification"
-arch=(i686 x86_64)
+arch=(x86_64)
 license=('PerlArtistic')
 url="http://search.cpan.org/~zefram/Params-Classify"
 options=(!emptydirs)
-depends=('perl>=5.10.1')
-source=("http://search.cpan.org/CPAN/authors/id/Z/ZE/ZEFRAM/Params-Classify-$pkgver.tar.gz")
-md5sums=('63d24fbec775472ada49d16bce4a9b1f')
+depends=('perl')
+makedepends=('perl-module-build')
+source=("http://search.cpan.org/CPAN/authors/id/Z/ZE/ZEFRAM/Params-Classify-$pkgver.tar.gz"
+        'op-sibling-fixes.patch')
+md5sums=('63d24fbec775472ada49d16bce4a9b1f'
+         '6a115714a269b34decf42fc445a2d0e0')
+
+prepare() {
+  cd "$srcdir"/Params-Classify-$pkgver
+  # https://rt.cpan.org/Public/Bug/Display.html?id=114490
+  patch -Np1 -i ../op-sibling-fixes.patch
+}
 
 build() {
-  cd $srcdir/Params-Classify-$pkgver
-  PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
-  make
-  make install DESTDIR=${pkgdir}
-  find ${pkgdir} -name perllocal.pod -delete
-  find ${pkgdir} -name .packlist -delete
+  cd "$srcdir"/Params-Classify-$pkgver
+  perl Build.PL installdirs=vendor destdir="$pkgdir/"
+  perl Build
+}
+
+package() {
+  cd "$srcdir"/Params-Classify-$pkgver
+  perl Build install
+  find "$pkgdir" -name perllocal.pod -delete
+  find "$pkgdir" -name .packlist -delete
+# template start; name=perl-binary-module-dependency; version=1;
+if [[ $(find "$pkgdir/usr/lib/perl5/" -name "*.so") ]]; then
+	_perlver_min=$(perl -e '$v = $^V->{version}; print $v->[0].".".($v->[1]);')
+	_perlver_max=$(perl -e '$v = $^V->{version}; print $v->[0].".".($v->[1]+1);')
+	depends+=("perl>=$_perlver_min" "perl<$_perlver_max")
+fi
+# template end;
 }
diff --git a/abs/core/perl_modules/perl-params-classify/op-sibling-fixes.patch b/abs/core/perl_modules/perl-params-classify/op-sibling-fixes.patch
new file mode 100644
index 0000000..98dd25e
--- /dev/null
+++ b/abs/core/perl_modules/perl-params-classify/op-sibling-fixes.patch
@@ -0,0 +1,79 @@
+--- 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;
-- 
cgit v0.12

