[packages/perl-rpm-build-perl] - updated to 0.82 - added perl5.22,non-deterministic-failures patches to fix test failures introduce

qboosh qboosh at pld-linux.org
Tue Nov 15 18:20:03 CET 2016


commit cc3f43f592383383a0bc068042f0a11a3ca1dea1
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Tue Nov 15 18:20:10 2016 +0100

    - updated to 0.82
    - added perl5.22,non-deterministic-failures patches to fix test failures introduced with perl 5.18+ and 5.22+

 ...rpm-build-perl-non-deterministic-failures.patch |  35 ++++++
 perl-rpm-build-perl-perl5.22.patch                 | 136 +++++++++++++++++++++
 perl-rpm-build-perl.spec                           |  50 ++++++--
 3 files changed, 208 insertions(+), 13 deletions(-)
---
diff --git a/perl-rpm-build-perl.spec b/perl-rpm-build-perl.spec
index eb6680f..ff8525b 100644
--- a/perl-rpm-build-perl.spec
+++ b/perl-rpm-build-perl.spec
@@ -6,18 +6,25 @@
 %define	pdir	rpm
 %define	pnam	build-perl
 Summary:	Calculate dependencies for Perl sources
-Summary(pl.UTF-8):	Znajdź zależności dla źródeł perlowych
+Summary(pl.UTF-8):	Znajdowanie zależności dla źródeł perlowych
 Name:		perl-rpm-build-perl
-Version:	0.80
+Version:	0.82
 Release:	1
-License:	Artistic/GPL
+License:	GPL v2+
 Group:		Development/Languages/Perl
-Source0:	http://search.cpan.org/CPAN/authors/id/A/AT/ATOURBIN/%{pdir}-%{pnam}-%{version}.tar.gz
-# Source0-md5:	0ce2716ea447362fa2879684b5daafe7
+Source0:	http://www.cpan.org/modules/by-authors/id/A/AT/ATOURBIN/%{pdir}-%{pnam}-%{version}.tar.gz
+# Source0-md5:	1cfb4f6a0842d04ef39fd945abacce91
+# https://rt.cpan.org/Ticket/Attachment/1513584/807128/rpm-build-perl-0.82-Adjust-to-perl-5.22.patch
+Patch0:		%{name}-perl5.22.patch
+# https://rt.cpan.org/Ticket/Attachment/1213691/640915/0001-Fix-non-deterministic-failures-on-newer-perls.patch
+Patch1:		%{name}-non-deterministic-failures.patch
 URL:		http://search.cpan.org/dist/rpm-build-perl/
 BuildRequires:	perl-devel >= 1:5.8.0
 BuildRequires:	rpm-perlprov >= 4.1-13
-BuildArch:	noarch
+%if %{with tests}
+BuildRequires:	perl-Encode
+BuildRequires:	perl-Test-Simple
+%endif
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %description
@@ -28,6 +35,8 @@ Moduł ten znajduje zależności dla źródeł perlowych.
 
 %prep
 %setup -q -n %{pdir}-%{pnam}-%{version}
+%patch0 -p1
+%patch1 -p1
 
 %build
 %{__perl} Makefile.PL \
@@ -48,10 +57,25 @@ rm -rf $RPM_BUILD_ROOT
 %files
 %defattr(644,root,root,755)
 %doc Changes README
-%attr(755,root,root) %{_bindir}/perl.*
-%dir %{perl_vendorlib}/B
-%{perl_vendorlib}/B/*.pm
-%dir %{perl_vendorlib}/PerlReq
-%{perl_vendorlib}/PerlReq/*.pm
-%{perl_vendorlib}/*.pm
-%{_mandir}/man?/*
+%attr(755,root,root) %{_bindir}/perl.clean
+%attr(755,root,root) %{_bindir}/perl.prov
+%attr(755,root,root) %{_bindir}/perl.prov.files
+%attr(755,root,root) %{_bindir}/perl.req
+%attr(755,root,root) %{_bindir}/perl.req.files
+%{perl_vendorarch}/B/Clobbers.pm
+%{perl_vendorarch}/B/ConstOptree.pm
+%{perl_vendorarch}/B/PerlReq.pm
+%{perl_vendorarch}/B/Walker.pm
+%dir %{perl_vendorarch}/PerlReq
+%{perl_vendorarch}/PerlReq/Utils.pm
+%{perl_vendorarch}/fake.pm
+%dir %{perl_vendorarch}/auto/B
+%dir %{perl_vendorarch}/auto/B/ConstOptree
+%attr(755,root,root) %{perl_vendorarch}/auto/B/ConstOptree/ConstOptree.so
+%{_mandir}/man1/perl.prov.1p*
+%{_mandir}/man1/perl.req.1p*
+%{_mandir}/man3/B::Clobbers.3pm*
+%{_mandir}/man3/B::ConstOptree.3pm*
+%{_mandir}/man3/B::PerlReq.3pm*
+%{_mandir}/man3/B::Walker.3pm*
+%{_mandir}/man3/PerlReq::Utils.3pm*
diff --git a/perl-rpm-build-perl-non-deterministic-failures.patch b/perl-rpm-build-perl-non-deterministic-failures.patch
new file mode 100644
index 0000000..21aa35e
--- /dev/null
+++ b/perl-rpm-build-perl-non-deterministic-failures.patch
@@ -0,0 +1,35 @@
+From 428c3feac1e9c39f966cc66c36cc3881d202177c Mon Sep 17 00:00:00 2001
+From: Niko Tyni <ntyni at debian.org>
+Date: Sat, 18 May 2013 09:41:47 +0300
+Subject: [PATCH] Fix non-deterministic failures on newer perls
+
+The hash randomization changes in the Perl 5.17 series
+made perl.req to occasionally fail to report the dependencies.
+
+Improved diagnostics report
+
+ Use of each() on hash after insertion without resetting hash
+ iterator results in undefined behavior, Perl interpreter: 0x9e7010 at
+ /home/niko/tmp/libb-perlreq-perl-0.82/blib/lib/B/Walker.pm line 122.
+
+so use keys() instead of each(), as suggested by perldiag.pod.
+---
+ lib/B/Walker.pm |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/B/Walker.pm b/lib/B/Walker.pm
+index b71f204..f626043 100644
+--- a/lib/B/Walker.pm
++++ b/lib/B/Walker.pm
+@@ -119,7 +119,7 @@ sub walk_gv ($) {
+ sub walk_stash ($$);
+ sub walk_stash ($$) { # similar to B::walksymtable
+ 	my ($symref, $prefix) = @_;
+-	while (my ($sym) = each %$symref) {
++	for my $sym (keys %$symref) {
+ 		no strict 'refs';
+ 		my $fullname = "*main::". $prefix . $sym;
+ 		if ($sym =~ /::\z/) {
+-- 
+1.7.10.4
+
diff --git a/perl-rpm-build-perl-perl5.22.patch b/perl-rpm-build-perl-perl5.22.patch
new file mode 100644
index 0000000..58c7697
--- /dev/null
+++ b/perl-rpm-build-perl-perl5.22.patch
@@ -0,0 +1,136 @@
+From b73a37a7eb615693b5516068360f61d5b4e8f241 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar at redhat.com>
+Date: Tue, 16 Jun 2015 18:20:20 +0200
+Subject: [PATCH] Adjust to perl-5.22
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Perl 5.22 brought changes in class/method opcodes, see perl commit
+
+commit b46e009d94293e069270690750f6c669c6d0ce22
+Author: syber <syber at crazypanda.ru>
+Date: Thu Sep 4 22:08:59 2014 +0400
+
+    Make OP_METHOD* to be of new class METHOP
+
+and optimizations in anoncode, see perl commit
+
+commit 01762542fcff2d3eb5e0fd287f28e872a0cfd5a4
+Author: Father Chrysostomos <sprout at cpan.org>
+Date: Sat Oct 18 10:23:26 2014 -0700
+
+    Use srefgen for anoncode
+
+and GV to IV optimizations when calling some subroutines.
+
+This patch implements the changes to make tests passing with perl
+5.22 and previous versions too.
+
+CPAN RT#104885
+
+Signed-off-by: Petr Písař <ppisar at redhat.com>
+---
+ lib/B/PerlReq.pm | 24 +++++++++++++++++++-----
+ lib/B/Walker.pm  |  9 ++++++++-
+ t/01-B-PerlReq.t |  3 +++
+ 3 files changed, 30 insertions(+), 6 deletions(-)
+
+diff --git a/lib/B/PerlReq.pm b/lib/B/PerlReq.pm
+index 303454f..2e2a2ba 100644
+--- a/lib/B/PerlReq.pm
++++ b/lib/B/PerlReq.pm
+@@ -44,7 +44,7 @@ our @Skip = (
+ 
+ our ($Strict, $Relaxed, $Verbose, $Debug);
+ 
+-use B::Walker qw(const_sv);
++use B::Walker qw(const_methop const_sv);
+ 
+ sub RequiresPerl ($) {
+ 	my $v = shift;
+@@ -273,8 +273,13 @@ my %TryCV;
+ sub grok_try {
+ 	return unless $INC{"Try/Tiny.pm"};
+ 	my (undef, $op) = @_;
+-	return unless $op->name eq "refgen";
+-	$op = $op->first->first->sibling;
++	if ($op->name eq "srefgen") {
++		$op = $op->first->first;
++	} elsif ($op->name eq "refgen") {
++		$op = $op->first->first->sibling;
++	} else {
++		return;
++	}
+ 	return unless $op->name eq "anoncode";
+ 	my $cv = padval($op->targ);
+ 	$TryCV{$$cv} = 1;
+@@ -304,7 +309,13 @@ sub grok_entersub ($) {
+ 		$op = $op->sibling;
+ 	}
+ 	if ($op->name eq "method_named") {
+-		my $method = const_sv($op)->PV;
++		my $method;
++		if (ref($op) eq 'B::METHOP') {
++			$method = const_methop($op);
++		} else {
++			$method = const_sv($op);
++		}
++		$method = $method->PV;
+ 		return unless $methods{$method};
+ 		return unless $args->name eq "const";
+ 		my $sv = const_sv($args);
+@@ -316,7 +327,10 @@ sub grok_entersub ($) {
+ 	elsif ($op->first->name eq "gv") {
+ 		$op = $op->first;
+ 		use B::Walker qw(padval);
+-		my $func = padval($op->padix)->NAME;
++		my $padval = padval($op->padix);
++		# perl 5.22 sometimes optimizes to B::IV
++		return unless ref $padval eq 'B::GV';
++		my $func = $padval->NAME;
+ 		return unless $funcs{$func};
+ 		$funcs{$func}->($func, $args);
+ 	}
+diff --git a/lib/B/Walker.pm b/lib/B/Walker.pm
+index b71f204..9e3083c 100644
+--- a/lib/B/Walker.pm
++++ b/lib/B/Walker.pm
+@@ -6,7 +6,7 @@ use strict;
+ 
+ require Exporter;
+ our @ISA = qw(Exporter);
+-our @EXPORT_OK = qw(padname padval const_sv walk);
++our @EXPORT_OK = qw(padname padval const_methop const_sv walk);
+ 
+ our $CV;
+ 
+@@ -27,6 +27,13 @@ sub const_sv ($) {
+ 	return $sv;
+ }
+ 
++sub const_methop ($) {
++	my $op = shift;
++	my $sv = $op->meth_sv;
++	$sv = padval($op->targ) unless $$sv;
++	return $sv;
++}
++
+ our $Level = 0;
+ our $Line;
+ our $Sub;
+diff --git a/t/01-B-PerlReq.t b/t/01-B-PerlReq.t
+index 7233cb6..6e02759 100644
+--- a/t/01-B-PerlReq.t
++++ b/t/01-B-PerlReq.t
+@@ -139,4 +139,7 @@ EOF
+ 
+ cmp_ok "perl(Cwd.pm) >= 1.0",	"eq", grok q(use Cwd 0==0);
+ 
++# perl 5.22 sometimes optimizes to B::IV leading to crash
++cmp_ok "$d", "eq", grok qq(sub foo{} foo; require $m;);
++
+ #END { $? = 0; }
+-- 
+2.1.0
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/perl-rpm-build-perl.git/commitdiff/cc3f43f592383383a0bc068042f0a11a3ca1dea1



More information about the pld-cvs-commit mailing list