From e2fcb2df6e45effa23b5fae39484e2b8fd909696 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 02 2021 16:05:23 +0000 Subject: import perl-Data-Dumper-2.174-462.el9 --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..762cadc --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/Data-Dumper-2.173.tar.gz diff --git a/.perl-Data-Dumper.metadata b/.perl-Data-Dumper.metadata new file mode 100644 index 0000000..a0fb6ca --- /dev/null +++ b/.perl-Data-Dumper.metadata @@ -0,0 +1 @@ +91ca53fd5499b913996009e763d73ebeb51be8c3 SOURCES/Data-Dumper-2.173.tar.gz diff --git a/SOURCES/Data-Dumper-2.173-Data-Dumper-XS-use-mortals-to-prevent-leaks-if-magic.patch b/SOURCES/Data-Dumper-2.173-Data-Dumper-XS-use-mortals-to-prevent-leaks-if-magic.patch new file mode 100644 index 0000000..ec2c817 --- /dev/null +++ b/SOURCES/Data-Dumper-2.173-Data-Dumper-XS-use-mortals-to-prevent-leaks-if-magic.patch @@ -0,0 +1,243 @@ +From 900c00b2ae29aa10b5cf0b3b5c55aff7501fc382 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Wed, 12 Aug 2020 16:20:16 +1000 +Subject: [PATCH 3/3] Data::Dumper (XS): use mortals to prevent leaks if magic + throws +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +For example: + + use Tie::Scalar; + use Data::Dumper; + sub T::TIESCALAR { bless {}, shift} + sub T::FETCH { die } + my $x; + tie $x, "T" or die; + while(1) { + eval { () = Dumper( [ \$x ] ) }; + } + +would leak various work SVs. + +I start a new scope (ENTER/LEAVE) for most recursive DD_dump() calls +so that the work SVs don't accumulate on the temps stack, for example +if we're dumping a large array we'd end up with several SVs on the +temp stack for each member of the array. + +The exceptions are where I don't expect a large number of unreleased +temps to accumulate, as with scalar or glob refs. + +Petr Písař: Ported to Data-Dumper-2.173 from +815b4be4ab7ae210f796fc9d29754e55fc0d1f0e perl commit. + +Signed-off-by: Petr Písař +--- + Dumper.xs | 52 ++++++++++++++++++++++++++++------------------------ + 1 file changed, 28 insertions(+), 24 deletions(-) + +diff --git a/Dumper.xs b/Dumper.xs +index d4b34ad..65639ae 100644 +--- a/Dumper.xs ++++ b/Dumper.xs +@@ -808,12 +808,13 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + sv_catpvs(retval, "( "); + if (style->indent >= 2) { + blesspad = apad; +- apad = newSVsv(apad); ++ apad = sv_2mortal(newSVsv(apad)); + sv_x(aTHX_ apad, " ", 1, blesslen+2); + } + } + + ipad = sv_x(aTHX_ Nullsv, SvPVX_const(style->xpad), SvCUR(style->xpad), level+1); ++ sv_2mortal(ipad); + + if (is_regex) + { +@@ -878,7 +879,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + realtype <= SVt_PVMG + #endif + ) { /* scalar ref */ +- SV * const namesv = newSVpvs("${"); ++ SV * const namesv = sv_2mortal(newSVpvs("${")); + sv_catpvn(namesv, name, namelen); + sv_catpvs(namesv, "}"); + if (realpack) { /* blessed */ +@@ -892,7 +893,6 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + DD_dump(aTHX_ ival, SvPVX_const(namesv), SvCUR(namesv), retval, seenhv, + postav, level+1, apad, style); + } +- SvREFCNT_dec(namesv); + } + else if (realtype == SVt_PVGV) { /* glob ref */ + SV * const namesv = newSVpvs("*{"); +@@ -908,9 +908,10 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + SSize_t ix = 0; + const SSize_t ixmax = av_len((AV *)ival); + +- SV * const ixsv = newSViv(0); ++ SV * const ixsv = sv_2mortal(newSViv(0)); + /* allowing for a 24 char wide array index */ + New(0, iname, namelen+28, char); ++ SAVEFREEPV(iname); + (void) strlcpy(iname, name, namelen+28); + inamelen = namelen; + if (name[0] == '@') { +@@ -940,7 +941,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + iname[inamelen++] = '-'; iname[inamelen++] = '>'; + } + iname[inamelen++] = '['; iname[inamelen] = '\0'; +- totpad = newSVsv(style->sep); ++ totpad = sv_2mortal(newSVsv(style->sep)); + sv_catsv(totpad, style->pad); + sv_catsv(totpad, apad); + +@@ -970,8 +971,12 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + } + sv_catsv(retval, totpad); + sv_catsv(retval, ipad); ++ ENTER; ++ SAVETMPS; + DD_dump(aTHX_ elem, iname, ilen, retval, seenhv, postav, + level+1, apad, style); ++ FREETMPS; ++ LEAVE; + if (ix < ixmax || (style->trailingcomma && style->indent >= 1)) + sv_catpvs(retval, ","); + } +@@ -985,9 +990,6 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + sv_catpvs(retval, ")"); + else + sv_catpvs(retval, "]"); +- SvREFCNT_dec(ixsv); +- SvREFCNT_dec(totpad); +- Safefree(iname); + } + else if (realtype == SVt_PVHV) { + SV *totpad, *newapad; +@@ -997,7 +999,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + SV *hval; + AV *keys = NULL; + +- SV * const iname = newSVpvn(name, namelen); ++ SV * const iname = newSVpvn_flags(name, namelen, SVs_TEMP); + if (name[0] == '%') { + sv_catpvs(retval, "("); + (SvPVX(iname))[0] = '$'; +@@ -1021,7 +1023,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + sv_catpvs(iname, "->"); + } + sv_catpvs(iname, "{"); +- totpad = newSVsv(style->sep); ++ totpad = sv_2mortal(newSVsv(style->sep)); + sv_catsv(totpad, style->pad); + sv_catsv(totpad, apad); + +@@ -1117,6 +1119,10 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + + sv_catsv(retval, totpad); + sv_catsv(retval, ipad); ++ ++ ENTER; ++ SAVETMPS; ++ + /* The (very) + old logic was first to check utf8 flag, and if utf8 always + call esc_q_utf8. This caused test to break under -Mutf8, +@@ -1143,6 +1149,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + else { + nticks = num_q(key, klen); + New(0, nkey_buffer, klen+nticks+3, char); ++ SAVEFREEPV(nkey_buffer); + nkey = nkey_buffer; + nkey[0] = '\''; + if (nticks) +@@ -1160,7 +1167,8 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + nlen = klen; + sv_catpvn(retval, nkey, klen); + } +- sname = newSVsv(iname); ++ ++ sname = sv_2mortal(newSVsv(iname)); + sv_catpvn(sname, nkey, nlen); + sv_catpvs(sname, "}"); + +@@ -1168,7 +1176,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + if (style->indent >= 2) { + char *extra; + STRLEN elen = 0; +- newapad = newSVsv(apad); ++ newapad = sv_2mortal(newSVsv(apad)); + New(0, extra, klen+4+1, char); + while (elen < (klen+4)) + extra[elen++] = ' '; +@@ -1181,10 +1189,9 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + + DD_dump(aTHX_ hval, SvPVX_const(sname), SvCUR(sname), retval, seenhv, + postav, level+1, newapad, style); +- SvREFCNT_dec(sname); +- Safefree(nkey_buffer); +- if (style->indent >= 2) +- SvREFCNT_dec(newapad); ++ ++ FREETMPS; ++ LEAVE; + } + if (i) { + SV *opad = sv_x(aTHX_ Nullsv, SvPVX_const(style->xpad), +@@ -1199,8 +1206,6 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + sv_catpvs(retval, ")"); + else + sv_catpvs(retval, "}"); +- SvREFCNT_dec(iname); +- SvREFCNT_dec(totpad); + } + else if (realtype == SVt_PVCV) { + if (style->deparse) { +@@ -1247,7 +1252,6 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + STRLEN plen, pticks; + + if (style->indent >= 2) { +- SvREFCNT_dec(apad); + apad = blesspad; + } + sv_catpvs(retval, ", '"); +@@ -1276,7 +1280,6 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + sv_catpvs(retval, "()"); + } + } +- SvREFCNT_dec(ipad); + } + else { + STRLEN i; +@@ -1671,20 +1674,21 @@ Data_Dumper_Dumpxs(href, ...) + + if (style.indent >= 2 && !terse) { + SV * const tmpsv = sv_x(aTHX_ NULL, " ", 1, SvCUR(name)+3); +- newapad = newSVsv(apad); ++ newapad = sv_2mortal(newSVsv(apad)); + sv_catsv(newapad, tmpsv); + SvREFCNT_dec(tmpsv); + } + else + newapad = apad; + ++ ENTER; ++ SAVETMPS; + PUTBACK; + DD_dump(aTHX_ val, SvPVX_const(name), SvCUR(name), valstr, seenhv, + postav, 0, newapad, &style); + SPAGAIN; +- +- if (style.indent >= 2 && !terse) +- SvREFCNT_dec(newapad); ++ FREETMPS; ++ LEAVE; + + postlen = av_len(postav); + if (postlen >= 0 || !terse) { +-- +2.25.4 + diff --git a/SOURCES/Data-Dumper-2.173-Data-Dumper-avoid-leak-on-croak.patch b/SOURCES/Data-Dumper-2.173-Data-Dumper-avoid-leak-on-croak.patch new file mode 100644 index 0000000..e570009 --- /dev/null +++ b/SOURCES/Data-Dumper-2.173-Data-Dumper-avoid-leak-on-croak.patch @@ -0,0 +1,167 @@ +From d9c4b4ae5a1a17347ff5e3ecbf8e1d9da481f476 Mon Sep 17 00:00:00 2001 +From: David Mitchell +Date: Wed, 3 Apr 2019 13:23:24 +0100 +Subject: [PATCH] Data::Dumper - avoid leak on croak +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +v5.21.3-742-g19be3be696 added a facility to Dumper.xs to croak if the +recursion level became too deep (1000 by default). + +The trouble with this is that various parts of DD_dump() allocate +temporary SVs and buffers, which will leak if DD_dump() unceremoniously +just croaks(). + +This currently manifests as dist/Data-Dumper/t/recurse.t failing under +Address Sanitiser. + +This commit makes the depth checking code just set a sticky 'too deep' +boolean flag, and +a) on entry, DD_dump() just returns immediately if the flag is set; +b) the flag is checked by the top-level called of DD_dump() and croaks +if set. + +So the net effect is to defer croaking until the dump is complete, +and avoid any further recursion once the flag is set. + +This is a bit of a quick fix. More long-term solutions would be to +convert DD_dump() to be iterative rather than recursive, and/or make +sure all temporary SVs and buffers are suitably anchored somewhere so +that they get cleaned up on croak. + +Petr Písař: Ported from 6d65cb5d847ac93680949c4fa02111808207fbdc in +perl git tree. + +Signed-off-by: Petr Písař +--- + Dumper.pm | 6 +++--- + Dumper.xs | 27 ++++++++++++++++++++------- + 2 files changed, 23 insertions(+), 10 deletions(-) + +diff --git a/Dumper.pm b/Dumper.pm +index 40aeb7d..06af4c4 100644 +--- a/Dumper.pm ++++ b/Dumper.pm +@@ -10,7 +10,7 @@ + package Data::Dumper; + + BEGIN { +- $VERSION = '2.173'; # Don't forget to set version and release ++ $VERSION = '2.174'; # Don't forget to set version and release + } # date in POD below! + + #$| = 1; +@@ -1461,13 +1461,13 @@ be to use the C filter of Data::Dumper. + + Gurusamy Sarathy gsar@activestate.com + +-Copyright (c) 1996-2017 Gurusamy Sarathy. All rights reserved. ++Copyright (c) 1996-2019 Gurusamy Sarathy. All rights reserved. + This program is free software; you can redistribute it and/or + modify it under the same terms as Perl itself. + + =head1 VERSION + +-Version 2.173 ++Version 2.174 + + =head1 SEE ALSO + +diff --git a/Dumper.xs b/Dumper.xs +index 7f0b027..a324cb6 100644 +--- a/Dumper.xs ++++ b/Dumper.xs +@@ -61,9 +61,10 @@ + #endif + + /* This struct contains almost all the user's desired configuration, and it +- * is treated as constant by the recursive function. This arrangement has +- * the advantage of needing less memory than passing all of them on the +- * stack all the time (as was the case in an earlier implementation). */ ++ * is treated as mostly constant (except for maxrecursed) by the recursive ++ * function. This arrangement has the advantage of needing less memory ++ * than passing all of them on the stack all the time (as was the case in ++ * an earlier implementation). */ + typedef struct { + SV *pad; + SV *xpad; +@@ -74,6 +75,7 @@ typedef struct { + SV *toaster; + SV *bless; + IV maxrecurse; ++ bool maxrecursed; /* at some point we exceeded the maximum recursion level */ + I32 indent; + I32 purity; + I32 deepcopy; +@@ -97,7 +99,7 @@ static bool safe_decimal_number(const char *p, STRLEN len); + static SV *sv_x (pTHX_ SV *sv, const char *str, STRLEN len, I32 n); + static I32 DD_dump (pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, + HV *seenhv, AV *postav, const I32 level, SV *apad, +- const Style *style); ++ Style *style); + + #ifndef HvNAME_get + #define HvNAME_get HvNAME +@@ -615,7 +617,7 @@ deparsed_output(pTHX_ SV *val) + */ + static I32 + DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, +- AV *postav, const I32 level, SV *apad, const Style *style) ++ AV *postav, const I32 level, SV *apad, Style *style) + { + char tmpbuf[128]; + Size_t i; +@@ -642,6 +644,9 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + if (!val) + return 0; + ++ if (style->maxrecursed) ++ return 0; ++ + /* If the output buffer has less than some arbitrary amount of space + remaining, then enlarge it. For the test case (25M of output), + *1.1 was slower, *2.0 was the same, so the first guess of 1.5 is +@@ -793,7 +798,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, + } + + if (style->maxrecurse > 0 && level >= style->maxrecurse) { +- croak("Recursion limit of %" IVdf " exceeded", style->maxrecurse); ++ style->maxrecursed = TRUE; + } + + if (realpack && !no_bless) { /* we have a blessed ref */ +@@ -1528,6 +1533,7 @@ Data_Dumper_Dumpxs(href, ...) + style.indent = 2; + style.quotekeys = 1; + style.maxrecurse = 1000; ++ style.maxrecursed = FALSE; + style.purity = style.deepcopy = style.useqq = style.maxdepth + = style.use_sparse_seen_hash = style.trailingcomma = 0; + style.pad = style.xpad = style.sep = style.pair = style.sortkeys +@@ -1675,7 +1681,7 @@ Data_Dumper_Dumpxs(href, ...) + DD_dump(aTHX_ val, SvPVX_const(name), SvCUR(name), valstr, seenhv, + postav, 0, newapad, &style); + SPAGAIN; +- ++ + if (style.indent >= 2 && !terse) + SvREFCNT_dec(newapad); + +@@ -1715,6 +1721,13 @@ Data_Dumper_Dumpxs(href, ...) + } + SvREFCNT_dec(postav); + SvREFCNT_dec(valstr); ++ ++ /* we defer croaking until here so that temporary SVs and ++ * buffers won't be leaked */ ++ if (style.maxrecursed) ++ croak("Recursion limit of %" IVdf " exceeded", ++ style.maxrecurse); ++ + } + else + croak("Call to new() method failed to return HASH ref"); +-- +2.20.1 + diff --git a/SOURCES/Data-Dumper-2.173-Data-Dumper-don-t-leak-the-working-retval.patch b/SOURCES/Data-Dumper-2.173-Data-Dumper-don-t-leak-the-working-retval.patch new file mode 100644 index 0000000..3b8204f --- /dev/null +++ b/SOURCES/Data-Dumper-2.173-Data-Dumper-don-t-leak-the-working-retval.patch @@ -0,0 +1,56 @@ +From 65ec73b1bc79648a2daeb494552ce0b0b90348d7 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Mon, 10 Aug 2020 16:26:30 +1000 +Subject: [PATCH 1/3] Data::Dumper: don't leak the working retval +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +do this by mortalizing the SV on creation, rather than when we +push it on the stack + +Petr Písař: Ported to Data-Dumper-2.173 from +41463160be4baa0d81d9d8297508a1b9bdcaa206 perl commit. + +Signed-off-by: Petr Písař +--- + Dumper.xs | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Dumper.xs b/Dumper.xs +index a324cb6..f91145a 100644 +--- a/Dumper.xs ++++ b/Dumper.xs +@@ -1541,7 +1541,7 @@ Data_Dumper_Dumpxs(href, ...) + seenhv = NULL; + name = sv_newmortal(); + +- retval = newSVpvs(""); ++ retval = newSVpvs_flags("", SVs_TEMP); + if (SvROK(href) + && (hv = (HV*)SvRV((SV*)href)) + && SvTYPE(hv) == SVt_PVHV) { +@@ -1714,9 +1714,9 @@ Data_Dumper_Dumpxs(href, ...) + } + SvPVCLEAR(valstr); + if (gimme == G_ARRAY) { +- XPUSHs(sv_2mortal(retval)); ++ XPUSHs(retval); + if (i < imax) /* not the last time thro ? */ +- retval = newSVpvs(""); ++ retval = newSVpvs_flags("", SVs_TEMP); + } + } + SvREFCNT_dec(postav); +@@ -1732,7 +1732,7 @@ Data_Dumper_Dumpxs(href, ...) + else + croak("Call to new() method failed to return HASH ref"); + if (gimme != G_ARRAY) +- XPUSHs(sv_2mortal(retval)); ++ XPUSHs(retval); + } + + SV * +-- +2.25.4 + diff --git a/SOURCES/Data-Dumper-2.173-make-postav-and-valstr-mortal-so-they-re-freed-sooni.patch b/SOURCES/Data-Dumper-2.173-make-postav-and-valstr-mortal-so-they-re-freed-sooni.patch new file mode 100644 index 0000000..f203266 --- /dev/null +++ b/SOURCES/Data-Dumper-2.173-make-postav-and-valstr-mortal-so-they-re-freed-sooni.patch @@ -0,0 +1,53 @@ +From 21e67795792e5e1d25bcbd3b167ed18d0d6dc7b4 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Tue, 11 Aug 2020 10:46:38 +1000 +Subject: [PATCH 2/3] make postav and valstr mortal so they're freed soonish +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +these can leak if the value being dumped (or any part of it) +had get magic and that magic throws an exception. + +Several other SVs can also leak in that case, but cleaning those up +is more complex. + +Petr Písař: Ported to Data-Dumper-2.173 from +b98a3a6d08f681353d0b357fd1cce437c93656e7 perl commit. + +Signed-off-by: Petr Písař +--- + Dumper.xs | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/Dumper.xs b/Dumper.xs +index f91145a..d4b34ad 100644 +--- a/Dumper.xs ++++ b/Dumper.xs +@@ -1613,12 +1613,13 @@ Data_Dumper_Dumpxs(href, ...) + style.sortkeys = &PL_sv_yes; + } + postav = newAV(); ++ sv_2mortal((SV*)postav); + + if (todumpav) + imax = av_len(todumpav); + else + imax = -1; +- valstr = newSVpvs(""); ++ valstr = newSVpvs_flags("", SVs_TEMP); + for (i = 0; i <= imax; ++i) { + SV *newapad; + +@@ -1719,8 +1720,6 @@ Data_Dumper_Dumpxs(href, ...) + retval = newSVpvs_flags("", SVs_TEMP); + } + } +- SvREFCNT_dec(postav); +- SvREFCNT_dec(valstr); + + /* we defer croaking until here so that temporary SVs and + * buffers won't be leaked */ +-- +2.25.4 + diff --git a/SPECS/perl-Data-Dumper.spec b/SPECS/perl-Data-Dumper.spec new file mode 100644 index 0000000..939e8fa --- /dev/null +++ b/SPECS/perl-Data-Dumper.spec @@ -0,0 +1,283 @@ +%global base_version 2.173 + +Name: perl-Data-Dumper +Version: 2.174 +Release: 462%{?dist} +Summary: Stringify perl data structures, suitable for printing and eval +License: GPL+ or Artistic +URL: https://metacpan.org/release/Data-Dumper +Source0: https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX/Data-Dumper-%{base_version}.tar.gz +# Fix a memory leak when croaking about a too deep recursion, +# fixed in perl after 5.29.9 +Patch0: Data-Dumper-2.173-Data-Dumper-avoid-leak-on-croak.patch +# 1/3 Fix a memory leak when a magic throws an exception, +# fixed in perl after 5.33.0 +Patch1: Data-Dumper-2.173-Data-Dumper-don-t-leak-the-working-retval.patch +# 2/3 Fix a memory leak when a magic throws an exception, +# fixed in perl after 5.33.0 +Patch2: Data-Dumper-2.173-make-postav-and-valstr-mortal-so-they-re-freed-sooni.patch +# 3/3 Fix a memory leak when a magic throws an exception, +# fixed in perl after 5.33.0 +Patch3: Data-Dumper-2.173-Data-Dumper-XS-use-mortals-to-prevent-leaks-if-magic.patch +BuildRequires: findutils +BuildRequires: gcc +BuildRequires: make +BuildRequires: perl-devel +BuildRequires: perl-generators +BuildRequires: perl-interpreter +BuildRequires: perl(ExtUtils::MakeMaker) >= 6.76 +BuildRequires: perl(File::Copy) +BuildRequires: perl(strict) +# perl-Test-Simple is in cycle with perl-Data-Dumper +%if !%{defined perl_bootstrap} +# Run-time: +BuildRequires: perl(B::Deparse) +BuildRequires: perl(bytes) +BuildRequires: perl(Carp) +BuildRequires: perl(constant) +BuildRequires: perl(Exporter) +BuildRequires: perl(Scalar::Util) +BuildRequires: perl(XSLoader) +# Tests only: +BuildRequires: perl(Config) +BuildRequires: perl(if) +BuildRequires: perl(lib) +BuildRequires: perl(overload) +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-%{base_version} +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 + +%build +perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1 OPTIMIZE="$RPM_OPT_FLAGS" +%{make_build} + +%install +%{make_install} +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 +* Mon Aug 09 2021 Mohan Boddu - 2.174-462 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Fri Apr 16 2021 Mohan Boddu - 2.174-461 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Wed Jan 27 2021 Fedora Release Engineering - 2.174-460 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Thu Aug 20 2020 Petr Pisar - 2.174-459 +- Fix a memory leak when a magic throws an exception + +* Tue Jul 28 2020 Fedora Release Engineering - 2.174-458 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jun 26 2020 Jitka Plesnikova - 2.174-457 +- Perl 5.32 re-rebuild of bootstrapped packages + +* Mon Jun 22 2020 Jitka Plesnikova - 2.174-456 +- Increase release to favour standalone package + +* Tue Feb 04 2020 Petr Pisar - 2.174-443 +- Modernize the spec file + +* Tue Feb 04 2020 Tom Stellard - 2.174-442 +- Use make_build macro +- https://docs.fedoraproject.org/en-US/packaging-guidelines/#_parallel_make + +* Wed Jan 29 2020 Fedora Release Engineering - 2.174-441 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jul 26 2019 Fedora Release Engineering - 2.174-440 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sun Jun 02 2019 Jitka Plesnikova - 2.174-439 +- Perl 5.30 re-rebuild of bootstrapped packages + +* Thu May 30 2019 Jitka Plesnikova - 2.174-438 +- Increase release to favour standalone package + +* Fri Apr 26 2019 Jitka Plesnikova - 2.174-1 +- Update version to 2.174 as provided in perl-5.29.10 + +* Wed Apr 03 2019 Petr Pisar - 2.173-3 +- Fix a memory leak when croaking about a too deep recursion + +* Fri Feb 01 2019 Fedora Release Engineering - 2.173-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Nov 12 2018 Petr Pisar - 2.173-1 +- 2.173 bump + +* Thu Sep 20 2018 Jitka Plesnikova - 2.172-1 +- 2.172 bump + +* Fri Jul 13 2018 Fedora Release Engineering - 2.170-418 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Sat Jun 30 2018 Jitka Plesnikova - 2.170-417 +- Perl 5.28 re-rebuild of bootstrapped packages + +* Wed Jun 27 2018 Jitka Plesnikova - 2.170-416 +- Increase release to favour standalone package + +* Wed May 23 2018 Jitka Plesnikova - 2.170-1 +- Upgrade to 2.170 as provided in perl-5.28.0-RC1 + +* Thu Feb 08 2018 Fedora Release Engineering - 2.167-399 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Jan 11 2018 Petr Pisar - 2.167-398 +- Fix postentry for quoted glob (bug #1532524) + +* Tue Dec 05 2017 Petr Pisar - 2.167-397 +- Fix quoting glob names (RT#119831) + +* Thu Aug 03 2017 Fedora Release Engineering - 2.167-396 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 2.167-395 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jun 07 2017 Jitka Plesnikova - 2.167-394 +- Perl 5.26 re-rebuild of bootstrapped packages + +* Sat Jun 03 2017 Jitka Plesnikova - 2.167-393 +- Perl 5.26 rebuild + +* Thu May 11 2017 Petr Pisar - 2.167-1 +- Upgrade to 2.167 as provided in perl-5.25.12 + +* 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.