diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c000e7e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/Data-Dumper-2.161.tar.gz diff --git a/.perl-Data-Dumper.metadata b/.perl-Data-Dumper.metadata new file mode 100644 index 0000000..0e2b153 --- /dev/null +++ b/.perl-Data-Dumper.metadata @@ -0,0 +1 @@ +a20626bd76d293147dd8ff8afa88deafd2d26899 SOURCES/Data-Dumper-2.161.tar.gz diff --git a/SOURCES/Data-Dumper-2.167-fix-Data-Dumper-postentry-for-quoted-glob.patch b/SOURCES/Data-Dumper-2.167-fix-Data-Dumper-postentry-for-quoted-glob.patch new file mode 100644 index 0000000..4e70218 --- /dev/null +++ b/SOURCES/Data-Dumper-2.167-fix-Data-Dumper-postentry-for-quoted-glob.patch @@ -0,0 +1,112 @@ +From 76b7c82c2947d64a3494175ef6530b3fba8a499d Mon Sep 17 00:00:00 2001 +From: Zefram +Date: Wed, 10 Jan 2018 21:09:45 +0000 +Subject: [PATCH] fix Data-Dumper postentry for quoted glob +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In Data-Dumper, where a glob with a quoted name required a postentry, +the name part of the postentry was being emitted as just "}". This was +an old bug affecting upgraded glob names, which the recent commit +abda9fe0fe75ae824723761c1c98af958f17a41c made affect all quoted glob +names. Fix the postentry name to encompass the entire quoted name. +Fixes [perl #132695]. + +Petr Písař: Ported to Data-Dumpe-2.167 from perl +fb5043174b070927d312677f0a2f04a29b11349a. + +Signed-off-by: Petr Písař +--- + Dumper.xs | 11 ++++++----- + t/dumper.t | 32 +++++++++++++++++++++++++++++++- + 2 files changed, 37 insertions(+), 6 deletions(-) + +diff --git a/Dumper.xs b/Dumper.xs +index 8a16e04..206e8b5 100644 +--- a/Dumper.xs ++++ b/Dumper.xs +@@ -1300,11 +1300,11 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + i = 0; else i -= 4; + } + if (globname_needs_quote(c,i)) { +- sv_grow(retval, SvCUR(retval)+2); ++ sv_grow(retval, SvCUR(retval)+3); + r = SvPVX(retval)+SvCUR(retval); +- r[0] = '*'; r[1] = '{'; ++ r[0] = '*'; r[1] = '{'; r[2] = 0; + SvCUR_set(retval, SvCUR(retval)+2); +- esc_q_utf8(aTHX_ retval, c, i, ++ i = 3 + esc_q_utf8(aTHX_ retval, c, i, + #ifdef GvNAMEUTF8 + !!GvNAMEUTF8(val) + #else +@@ -1314,15 +1314,16 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + sv_grow(retval, SvCUR(retval)+2); + r = SvPVX(retval)+SvCUR(retval); + r[0] = '}'; r[1] = '\0'; +- i = 1; ++ SvCUR_set(retval, SvCUR(retval)+1); ++ r = r+1 - i; + } + else { + sv_grow(retval, SvCUR(retval)+i+2); + r = SvPVX(retval)+SvCUR(retval); + r[0] = '*'; strcpy(r+1, c); + i++; ++ SvCUR_set(retval, SvCUR(retval)+i); + } +- SvCUR_set(retval, SvCUR(retval)+i); + + if (style->purity) { + static const char* const entries[] = { "{SCALAR}", "{ARRAY}", "{HASH}" }; +diff --git a/t/dumper.t b/t/dumper.t +index 0c12f34..e09a2dd 100644 +--- a/t/dumper.t ++++ b/t/dumper.t +@@ -108,7 +108,7 @@ sub SKIP_TEST { + ++$TNUM; print "ok $TNUM # skip $reason\n"; + } + +-$TMAX = 456; ++$TMAX = 468; + + # Force Data::Dumper::Dump to use perl. We test Dumpxs explicitly by calling + # it direct. Out here it lets us knobble the next if to test that the perl +@@ -1773,3 +1773,33 @@ EOT + TEST (q(Data::Dumper->Dumpxs([\@globs], ["globs"])), 'globs: Dumpxs()') + if $XS; + } ++############# ++$WANT = <<'EOT'; ++#$v = { ++# a => \*::ppp, ++# b => \*{'::a/b'}, ++# c => \*{"::a\x{2603}b"} ++#}; ++#*::ppp = { ++# a => 1 ++#}; ++#*{'::a/b'} = { ++# b => 3 ++#}; ++#*{"::a\x{2603}b"} = { ++# c => 5 ++#}; ++EOT ++{ ++ *ppp = { a => 1 }; ++ *{"a/b"} = { b => 3 }; ++ *{"a\x{2603}b"} = { c => 5 }; ++ our $v = { a => \*ppp, b => \*{"a/b"}, c => \*{"a\x{2603}b"} }; ++ local $Data::Dumper::Purity = 1; ++ TEST (q(Data::Dumper->Dump([$v], ["v"])), 'glob purity: Dump()'); ++ TEST (q(Data::Dumper->Dumpxs([$v], ["v"])), 'glob purity: Dumpxs()') if $XS; ++ $WANT =~ tr/'/"/; ++ local $Data::Dumper::Useqq = 1; ++ TEST (q(Data::Dumper->Dump([$v], ["v"])), 'glob purity: Dump()'); ++ TEST (q(Data::Dumper->Dumpxs([$v], ["v"])), 'glob purity: Dumpxs()') if $XS; ++} +-- +2.13.6 + diff --git a/SOURCES/Data-Dumper-2.167-in-Data-Dumper-quote-glob-names-better.patch b/SOURCES/Data-Dumper-2.167-in-Data-Dumper-quote-glob-names-better.patch new file mode 100644 index 0000000..f2543e5 --- /dev/null +++ b/SOURCES/Data-Dumper-2.167-in-Data-Dumper-quote-glob-names-better.patch @@ -0,0 +1,134 @@ +From 69beb4272d324bb0724b140b5ddca517e90d89b9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Tue, 5 Dec 2017 10:59:42 +0100 +Subject: [PATCH] in Data-Dumper, quote glob names better +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Ported to Data-Dumper-1.167 from perl git tree: + +commit abda9fe0fe75ae824723761c1c98af958f17a41c +Author: Zefram +Date: Fri Dec 1 17:35:35 2017 +0000 + + in Data-Dumper, quote glob names better + + Glob name quoting should obey Useqq. Fixes [perl #119831]. + +Signed-off-by: Petr Písař +--- + Dumper.pm | 4 ++-- + Dumper.xs | 22 +++++++--------------- + t/dumper.t | 35 ++++++++++++++++++++++++++++++++++- + 3 files changed, 43 insertions(+), 18 deletions(-) + +diff --git a/Dumper.pm b/Dumper.pm +index 00f6326..696964a 100644 +--- a/Dumper.pm ++++ b/Dumper.pm +@@ -527,8 +527,8 @@ sub _dump { + $ref = \$val; + if (ref($ref) eq 'GLOB') { # glob + my $name = substr($val, 1); +- if ($name =~ /^[A-Za-z_][\w:]*$/ && $name ne 'main::') { +- $name =~ s/^main::/::/; ++ $name =~ s/^main::(?!\z)/::/; ++ if ($name =~ /\A(?:[A-Z_a-z][0-9A-Z_a-z]*)?::(?:[0-9A-Z_a-z]+::)*[0-9A-Z_a-z]*\z/ && $name ne 'main::') { + $sname = $name; + } + else { +diff --git a/Dumper.xs b/Dumper.xs +index 5a21721..8a16e04 100644 +--- a/Dumper.xs ++++ b/Dumper.xs +@@ -1300,29 +1300,21 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + i = 0; else i -= 4; + } + if (globname_needs_quote(c,i)) { +-#ifdef GvNAMEUTF8 +- if (GvNAMEUTF8(val)) { + sv_grow(retval, SvCUR(retval)+2); + r = SvPVX(retval)+SvCUR(retval); + r[0] = '*'; r[1] = '{'; + SvCUR_set(retval, SvCUR(retval)+2); +- esc_q_utf8(aTHX_ retval, c, i, 1, style->useqq); ++ esc_q_utf8(aTHX_ retval, c, i, ++#ifdef GvNAMEUTF8 ++ !!GvNAMEUTF8(val) ++#else ++ 0 ++#endif ++ , style->useqq); + sv_grow(retval, SvCUR(retval)+2); + r = SvPVX(retval)+SvCUR(retval); + r[0] = '}'; r[1] = '\0'; + i = 1; +- } +- else +-#endif +- { +- sv_grow(retval, SvCUR(retval)+6+2*i); +- r = SvPVX(retval)+SvCUR(retval); +- r[0] = '*'; r[1] = '{'; r[2] = '\''; +- i += esc_q(r+3, c, i); +- i += 3; +- r[i++] = '\''; r[i++] = '}'; +- r[i] = '\0'; +- } + } + else { + sv_grow(retval, SvCUR(retval)+i+2); +diff --git a/t/dumper.t b/t/dumper.t +index 643160a..0c12f34 100644 +--- a/t/dumper.t ++++ b/t/dumper.t +@@ -108,7 +108,7 @@ sub SKIP_TEST { + ++$TNUM; print "ok $TNUM # skip $reason\n"; + } + +-$TMAX = 450; ++$TMAX = 456; + + # Force Data::Dumper::Dump to use perl. We test Dumpxs explicitly by calling + # it direct. Out here it lets us knobble the next if to test that the perl +@@ -1740,3 +1740,36 @@ EOT + TEST (qq(Dumper("\n")), '\n alone'); + TEST (qq(Data::Dumper::DumperX("\n")), '\n alone') if $XS; + } ++############# ++our @globs = map { $_, \$_ } map { *$_ } map { $_, "s::$_" } ++ "foo", "\1bar", "L\x{e9}on", "m\x{100}cron", "snow\x{2603}"; ++$WANT = <<'EOT'; ++#$globs = [ ++# *::foo, ++# \*::foo, ++# *s::foo, ++# \*s::foo, ++# *{"::\1bar"}, ++# \*{"::\1bar"}, ++# *{"s::\1bar"}, ++# \*{"s::\1bar"}, ++# *{"::L\351on"}, ++# \*{"::L\351on"}, ++# *{"s::L\351on"}, ++# \*{"s::L\351on"}, ++# *{"::m\x{100}cron"}, ++# \*{"::m\x{100}cron"}, ++# *{"s::m\x{100}cron"}, ++# \*{"s::m\x{100}cron"}, ++# *{"::snow\x{2603}"}, ++# \*{"::snow\x{2603}"}, ++# *{"s::snow\x{2603}"}, ++# \*{"s::snow\x{2603}"} ++#]; ++EOT ++{ ++ local $Data::Dumper::Useqq = 1; ++ TEST (q(Data::Dumper->Dump([\@globs], ["globs"])), 'globs: Dump()'); ++ TEST (q(Data::Dumper->Dumpxs([\@globs], ["globs"])), 'globs: Dumpxs()') ++ if $XS; ++} +-- +2.13.6 + diff --git a/SPECS/perl-Data-Dumper.spec b/SPECS/perl-Data-Dumper.spec new file mode 100644 index 0000000..655dc8e --- /dev/null +++ b/SPECS/perl-Data-Dumper.spec @@ -0,0 +1,188 @@ +Name: perl-Data-Dumper +Version: 2.161 +Release: 4%{?dist} +Summary: Stringify perl data structures, suitable for printing and eval +License: GPL+ or Artistic +Group: Development/Libraries +URL: http://search.cpan.org/dist/Data-Dumper/ +Source0: http://www.cpan.org/authors/id/S/SM/SMUELLER/Data-Dumper-%{version}.tar.gz +# Fix quoting glob names, RT#119831, in upstream after perl-5.27.6 +Patch0: Data-Dumper-2.167-in-Data-Dumper-quote-glob-names-better.patch +# Fix postentry for quoted glob, bug #1532524, RT#132695, +# in upstream after perl-5.27.7 +Patch1: Data-Dumper-2.167-fix-Data-Dumper-postentry-for-quoted-glob.patch +BuildRequires: findutils +BuildRequires: gcc +BuildRequires: make +BuildRequires: perl-devel +BuildRequires: perl-generators +BuildRequires: perl-interpreter +BuildRequires: perl(ExtUtils::MakeMaker) +BuildRequires: sed +# Run-time: +BuildRequires: perl(B::Deparse) +BuildRequires: perl(bytes) +BuildRequires: perl(Carp) +BuildRequires: perl(constant) +BuildRequires: perl(Exporter) +BuildRequires: perl(overload) +BuildRequires: perl(Scalar::Util) +BuildRequires: perl(XSLoader) +# perl-Test-Simple is in cycle with perl-Data-Dumper +%if !%{defined perl_bootstrap} +# Tests only: +BuildRequires: perl(Config) +BuildRequires: perl(if) +BuildRequires: perl(lib) +BuildRequires: perl(strict) +BuildRequires: perl(Test::More) >= 0.98 +BuildRequires: perl(vars) +BuildRequires: perl(warnings) +# Optional tests: +BuildRequires: perl(Encode) +%endif +Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version)) +Requires: perl(B::Deparse) +Requires: perl(bytes) +Requires: perl(Scalar::Util) +Requires: perl(XSLoader) + +%{?perl_default_filter} + +%description +Given a list of scalars or reference variables, writes out their contents +in perl syntax. The references can also be objects. The content of each +variable is output in a single Perl statement. Handles self-referential +structures correctly. + +%prep +%setup -q -n Data-Dumper-%{version} +%patch0 -p1 +%patch1 -p1 +sed -i '/MAN3PODS/d' Makefile.PL + +%build +perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="$RPM_OPT_FLAGS" +make %{?_smp_mflags} + +%install +make pure_install DESTDIR=$RPM_BUILD_ROOT +find $RPM_BUILD_ROOT -type f -name .packlist -delete +find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -delete +%{_fixperms} $RPM_BUILD_ROOT/* + +%check +%if !%{defined perl_bootstrap} +make test +%endif + +%files +%doc Changes Todo +%{perl_vendorarch}/auto/* +%{perl_vendorarch}/Data* +%{_mandir}/man3/* + +%changelog +* Thu Jan 11 2018 Petr Pisar - 2.161-4 +- Fix postentry for quoted glob (bug #1532524) + +* Tue Dec 05 2017 Petr Pisar - 2.161-3 +- Fix quoting glob names (RT#119831) + +* Sat Feb 11 2017 Fedora Release Engineering - 2.161-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Jul 12 2016 Petr Pisar - 2.161-1 +- 1.161 bump + +* Wed May 18 2016 Jitka Plesnikova - 2.160-366 +- Perl 5.24 re-rebuild of bootstrapped packages + +* Sat May 14 2016 Jitka Plesnikova - 2.160-365 +- Increase release to favour standalone package + +* Wed May 11 2016 Jitka Plesnikova - 2.160-1 +- 2.160 bump in order to dual-live with perl 5.24 + +* Thu Feb 04 2016 Fedora Release Engineering - 2.158-348 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jun 18 2015 Fedora Release Engineering - 2.158-347 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Jun 10 2015 Jitka Plesnikova - 2.158-346 +- Perl 5.22 re-rebuild of bootstrapped packages + +* Thu Jun 04 2015 Jitka Plesnikova - 2.158-345 +- Increase release to favour standalone package + +* Wed Jun 03 2015 Jitka Plesnikova - 2.158-2 +- Perl 5.22 rebuild + +* Wed May 06 2015 Petr Pisar - 2.158-1 +- 2.158 bump in order to dual-live with perl 5.22 + +* Fri Sep 19 2014 Petr Pisar - 2.154-1 +- 2.154 bump (fixes CVE-2014-4330 (limit recursion when dumping deep data + structures)) + +* Sun Sep 07 2014 Jitka Plesnikova - 2.151-311 +- Perl 5.20 re-rebuild of bootstrapped packages + +* Wed Sep 03 2014 Jitka Plesnikova - 2.151-310 +- Increase release to favour standalone package + +* Tue Aug 26 2014 Jitka Plesnikova - 2.151-4 +- Perl 5.20 rebuild + +* Sun Aug 17 2014 Fedora Release Engineering - 2.151-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 2.151-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon Mar 10 2014 Petr Pisar - 2.151-1 +- 2.151 bump + +* Wed Aug 14 2013 Jitka Plesnikova - 2.145-292 +- Perl 5.18 re-rebuild of bootstrapped packages + +* Sat Aug 03 2013 Fedora Release Engineering - 2.145-291 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jul 15 2013 Petr Pisar - 2.145-290 +- Increase release to favour standalone package + +* Fri Jul 12 2013 Petr Pisar - 2.145-2 +- Perl 5.18 rebuild + +* Mon Mar 18 2013 Petr Pisar - 2.145-1 +- 2.145 bump + +* Thu Feb 28 2013 Petr Pisar - 2.143-1 +- 2.143 bump + +* Thu Feb 14 2013 Fedora Release Engineering - 2.139-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Dec 12 2012 Petr Pisar - 2.139-1 +- 2.139 bump + +* Fri Oct 05 2012 Petr Pisar - 2.136-1 +- 2.136 bump + +* Fri Aug 24 2012 Petr Pisar - 2.135.07-241 +- Disable tests on bootstrap + +* Mon Aug 13 2012 Marcela Mašláňová - 2.135.07-240 +- update the version to override the module from perl.srpm +- bump release to override sub-package from perl.spec + +* Fri Jul 20 2012 Fedora Release Engineering - 2.131-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Jun 06 2012 Petr Pisar - 2.131-2 +- Perl 5.16 rebuild + +* Tue Apr 10 2012 Petr Pisar 2.131-1 +- Specfile autogenerated by cpanspec 1.78.