diff --git a/Storable-3.21-Upgrade-to-3.23.patch b/Storable-3.21-Upgrade-to-3.23.patch new file mode 100644 index 0000000..98ce575 --- /dev/null +++ b/Storable-3.21-Upgrade-to-3.23.patch @@ -0,0 +1,416 @@ +From 90102878a84e4b4a2180a83ccaaef3a3c00bbc8a Mon Sep 17 00:00:00 2001 +From: Jitka Plesnikova +Date: Thu, 6 May 2021 09:15:58 +0200 +Subject: [PATCH] Upgrade to 3.23 + +--- + Storable.pm | 4 +-- + Storable.xs | 94 +++++++++++++++++++++++++-------------------------- + t/canonical.t | 2 +- + t/malice.t | 6 ++-- + 4 files changed, 52 insertions(+), 54 deletions(-) + +diff --git a/Storable.pm b/Storable.pm +index 1a750f1..27c9cf5 100644 +--- a/Storable.pm ++++ b/Storable.pm +@@ -28,7 +28,7 @@ our @EXPORT_OK = qw( + our ($canonical, $forgive_me); + + BEGIN { +- our $VERSION = '3.21'; ++ our $VERSION = '3.23'; + } + + our $recursion_limit; +@@ -1423,7 +1423,7 @@ Murray Nesbitt made Storable thread-safe. Marc Lehmann added overloading + and references to tied items support. Benjamin Holzman added a performance + improvement for overloaded classes; thanks to Grant Street Group for footing + the bill. +-Reini Urban took over maintainance from p5p, and added security fixes ++Reini Urban took over maintenance from p5p, and added security fixes + and huge object support. + + =head1 AUTHOR +diff --git a/Storable.xs b/Storable.xs +index 4c4c268..70dddf3 100644 +--- a/Storable.xs ++++ b/Storable.xs +@@ -16,18 +16,16 @@ + #include + #include + +-#ifndef PATCHLEVEL +-#include /* Perl's one, needed since 5.6 */ +-#endif +- +-#if !defined(PERL_VERSION) || PERL_VERSION < 10 || (PERL_VERSION == 10 && PERL_SUBVERSION < 1) +-#define NEED_PL_parser +-#define NEED_sv_2pv_flags +-#define NEED_load_module +-#define NEED_vload_module +-#define NEED_newCONSTSUB +-#define NEED_newSVpvn_flags +-#define NEED_newRV_noinc ++#ifndef PERL_VERSION_LT ++# if !defined(PERL_VERSION) || !defined(PERL_REVISION) || ( PERL_REVISION == 5 && ( PERL_VERSION < 10 || (PERL_VERSION == 10 && PERL_SUBVERSION < 1) ) ) ++# define NEED_PL_parser ++# define NEED_sv_2pv_flags ++# define NEED_load_module ++# define NEED_vload_module ++# define NEED_newCONSTSUB ++# define NEED_newSVpvn_flags ++# define NEED_newRV_noinc ++# endif + #include "ppport.h" /* handle old perls */ + #endif + +@@ -521,7 +519,7 @@ static MAGIC *THX_sv_magicext(pTHX_ + + #if defined(MULTIPLICITY) || defined(PERL_OBJECT) || defined(PERL_CAPI) + +-#if (PATCHLEVEL <= 4) && (SUBVERSION < 68) ++#if PERL_VERSION_LT(5,4,68) + #define dSTCXT_SV \ + SV *perinterp_sv = get_sv(MY_VERSION, 0) + #else /* >= perl5.004_68 */ +@@ -1012,22 +1010,22 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0}; + #define STORABLE_BIN_MAJOR 2 /* Binary major "version" */ + #define STORABLE_BIN_MINOR 11 /* Binary minor "version" */ + +-#if (PATCHLEVEL <= 5) ++#if PERL_VERSION_LT(5,6,0) + #define STORABLE_BIN_WRITE_MINOR 4 + #elif !defined (SvVOK) + /* + * Perl 5.6.0-5.8.0 can do weak references, but not vstring magic. + */ + #define STORABLE_BIN_WRITE_MINOR 8 +-#elif PATCHLEVEL >= 19 ++#elif PERL_VERSION_GE(5,19,0) + /* Perl 5.19 takes away the special meaning of PL_sv_undef in arrays. */ + /* With 3.x we added LOBJECT */ + #define STORABLE_BIN_WRITE_MINOR 11 + #else + #define STORABLE_BIN_WRITE_MINOR 9 +-#endif /* (PATCHLEVEL <= 5) */ ++#endif /* PERL_VERSION_LT(5,6,0) */ + +-#if (PATCHLEVEL < 8 || (PATCHLEVEL == 8 && SUBVERSION < 1)) ++#if PERL_VERSION_LT(5,8,1) + #define PL_sv_placeholder PL_sv_undef + #endif + +@@ -1354,7 +1352,7 @@ static U32 Sntohl(U32 x) { + * sortsv is not available ( <= 5.6.1 ). + */ + +-#if (PATCHLEVEL <= 6) ++#if PERL_VERSION_LT(5,7,0) + + #if defined(USE_ITHREADS) + +@@ -1373,12 +1371,12 @@ static U32 Sntohl(U32 x) { + + #endif /* USE_ITHREADS */ + +-#else /* PATCHLEVEL > 6 */ ++#else /* PERL >= 5.7.0 */ + + #define STORE_HASH_SORT \ + sortsv(AvARRAY(av), len, Perl_sv_cmp); + +-#endif /* PATCHLEVEL <= 6 */ ++#endif /* PERL_VERSION_LT(5,7,0) */ + + static int store(pTHX_ stcxt_t *cxt, SV *sv); + static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname); +@@ -1650,7 +1648,7 @@ static void init_store_context(pTHX_ + * + * It is reported fixed in 5.005, hence the #if. + */ +-#if PERL_VERSION >= 5 ++#if PERL_VERSION_GE(5,5,0) + #define HBUCKETS 4096 /* Buckets for %hseen */ + #ifndef USE_PTR_TABLE + HvMAX(cxt->hseen) = HBUCKETS - 1; /* keys %hseen = $HBUCKETS; */ +@@ -1667,7 +1665,7 @@ static void init_store_context(pTHX_ + + cxt->hclass = newHV(); /* Where seen classnames are stored */ + +-#if PERL_VERSION >= 5 ++#if PERL_VERSION_GE(5,5,0) + HvMAX(cxt->hclass) = HBUCKETS - 1; /* keys %hclass = $HBUCKETS; */ + #endif + +@@ -2244,7 +2242,7 @@ static AV *array_call(pTHX_ + return av; + } + +-#if PERL_VERSION < 15 ++#if PERL_VERSION_LT(5,15,0) + static void + cleanup_recursive_av(pTHX_ AV* av) { + SSize_t i = AvFILLp(av); +@@ -2252,7 +2250,7 @@ cleanup_recursive_av(pTHX_ AV* av) { + if (SvMAGICAL(av)) return; + while (i >= 0) { + if (arr[i]) { +-#if PERL_VERSION < 14 ++#if PERL_VERSION_LT(5,14,0) + arr[i] = NULL; + #else + SvREFCNT_dec(arr[i]); +@@ -2283,7 +2281,7 @@ cleanup_recursive_hv(pTHX_ HV* hv) { + } + i--; + } +-#if PERL_VERSION < 8 ++#if PERL_VERSION_LT(5,8,0) + ((XPVHV*)SvANY(hv))->xhv_array = NULL; + #else + HvARRAY(hv) = NULL; +@@ -2394,7 +2392,7 @@ static int store_ref(pTHX_ stcxt_t *cxt, SV *sv) + TRACEME((">ref recur_depth %" IVdf ", recur_sv (0x%" UVxf ") max %" IVdf, cxt->recur_depth, + PTR2UV(cxt->recur_sv), cxt->max_recur_depth)); + if (RECURSION_TOO_DEEP()) { +-#if PERL_VERSION < 15 ++#if PERL_VERSION_LT(5,15,0) + cleanup_recursive_data(aTHX_ (SV*)sv); + #endif + CROAK((MAX_DEPTH_ERROR)); +@@ -2498,7 +2496,7 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv) + /* public string - go direct to string read. */ + goto string_readlen; + } else if ( +-#if (PATCHLEVEL <= 6) ++#if PERL_VERSION_LT(5,7,0) + /* For 5.6 and earlier NV flag trumps IV flag, so only use integer + direct if NV flag is off. */ + (flags & (SVf_NOK | SVf_IOK)) == SVf_IOK +@@ -2576,7 +2574,7 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv) + */ + Zero(&nv, 1, NV_bytes); + #endif +-#if (PATCHLEVEL <= 6) ++#if PERL_VERSION_LT(5,7,0) + nv.nv = SvNV(sv); + /* + * Watch for number being an integer in disguise. +@@ -2699,7 +2697,7 @@ static int store_array(pTHX_ stcxt_t *cxt, AV *av) + if (recur_sv != (SV*)av) { + if (RECURSION_TOO_DEEP()) { + /* with <= 5.14 it recurses in the cleanup also, needing 2x stack size */ +-#if PERL_VERSION < 15 ++#if PERL_VERSION_LT(5,15,0) + cleanup_recursive_data(aTHX_ (SV*)av); + #endif + CROAK((MAX_DEPTH_ERROR)); +@@ -2717,7 +2715,7 @@ static int store_array(pTHX_ stcxt_t *cxt, AV *av) + STORE_SV_UNDEF(); + continue; + } +-#if PATCHLEVEL >= 19 ++#if PERL_VERSION_GE(5,19,0) + /* In 5.19.3 and up, &PL_sv_undef can actually be stored in + * an array; it no longer represents nonexistent elements. + * Historically, we have used SX_SV_UNDEF in arrays for +@@ -2748,7 +2746,7 @@ static int store_array(pTHX_ stcxt_t *cxt, AV *av) + } + + +-#if (PATCHLEVEL <= 6) ++#if PERL_VERSION_LT(5,7,0) + + /* + * sortcmp +@@ -2765,7 +2763,7 @@ sortcmp(const void *a, const void *b) + return sv_cmp(*(SV * const *) a, *(SV * const *) b); + } + +-#endif /* PATCHLEVEL <= 6 */ ++#endif /* PERL_VERSION_LT(5,7,0) */ + + /* + * store_hash +@@ -2861,7 +2859,7 @@ static int store_hash(pTHX_ stcxt_t *cxt, HV *hv) + ++cxt->recur_depth; + } + if (RECURSION_TOO_DEEP_HASH()) { +-#if PERL_VERSION < 15 ++#if PERL_VERSION_LT(5,15,0) + cleanup_recursive_data(aTHX_ (SV*)hv); + #endif + CROAK((MAX_DEPTH_ERROR)); +@@ -3275,7 +3273,7 @@ static int store_lhash(pTHX_ stcxt_t *cxt, HV *hv, unsigned char hash_flags) + ++cxt->recur_depth; + } + if (RECURSION_TOO_DEEP_HASH()) { +-#if PERL_VERSION < 15 ++#if PERL_VERSION_LT(5,15,0) + cleanup_recursive_data(aTHX_ (SV*)hv); + #endif + CROAK((MAX_DEPTH_ERROR)); +@@ -3311,7 +3309,7 @@ static int store_lhash(pTHX_ stcxt_t *cxt, HV *hv, unsigned char hash_flags) + */ + static int store_code(pTHX_ stcxt_t *cxt, CV *cv) + { +-#if PERL_VERSION < 6 ++#if PERL_VERSION_LT(5,6,0) + /* + * retrieve_code does not work with perl 5.005 or less + */ +@@ -3410,10 +3408,10 @@ static int store_code(pTHX_ stcxt_t *cxt, CV *cv) + #endif + } + +-#if PERL_VERSION < 8 ++#if PERL_VERSION_LT(5,8,0) + # define PERL_MAGIC_qr 'r' /* precompiled qr// regex */ + # define BFD_Svs_SMG_OR_RMG SVs_RMG +-#elif ((PERL_VERSION==8) && (PERL_SUBVERSION >= 1) || (PERL_VERSION>8)) ++#elif PERL_VERSION_GE(5,8,1) + # define BFD_Svs_SMG_OR_RMG SVs_SMG + # define MY_PLACEHOLDER PL_sv_placeholder + #else +@@ -3424,7 +3422,7 @@ static int store_code(pTHX_ stcxt_t *cxt, CV *cv) + static int get_regexp(pTHX_ stcxt_t *cxt, SV* sv, SV **re, SV **flags) { + dSP; + SV* rv; +-#if PERL_VERSION >= 12 ++#if PERL_VERSION_GE(5,12,0) + CV *cv = get_cv("re::regexp_pattern", 0); + #else + CV *cv = get_cv("Storable::_regexp_pattern", 0); +@@ -4286,7 +4284,7 @@ static int sv_type(pTHX_ SV *sv) + { + switch (SvTYPE(sv)) { + case SVt_NULL: +-#if PERL_VERSION <= 10 ++#if PERL_VERSION_LT(5,11,0) + case SVt_IV: + #endif + case SVt_NV: +@@ -4296,7 +4294,7 @@ static int sv_type(pTHX_ SV *sv) + */ + return svis_SCALAR; + case SVt_PV: +-#if PERL_VERSION <= 10 ++#if PERL_VERSION_LT(5,11,0) + case SVt_RV: + #else + case SVt_IV: +@@ -4314,7 +4312,7 @@ static int sv_type(pTHX_ SV *sv) + */ + return SvROK(sv) ? svis_REF : svis_SCALAR; + case SVt_PVMG: +-#if PERL_VERSION <= 10 ++#if PERL_VERSION_LT(5,11,0) + if ((SvFLAGS(sv) & (SVs_OBJECT|SVf_OK|SVs_GMG|SVs_SMG|SVs_RMG)) + == (SVs_OBJECT|BFD_Svs_SMG_OR_RMG) + && mg_find(sv, PERL_MAGIC_qr)) { +@@ -4327,7 +4325,7 @@ static int sv_type(pTHX_ SV *sv) + (mg_find(sv, 'p'))) + return svis_TIED_ITEM; + /* FALL THROUGH */ +-#if PERL_VERSION < 9 ++#if PERL_VERSION_LT(5,9,0) + case SVt_PVBM: + #endif + if ((SvFLAGS(sv) & (SVs_GMG|SVs_SMG|SVs_RMG)) == +@@ -4345,10 +4343,10 @@ static int sv_type(pTHX_ SV *sv) + return svis_HASH; + case SVt_PVCV: + return svis_CODE; +-#if PERL_VERSION > 8 ++#if PERL_VERSION_GE(5,9,0) + /* case SVt_INVLIST: */ + #endif +-#if PERL_VERSION > 10 ++#if PERL_VERSION_GE(5,11,0) + case SVt_REGEXP: + return svis_REGEXP; + #endif +@@ -6689,7 +6687,7 @@ static SV *retrieve_flag_hash(pTHX_ stcxt_t *cxt, const char *cname) + */ + static SV *retrieve_code(pTHX_ stcxt_t *cxt, const char *cname) + { +-#if PERL_VERSION < 6 ++#if PERL_VERSION_LT(5,6,0) + CROAK(("retrieve_code does not work with perl 5.005 or less\n")); + #else + dSP; +@@ -6817,7 +6815,7 @@ static SV *retrieve_code(pTHX_ stcxt_t *cxt, const char *cname) + } + + static SV *retrieve_regexp(pTHX_ stcxt_t *cxt, const char *cname) { +-#if PERL_VERSION >= 8 ++#if PERL_VERSION_GE(5,8,0) + int op_flags; + U32 re_len; + STRLEN flags_len; +@@ -7582,7 +7580,7 @@ static SV *do_retrieve( + + if (!sv) { + TRACEMED(("retrieve ERROR")); +-#if (PATCHLEVEL <= 4) ++#if PERL_VERSION_LT(5,5,0) + /* perl 5.00405 seems to screw up at this point with an + 'attempt to modify a read only value' error reported in the + eval { $self = pretrieve(*FILE) } in _retrieve. +@@ -7712,7 +7710,7 @@ static SV *dclone(pTHX_ SV *sv) + */ + + if ((SvTYPE(sv) == SVt_PVLV +-#if PERL_VERSION < 8 ++#if PERL_VERSION_LT(5,8,0) + || SvTYPE(sv) == SVt_PVMG + #endif + ) && (SvFLAGS(sv) & (SVs_GMG|SVs_SMG|SVs_RMG)) == +diff --git a/t/canonical.t b/t/canonical.t +index f7791ce..3b930aa 100644 +--- a/t/canonical.t ++++ b/t/canonical.t +@@ -34,7 +34,7 @@ $maxarraysize = 100; + + eval { require Digest::MD5; }; + $gotmd5 = !$@; +-diag "Will use Digest::MD5" if $gotmd5; ++note "Will use Digest::MD5" if $gotmd5; + + # Use Data::Dumper if debugging and it is available to create an ASCII dump + +diff --git a/t/malice.t b/t/malice.t +index 5888863..8adae95 100644 +--- a/t/malice.t ++++ b/t/malice.t +@@ -63,7 +63,7 @@ sub test_hash { + is (ref $clone, "HASH", "Get hash back"); + is (scalar keys %$clone, 1, "with 1 key"); + is ((keys %$clone)[0], "perl", "which is correct"); +- is ($clone->{perl}, "rules"); ++ is ($clone->{perl}, "rules", "Got expected value when looking up key in clone"); + } + + sub test_header { +@@ -238,7 +238,7 @@ sub test_things { + } + } + +-ok (defined store(\%hash, $file)); ++ok (defined store(\%hash, $file), "store() returned defined value"); + + my $expected = 20 + length ($file_magic_str) + $other_magic + $fancy; + my $length = -s $file; +@@ -266,7 +266,7 @@ test_things($stored, \&freeze_and_thaw, 'string'); + # Network order. + unlink $file or die "Can't unlink '$file': $!"; + +-ok (defined nstore(\%hash, $file)); ++ok (defined nstore(\%hash, $file), "nstore() returned defined value"); + + $expected = 20 + length ($file_magic_str) + $network_magic + $fancy; + $length = -s $file; +-- +2.30.2 + diff --git a/perl-Storable.spec b/perl-Storable.spec index e7848ac..21c4c8d 100644 --- a/perl-Storable.spec +++ b/perl-Storable.spec @@ -1,8 +1,8 @@ %global base_version 3.15 Name: perl-Storable Epoch: 1 -Version: 3.21 -Release: 458%{?dist} +Version: 3.23 +Release: 477%{?dist} Summary: Persistence for Perl data structures # Storable.pm: GPL+ or Artistic License: GPL+ or Artistic @@ -18,6 +18,9 @@ Patch1: Storable-3.16-Storable-make-count-large-enough.patch Patch2: perl-5.31.6-disallow-vstring-magic-strings-over-2GB-1.patch # Unbundled from perl 5.32.0 Patch3: Storable-3.15-Upgrade-to-3.21.patch +# Unbundled from perl 5.34.0 +Patch4: Storable-3.21-Upgrade-to-3.23.patch +BuildRequires: coreutils BuildRequires: gcc BuildRequires: make BuildRequires: perl-devel @@ -81,6 +84,7 @@ can be conveniently stored to disk and retrieved at a later time. %patch1 -p3 %patch2 -p3 %patch3 -p1 +%patch4 -p1 %build perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1 OPTIMIZE="$RPM_OPT_FLAGS" @@ -103,6 +107,9 @@ make test %{_mandir}/man3/* %changelog +* Fri May 21 2021 Jitka Plesnikova - 1:3.23-477 +- Upgrade to 3.23 as provided in perl-5.34.0 + * Wed Jan 27 2021 Fedora Release Engineering - 1:3.21-458 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild