[perl-Lexical-Var] Perl 5.18 compatibility

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



commit c130b320dd4f61848a5a7871c55f7f244e2d848e
Author: Petr Písař <ppisar@xxxxxxxxxx>
Date:   Sun Jul 21 10:35:46 2013 +0200

    Perl 5.18 compatibility

 Lexical-Var-0.007-perl_518.patch |   73 ++++++++++++++++++++++++++++++++++++++
 perl-Lexical-Var.spec            |    4 ++
 2 files changed, 77 insertions(+), 0 deletions(-)
---
diff --git a/Lexical-Var-0.007-perl_518.patch b/Lexical-Var-0.007-perl_518.patch
new file mode 100644
index 0000000..33772b4
--- /dev/null
+++ b/Lexical-Var-0.007-perl_518.patch
@@ -0,0 +1,73 @@
+diff -rup Lexical-Var-0.007-F6v6iu/lib/Lexical/Var.xs Lexical-Var-0.007-uRRqJL/lib/Lexical/Var.xs
+--- Lexical-Var-0.007-F6v6iu/lib/Lexical/Var.xs	2012-02-04 00:58:09.000000000 -0800
++++ Lexical-Var-0.007-uRRqJL/lib/Lexical/Var.xs	2012-10-21 07:03:18.000000000 -0700
+@@ -83,6 +83,18 @@ static SV *THX_newSV_type(pTHX_ svtype t
+ # define GV_NOTQUAL 0
+ #endif /* !GV_NOTQUAL */
+ 
++#ifndef PadARRAY
++typedef AV PADNAMELIST;
++# if PERL_VERSION < 8 || (PERL_VERSION == 8 && !PERL_SUBVERSION)
++typedef AV PADLIST;
++typedef AV PAD;
++# endif
++# define PadlistARRAY(pl)	((PAD **)AvARRAY(pl))
++# define PadlistNAMES(pl)	(*PadlistARRAY(pl))
++# define PadARRAY		AvARRAY
++# define PadMAX			AvFILLp
++#endif
++
+ /*
+  * scalar classification
+  *
+@@ -413,9 +425,10 @@ static U32 THX_pad_max(pTHX)
+ static CV *THX_find_compcv(pTHX_ char const *vari_word)
+ {
+ 	GV *compgv;
+-	CV *compcv;
++	CV *compcv = PL_compcv;
+ 	/*
+-	 * Given that we're being invoked from a BEGIN block,
++	 * We're being invoked from a BEGIN
++	 * block.  In perl 5.17.4 and earlier,
+ 	 * PL_compcv here doesn't actually point to the sub
+ 	 * being compiled.  Instead it points to the BEGIN block.
+ 	 * The code that we want to affect is the parent of that.
+@@ -424,10 +437,13 @@ static CV *THX_find_compcv(pTHX_ char co
+ 	 * runtime, or it can be non-null in a couple of
+ 	 * other situations (require, string eval).
+ 	 */
+-	if(!(PL_compcv && CvSPECIAL(PL_compcv) &&
+-			(compgv = CvGV(PL_compcv)) &&
++	if(!(compcv &&
++#if !PERL_VERSION_GE(5,17,5)
++			CvSPECIAL(compcv) &&
++			(compgv = CvGV(compcv)) &&
+ 			strEQ(GvNAME(compgv), "BEGIN") &&
+-			(compcv = CvOUTSIDE(PL_compcv)) &&
++			(compcv = CvOUTSIDE(compcv)) &&
++#endif
+ 			CvPADLIST(compcv)))
+ 		croak("can't set up lexical %s outside compilation",
+ 			vari_word);
+@@ -437,15 +453,15 @@ static CV *THX_find_compcv(pTHX_ char co
+ #define setup_pad(compcv, name) THX_setup_pad(aTHX_ compcv, name)
+ static void THX_setup_pad(pTHX_ CV *compcv, char const *name)
+ {
+-	AV *padlist = CvPADLIST(compcv);
+-	AV *padname = (AV*)*av_fetch(padlist, 0, 0);
+-	AV *padvar = (AV*)*av_fetch(padlist, 1, 0);
++	PADLIST *padlist = CvPADLIST(compcv);
++	PADNAMELIST *padname = PadlistNAMES(padlist);
++	PAD *padvar = PadlistARRAY(padlist)[1];
+ 	PADOFFSET ouroffset;
+ 	SV *ourname, *ourvar;
+ 	HV *stash;
+-	ourvar = *av_fetch(padvar, AvFILLp(padvar) + 1, 1);
++	ourvar = *av_fetch(padvar, PadMAX(padvar) + 1, 1);
+ 	SvPADMY_on(ourvar);
+-	ouroffset = AvFILLp(padvar);
++	ouroffset = PadMAX(padvar);
+ 	ourname = newSV_type(SVt_PADNAME);
+ 	sv_setpv(ourname, name);
+ 	SvPAD_OUR_on(ourname);
diff --git a/perl-Lexical-Var.spec b/perl-Lexical-Var.spec
index a1d732a..6f7c78d 100644
--- a/perl-Lexical-Var.spec
+++ b/perl-Lexical-Var.spec
@@ -6,6 +6,8 @@ License:        GPL+ or Artistic
 Group:          Development/Libraries
 URL:            http://search.cpan.org/dist/Lexical-Var/
 Source0:        http://www.cpan.org/authors/id/Z/ZE/ZEFRAM/Lexical-Var-%{version}.tar.gz
+# Perl 5.18 compatibility, CPAN RT#80309
+Patch0:         Lexical-Var-0.007-perl_518.patch
 BuildRequires:  perl >= 0:5.006
 BuildRequires:  perl(ExtUtils::CBuilder) >= 0.15
 BuildRequires:  perl(Lexical::SealRequireHints) >= 0.006
@@ -26,6 +28,7 @@ infrastructure for modules that manage name spaces.
 
 %prep
 %setup -q -n Lexical-Var-%{version}
+%patch0 -p1
 
 %build
 %{__perl} Build.PL installdirs=vendor optimize="$RPM_OPT_FLAGS"
@@ -49,6 +52,7 @@ find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null \;
 %changelog
 * Sun Jul 21 2013 Petr Pisar <ppisar@xxxxxxxxxx> - 0.007-5
 - Perl 5.18 rebuild
+- Perl 5.18 compatibility (CPAN RT#80309)
 
 * Thu Feb 14 2013 Fedora Release Engineering <rel-eng@xxxxxxxxxxxxxxxxxxxxxxx> - 0.007-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
--
Fedora Extras Perl SIG
http://www.fedoraproject.org/wiki/Extras/SIGs/Perl
perl-devel mailing list
perl-devel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/perl-devel





[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Legacy Announce]     [Fedora PHP Devel]     [Kernel Devel]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Big List of Linux Books]     [Gimp]     [Yosemite Information]
  Powered by Linux