Upgrade to 3.23 as provided in perl-5.34.0

This commit is contained in:
Jitka Plesnikova 2021-05-21 09:23:51 +02:00
parent bd312df512
commit e05859c0c0
2 changed files with 425 additions and 2 deletions

View File

@ -0,0 +1,416 @@
From 90102878a84e4b4a2180a83ccaaef3a3c00bbc8a Mon Sep 17 00:00:00 2001
From: Jitka Plesnikova <jplesnik@redhat.com>
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 <perl.h>
#include <XSUB.h>
-#ifndef PATCHLEVEL
-#include <patchlevel.h> /* 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

View File

@ -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 <jplesnik@redhat.com> - 1:3.23-477
- Upgrade to 3.23 as provided in perl-5.34.0
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.21-458
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild