[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