]> git.pld-linux.org Git - packages/perl-rpm-build-perl.git/commitdiff
- updated to 0.82 auto/th/perl-rpm-build-perl-0.82-1
authorJakub Bogusz <qboosh@pld-linux.org>
Tue, 15 Nov 2016 17:20:10 +0000 (18:20 +0100)
committerJakub Bogusz <qboosh@pld-linux.org>
Tue, 15 Nov 2016 17:20:10 +0000 (18:20 +0100)
- added perl5.22,non-deterministic-failures patches to fix test failures introduced with perl 5.18+ and 5.22+

perl-rpm-build-perl-non-deterministic-failures.patch [new file with mode: 0644]
perl-rpm-build-perl-perl5.22.patch [new file with mode: 0644]
perl-rpm-build-perl.spec

diff --git a/perl-rpm-build-perl-non-deterministic-failures.patch b/perl-rpm-build-perl-non-deterministic-failures.patch
new file mode 100644 (file)
index 0000000..21aa35e
--- /dev/null
@@ -0,0 +1,35 @@
+From 428c3feac1e9c39f966cc66c36cc3881d202177c Mon Sep 17 00:00:00 2001
+From: Niko Tyni <ntyni@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 (file)
index 0000000..58c7697
--- /dev/null
@@ -0,0 +1,136 @@
+From b73a37a7eb615693b5516068360f61d5b4e8f241 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@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@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@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@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
+
index eb6680f94ce63abde544a840b153472022c11b67..ff8525b15a3c159036b06702473e83405ba4124a 100644 (file)
@@ -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*
This page took 0.197931 seconds and 4 git commands to generate.