commit a1ee6b292faac5336d13698985501a04bf09a663 Author: MSVSphere Packaging Team Date: Tue Nov 26 18:10:22 2024 +0300 import perl-threads-shared-1.69-510.el10 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3632a6f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/threads-shared-1.59.tar.gz diff --git a/.perl-threads-shared.metadata b/.perl-threads-shared.metadata new file mode 100644 index 0000000..3d507a1 --- /dev/null +++ b/.perl-threads-shared.metadata @@ -0,0 +1 @@ +ae80152e37290e7a85890d0180f964cb5a01f4c1 SOURCES/threads-shared-1.59.tar.gz diff --git a/SOURCES/threads-shared-1.59-Upgrade-to-1.60.patch b/SOURCES/threads-shared-1.59-Upgrade-to-1.60.patch new file mode 100644 index 0000000..df777f9 --- /dev/null +++ b/SOURCES/threads-shared-1.59-Upgrade-to-1.60.patch @@ -0,0 +1,110 @@ +From 2ec58402d05eb12d0b9387963941f1e445d9aa5b Mon Sep 17 00:00:00 2001 +From: Jitka Plesnikova +Date: Fri, 26 Apr 2019 15:00:30 +0200 +Subject: [PATCH] Upgrade to 1.60 + +--- + lib/threads/shared.pm | 4 ++-- + shared.xs | 39 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 41 insertions(+), 2 deletions(-) + +diff --git a/lib/threads/shared.pm b/lib/threads/shared.pm +index f7e5ff8..45ad154 100644 +--- a/lib/threads/shared.pm ++++ b/lib/threads/shared.pm +@@ -8,7 +8,7 @@ use Config; + + use Scalar::Util qw(reftype refaddr blessed); + +-our $VERSION = '1.59'; # Please update the pod, too. ++our $VERSION = '1.60'; # Please update the pod, too. + my $XS_VERSION = $VERSION; + $VERSION = eval $VERSION; + +@@ -196,7 +196,7 @@ threads::shared - Perl extension for sharing data structures between threads + + =head1 VERSION + +-This document describes threads::shared version 1.59 ++This document describes threads::shared version 1.60 + + =head1 SYNOPSIS + +diff --git a/shared.xs b/shared.xs +index d0f7d1e..6cdf094 100644 +--- a/shared.xs ++++ b/shared.xs +@@ -115,6 +115,17 @@ + * without the prefix (e.g., sv, tmp or obj). + */ + ++/* this is lower overhead than warn() and less likely to interfere ++ with other parts of perl (like with the debugger.) ++*/ ++#ifdef SHARED_TRACE_LOCKS ++# define TRACE_LOCK(x) DEBUG_U(x) ++# define TRACE_LOCKv(x) DEBUG_Uv(x) ++#else ++# define TRACE_LOCK(x) ++# define TRACE_LOCKv(x) ++#endif ++ + #define PERL_NO_GET_CONTEXT + #include "EXTERN.h" + #include "perl.h" +@@ -211,8 +222,24 @@ recursive_lock_release(pTHX_ recursive_lock_t *lock) + if (--lock->locks == 0) { + lock->owner = NULL; + COND_SIGNAL(&lock->cond); ++ TRACE_LOCK( ++ PerlIO_printf(Perl_debug_log, "shared lock released %p for %p at %s:%d\n", ++ lock, aTHX, CopFILE(PL_curcop), CopLINE(PL_curcop)) ++ ); ++ } ++ else { ++ TRACE_LOCKv( ++ PerlIO_printf(Perl_debug_log, "shared lock unbump %p for %p at %s:%d\n", ++ lock, aTHX, CopFILE(PL_curcop), CopLINE(PL_curcop)) ++ ); + } + } ++ else { ++ TRACE_LOCK( ++ PerlIO_printf(Perl_debug_log, "bad shared lock release %p for %p (owned by %p) at %s:%d\n", ++ lock, aTHX, lock->owner, CopFILE(PL_curcop), CopLINE(PL_curcop)) ++ ); ++ } + MUTEX_UNLOCK(&lock->mutex); + } + +@@ -224,8 +251,16 @@ recursive_lock_acquire(pTHX_ recursive_lock_t *lock, const char *file, int line) + assert(aTHX); + MUTEX_LOCK(&lock->mutex); + if (lock->owner == aTHX) { ++ TRACE_LOCKv( ++ PerlIO_printf(Perl_debug_log, "shared lock bump %p (%p) at %s:%d\n", ++ lock, lock->owner, CopFILE(PL_curcop), CopLINE(PL_curcop)) ++ ); + lock->locks++; + } else { ++ TRACE_LOCK( ++ PerlIO_printf(Perl_debug_log, "shared lock try %p for %p (owned by %p) at %s:%d\n", ++ lock, aTHX, lock->owner, CopFILE(PL_curcop), CopLINE(PL_curcop)) ++ ); + while (lock->owner) { + #ifdef DEBUG_LOCKS + Perl_warn(aTHX_ " %p waiting - owned by %p %s:%d\n", +@@ -233,6 +268,10 @@ recursive_lock_acquire(pTHX_ recursive_lock_t *lock, const char *file, int line) + #endif + COND_WAIT(&lock->cond,&lock->mutex); + } ++ TRACE_LOCK( ++ PerlIO_printf(Perl_debug_log, "shared lock got %p at %s:%d\n", ++ lock, CopFILE(PL_curcop), CopLINE(PL_curcop)) ++ ); + lock->locks = 1; + lock->owner = aTHX; + #ifdef DEBUG_LOCKS +-- +2.20.1 + diff --git a/SOURCES/threads-shared-1.59-Upgrade-to-1.61.patch b/SOURCES/threads-shared-1.59-Upgrade-to-1.61.patch new file mode 100644 index 0000000..72e576b --- /dev/null +++ b/SOURCES/threads-shared-1.59-Upgrade-to-1.61.patch @@ -0,0 +1,57 @@ +From c48ee9c79eb7c4a36b7758fc4c3209ca0e5d759b Mon Sep 17 00:00:00 2001 +From: Jitka Plesnikova +Date: Tue, 21 Apr 2020 12:52:31 +0200 +Subject: [PATCH] Upgrade to 1.61 + +--- + lib/threads/shared.pm | 4 ++-- + t/stress.t | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/lib/threads/shared.pm b/lib/threads/shared.pm +index 45ad154..bd0e437 100644 +--- a/lib/threads/shared.pm ++++ b/lib/threads/shared.pm +@@ -8,7 +8,7 @@ use Config; + + use Scalar::Util qw(reftype refaddr blessed); + +-our $VERSION = '1.60'; # Please update the pod, too. ++our $VERSION = '1.61'; # Please update the pod, too. + my $XS_VERSION = $VERSION; + $VERSION = eval $VERSION; + +@@ -196,7 +196,7 @@ threads::shared - Perl extension for sharing data structures between threads + + =head1 VERSION + +-This document describes threads::shared version 1.60 ++This document describes threads::shared version 1.61 + + =head1 SYNOPSIS + +diff --git a/t/stress.t b/t/stress.t +index 1dd95e3..ccdeb0e 100644 +--- a/t/stress.t ++++ b/t/stress.t +@@ -12,7 +12,7 @@ BEGIN { + exit(0); + } + +- # http://lists.alioth.debian.org/pipermail/perl-maintainers/2011-June/002285.html ++ # https://lists.alioth.debian.org/pipermail/perl-maintainers/2011-June/002285.html + # There _is_ TLS support on m68k, but this stress test is overwhelming + # for the hardware + if ($^O eq 'linux' && $Config{archname} =~ /^m68k/) { +@@ -179,7 +179,7 @@ use threads::shared; + } elsif ($timeouts) { + # Frequently fails under MSWin32 due to deadlocking bug in Windows + # hence test is TODO under MSWin32 +- # http://rt.perl.org/rt3/Public/Bug/Display.html?id=41574 ++ # https://rt.perl.org/rt3/Public/Bug/Display.html?id=41574 + # http://support.microsoft.com/kb/175332 + if ($^O eq 'MSWin32') { + print("not ok 1 # TODO - not reliable under MSWin32\n") +-- +2.21.1 + diff --git a/SOURCES/threads-shared-1.60-threads-shared-fix-leak.patch b/SOURCES/threads-shared-1.60-threads-shared-fix-leak.patch new file mode 100644 index 0000000..5c0b310 --- /dev/null +++ b/SOURCES/threads-shared-1.60-threads-shared-fix-leak.patch @@ -0,0 +1,57 @@ +From b52cdd7a8525325deba04554d8a00a578c397d56 Mon Sep 17 00:00:00 2001 +From: David Mitchell +Date: Thu, 11 Jul 2019 15:17:48 +0100 +Subject: [PATCH] threads::shared: fix leak +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When assigning a shared reference value to a variable containing a +shared string, the PV buffer in the shared space was leaked. For +example: + + my $s :shared = "foo"; + my $t :shared = shared_clone(\"bar"); + $s = $t; # "foo" in shared space leaked + +This was showing up as failed smokes under ASan. + +Petr Písař: Ported to 1.60 from perl commit +59c73bd3d62c5096a6f9b2e3cbe05e1ab4c158cf. + +Signed-off-by: Petr Písař +--- + shared.xs | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +diff --git a/shared.xs b/shared.xs +index 6cdf094..858c6d6 100644 +--- a/shared.xs ++++ b/shared.xs +@@ -818,12 +818,19 @@ sharedsv_scalar_store(pTHX_ SV *sv, SV *ssv) + SV *obj = SvRV(sv); + SV *sobj = Perl_sharedsv_find(aTHX_ obj); + if (sobj) { ++ SV* tmpref; + SHARED_CONTEXT; +- (void)SvUPGRADE(ssv, SVt_RV); +- sv_setsv_nomg(ssv, &PL_sv_undef); ++ /* Creating a tmp ref to sobj then assigning it to ssv ensures ++ * that any previous contents of ssv are correctly freed ++ * by sv_setsv(). Not sure if there is a better, API-legal way ++ * to achieve this */ ++ tmpref = newSV_type(SVt_RV); ++ SvRV_set(tmpref, sobj); ++ SvROK_on(tmpref); ++ SvREFCNT_inc_simple_NN(sobj); ++ sv_setsv_nomg(ssv, tmpref); ++ SvREFCNT_dec_NN(tmpref); + +- SvRV_set(ssv, SvREFCNT_inc(sobj)); +- SvROK_on(ssv); + if (SvOBJECT(sobj)) { + /* Remove any old blessing */ + SvREFCNT_dec(SvSTASH(sobj)); +-- +2.20.1 + diff --git a/SOURCES/threads-shared-1.61-Upgrade-to-1.62.patch b/SOURCES/threads-shared-1.61-Upgrade-to-1.62.patch new file mode 100644 index 0000000..553e058 --- /dev/null +++ b/SOURCES/threads-shared-1.61-Upgrade-to-1.62.patch @@ -0,0 +1,48 @@ +From 25d469721e26fbc7afd670776ae9523013e9fdf5 Mon Sep 17 00:00:00 2001 +From: Jitka Plesnikova +Date: Thu, 6 May 2021 10:38:30 +0200 +Subject: [PATCH] Upgrade to 1.62 + +--- + lib/threads/shared.pm | 4 ++-- + shared.xs | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/lib/threads/shared.pm b/lib/threads/shared.pm +index bd0e437..3674d83 100644 +--- a/lib/threads/shared.pm ++++ b/lib/threads/shared.pm +@@ -8,7 +8,7 @@ use Config; + + use Scalar::Util qw(reftype refaddr blessed); + +-our $VERSION = '1.61'; # Please update the pod, too. ++our $VERSION = '1.62'; # Please update the pod, too. + my $XS_VERSION = $VERSION; + $VERSION = eval $VERSION; + +@@ -196,7 +196,7 @@ threads::shared - Perl extension for sharing data structures between threads + + =head1 VERSION + +-This document describes threads::shared version 1.61 ++This document describes threads::shared version 1.62 + + =head1 SYNOPSIS + +diff --git a/shared.xs b/shared.xs +index 858c6d6..4931a61 100644 +--- a/shared.xs ++++ b/shared.xs +@@ -1183,7 +1183,7 @@ sharedsv_array_mg_free(pTHX_ SV *sv, MAGIC *mg) + * This is called when perl is about to access an element of + * the array - + */ +-#if PERL_VERSION >= 11 ++#if PERL_VERSION_GE(5,11,0) + static int + sharedsv_array_mg_copy(pTHX_ SV *sv, MAGIC* mg, + SV *nsv, const char *name, I32 namlen) +-- +2.30.2 + diff --git a/SOURCES/threads-shared-1.62-Upgrade-to-1.64.patch b/SOURCES/threads-shared-1.62-Upgrade-to-1.64.patch new file mode 100644 index 0000000..60b28d0 --- /dev/null +++ b/SOURCES/threads-shared-1.62-Upgrade-to-1.64.patch @@ -0,0 +1,154 @@ +From ff20adba57602ad3ae936eff6718f354d7352f1d Mon Sep 17 00:00:00 2001 +From: Jitka Plesnikova +Date: Thu, 12 May 2022 14:53:08 +0200 +Subject: [PATCH] Upgrade to 1.64 + +--- + lib/threads/shared.pm | 4 +-- + shared.xs | 23 +++++++------- + t/pod.t | 70 ------------------------------------------- + 3 files changed, 13 insertions(+), 84 deletions(-) + delete mode 100644 t/pod.t + +diff --git a/lib/threads/shared.pm b/lib/threads/shared.pm +index 3674d83..1fd2899 100644 +--- a/lib/threads/shared.pm ++++ b/lib/threads/shared.pm +@@ -8,7 +8,7 @@ use Config; + + use Scalar::Util qw(reftype refaddr blessed); + +-our $VERSION = '1.62'; # Please update the pod, too. ++our $VERSION = '1.64'; # Please update the pod, too. + my $XS_VERSION = $VERSION; + $VERSION = eval $VERSION; + +@@ -196,7 +196,7 @@ threads::shared - Perl extension for sharing data structures between threads + + =head1 VERSION + +-This document describes threads::shared version 1.62 ++This document describes threads::shared version 1.64 + + =head1 SYNOPSIS + +diff --git a/shared.xs b/shared.xs +index 4931a61..6a7f03c 100644 +--- a/shared.xs ++++ b/shared.xs +@@ -824,10 +824,7 @@ sharedsv_scalar_store(pTHX_ SV *sv, SV *ssv) + * that any previous contents of ssv are correctly freed + * by sv_setsv(). Not sure if there is a better, API-legal way + * to achieve this */ +- tmpref = newSV_type(SVt_RV); +- SvRV_set(tmpref, sobj); +- SvROK_on(tmpref); +- SvREFCNT_inc_simple_NN(sobj); ++ tmpref = newRV_inc(sobj); + sv_setsv_nomg(ssv, tmpref); + SvREFCNT_dec_NN(tmpref); + +@@ -1296,14 +1293,16 @@ static void + Perl_sharedsv_init(pTHX) + { + dTHXc; +- PL_sharedsv_space = perl_alloc(); +- perl_construct(PL_sharedsv_space); +- /* The pair above leaves us in shared context (what dTHX would get), +- * but aTHX still points to caller context */ +- aTHX = PL_sharedsv_space; +- LEAVE; /* This balances the ENTER at the end of perl_construct. */ +- PERL_SET_CONTEXT((aTHX = caller_perl)); +- recursive_lock_init(aTHX_ &PL_sharedsv_lock); ++ if (!PL_sharedsv_space) { ++ PL_sharedsv_space = perl_alloc(); ++ perl_construct(PL_sharedsv_space); ++ /* The pair above leaves us in shared context (what dTHX would get), ++ * but aTHX still points to caller context */ ++ aTHX = PL_sharedsv_space; ++ LEAVE; /* This balances the ENTER at the end of perl_construct. */ ++ PERL_SET_CONTEXT((aTHX = caller_perl)); ++ recursive_lock_init(aTHX_ &PL_sharedsv_lock); ++ } + PL_lockhook = &Perl_sharedsv_locksv; + PL_sharehook = &Perl_sharedsv_share; + #ifdef PL_destroyhook +diff --git a/t/pod.t b/t/pod.t +deleted file mode 100644 +index 5d0cb42..0000000 +--- a/t/pod.t ++++ /dev/null +@@ -1,70 +0,0 @@ +-use strict; +-use warnings; +- +-use Test::More; +-if ($ENV{RUN_MAINTAINER_TESTS}) { +- plan 'tests' => 3; +-} else { +- plan 'skip_all' => 'Module maintainer tests'; +-} +- +-SKIP: { +- if (! eval 'use Test::Pod 1.26; 1') { +- skip('Test::Pod 1.26 required for testing POD', 1); +- } +- +- pod_file_ok('lib/threads/shared.pm'); +-} +- +-SKIP: { +- if (! eval 'use Test::Pod::Coverage 1.08; 1') { +- skip('Test::Pod::Coverage 1.08 required for testing POD coverage', 1); +- } +- +- pod_coverage_ok('threads::shared', +- { +- 'trustme' => [ +- ], +- 'private' => [ +- qr/^import$/, +- ] +- } +- ); +-} +- +-SKIP: { +- if (! eval 'use Test::Spelling; 1') { +- skip('Test::Spelling required for testing POD spelling', 1); +- } +- if (system('aspell help >/dev/null 2>&1')) { +- skip("'aspell' required for testing POD spelling", 1); +- } +- set_spell_cmd('aspell list --lang=en'); +- add_stopwords(); +- pod_file_spelling_ok('lib/threads/shared.pm', 'shared.pm spelling'); +- unlink("/home/$ENV{'USER'}/en.prepl", "/home/$ENV{'USER'}/en.pws"); +-} +- +-exit(0); +- +-__DATA__ +- +-Artur +-Hedden +- +-cpan +-CPAN +-CONDVAR +-LOCKVAR +-refcnt +-variable's +-destructor +-destructors +-Destructors +- +-perlfunc +-dualvar +-SV +- +-MetaCPAN +-__END__ +-- +2.34.3 + diff --git a/SOURCES/threads-shared-1.64-Upgrade-to-1.68.patch b/SOURCES/threads-shared-1.64-Upgrade-to-1.68.patch new file mode 100644 index 0000000..786e378 --- /dev/null +++ b/SOURCES/threads-shared-1.64-Upgrade-to-1.68.patch @@ -0,0 +1,90 @@ +From dca84f1765496c5beb5ac418286c588eb8c268d9 Mon Sep 17 00:00:00 2001 +From: Jitka Plesnikova +Date: Thu, 18 May 2023 19:26:24 +0200 +Subject: [PATCH] Upgrade to 1.68 + +--- + lib/threads/shared.pm | 4 ++-- + shared.xs | 21 +++++++++------------ + 2 files changed, 11 insertions(+), 14 deletions(-) + +diff --git a/lib/threads/shared.pm b/lib/threads/shared.pm +index 1fd2899..6e67acd 100644 +--- a/lib/threads/shared.pm ++++ b/lib/threads/shared.pm +@@ -8,7 +8,7 @@ use Config; + + use Scalar::Util qw(reftype refaddr blessed); + +-our $VERSION = '1.64'; # Please update the pod, too. ++our $VERSION = '1.68'; # Please update the pod, too. + my $XS_VERSION = $VERSION; + $VERSION = eval $VERSION; + +@@ -196,7 +196,7 @@ threads::shared - Perl extension for sharing data structures between threads + + =head1 VERSION + +-This document describes threads::shared version 1.64 ++This document describes threads::shared version 1.68 + + =head1 SYNOPSIS + +diff --git a/shared.xs b/shared.xs +index 6a7f03c..f78542d 100644 +--- a/shared.xs ++++ b/shared.xs +@@ -40,7 +40,7 @@ + * proxy PVLV element with attached element magic. + * + * Pointers to the shared SV are squirrelled away in the mg->mg_ptr field +- * of magic (with mg_len == 0), and in the IV2PTR(SvIV(sv)) field of tied ++ * of magic (with mg_len == 0), and in the INT2PTR(SvIV(sv)) field of tied + * object SVs. These pointers have to be hidden like this because they + * cross interpreter boundaries, and we don't want sv_clear() and friends + * following them. +@@ -130,14 +130,11 @@ + #include "EXTERN.h" + #include "perl.h" + #include "XSUB.h" +-#ifdef HAS_PPPORT_H +-# define NEED_sv_2pv_flags +-# define NEED_vnewSVpvf +-# define NEED_warner +-# define NEED_newSVpvn_flags +-# include "ppport.h" +-# include "shared.h" +-#endif ++#define NEED_sv_2pv_flags ++#define NEED_vnewSVpvf ++#define NEED_warner ++#define NEED_newSVpvn_flags ++#include "ppport.h" + + #ifndef CLANG_DIAG_IGNORE + # define CLANG_DIAG_IGNORE(x) +@@ -704,10 +701,10 @@ Perl_sharedsv_cond_timedwait(perl_cond *cond, perl_mutex *mut, double abs) + abs -= (NV)ts.tv_sec; + ts.tv_nsec = (long)(abs * 1000000000.0); + +- CLANG_DIAG_IGNORE_STMT(-Wthread-safety); ++ CLANG_DIAG_IGNORE(-Wthread-safety) + /* warning: calling function 'pthread_cond_timedwait' requires holding mutex 'mut' exclusively [-Wthread-safety-analysis] */ + switch (pthread_cond_timedwait(cond, mut, &ts)) { +- CLANG_DIAG_RESTORE_STMT; ++ CLANG_DIAG_RESTORE + + case 0: got_it = 1; break; + case ETIMEDOUT: break; +@@ -1145,7 +1142,7 @@ sharedsv_array_mg_CLEAR(pTHX_ SV *sv, MAGIC *mg) + I32 items = isav ? AvFILLp((AV *)ssv) + 1 : 0; + HE *iter; + if (!isav) hv_iterinit((HV *)ssv); +- while (isav ? items-- : !!(iter = hv_iternext((HV *)ssv))) { ++ while (isav ? items-- : cBOOL(iter = hv_iternext((HV *)ssv))) { + SV *sv = isav ? *svp++ : HeVAL(iter); + if (!sv) continue; + if ( (SvOBJECT(sv) || (SvROK(sv) && (sv = SvRV(sv)))) +-- +2.40.1 + diff --git a/SOURCES/threads-shared-1.68-Upgrade-to-1.69.patch b/SOURCES/threads-shared-1.68-Upgrade-to-1.69.patch new file mode 100644 index 0000000..14f25ba --- /dev/null +++ b/SOURCES/threads-shared-1.68-Upgrade-to-1.69.patch @@ -0,0 +1,39 @@ +From 19d50c0cc8db9e17816d8f9ee2bc89968ec4ffc2 Mon Sep 17 00:00:00 2001 +From: Jitka Plesnikova +Date: Thu, 9 May 2024 16:16:42 +0200 +Subject: [PATCH] Upgrade to 1.69 + +--- + lib/threads/shared.pm | 2 +- + shared.xs | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/threads/shared.pm b/lib/threads/shared.pm +index 6e67acd..fef27ab 100644 +--- a/lib/threads/shared.pm ++++ b/lib/threads/shared.pm +@@ -8,7 +8,7 @@ use Config; + + use Scalar::Util qw(reftype refaddr blessed); + +-our $VERSION = '1.68'; # Please update the pod, too. ++our $VERSION = '1.69'; # Please update the pod, too. + my $XS_VERSION = $VERSION; + $VERSION = eval $VERSION; + +diff --git a/shared.xs b/shared.xs +index f78542d..938f963 100644 +--- a/shared.xs ++++ b/shared.xs +@@ -697,7 +697,7 @@ Perl_sharedsv_cond_timedwait(perl_cond *cond, perl_mutex *mut, double abs) + struct timespec ts; + int got_it = 0; + +- ts.tv_sec = (long)abs; ++ ts.tv_sec = (time_t)abs; + abs -= (NV)ts.tv_sec; + ts.tv_nsec = (long)(abs * 1000000000.0); + +-- +2.45.0 + diff --git a/SPECS/perl-threads-shared.spec b/SPECS/perl-threads-shared.spec new file mode 100644 index 0000000..132f804 --- /dev/null +++ b/SPECS/perl-threads-shared.spec @@ -0,0 +1,362 @@ +%global base_version 1.59 + +Name: perl-threads-shared +Version: 1.69 +Release: 510%{?dist} +Summary: Perl extension for sharing data structures between threads +License: GPL-1.0-or-later OR Artistic-1.0-Perl +URL: https://metacpan.org/release/threads-shared +Source0: https://cpan.metacpan.org/authors/id/J/JD/JDHEDDEN/threads-shared-%{base_version}.tar.gz +# Unbundled from perl 5.29.10 +Patch0: threads-shared-1.59-Upgrade-to-1.60.patch +# Fix a memory leak when assigning a shared reference to a shared string +# variable, in perl after 5.31.1 +Patch1: threads-shared-1.60-threads-shared-fix-leak.patch +# Unbundled from perl 5.32.0 +Patch2: threads-shared-1.59-Upgrade-to-1.61.patch +# Unbundled from perl 5.34.0 +Patch3: threads-shared-1.61-Upgrade-to-1.62.patch +# Unbundled from perl 5.35.11 +Patch4: threads-shared-1.62-Upgrade-to-1.64.patch +# Unbundled from perl 5.37.11 +Patch5: threads-shared-1.64-Upgrade-to-1.68.patch +# Unbundled from perl 5.40.0-RC1 +Patch6: threads-shared-1.68-Upgrade-to-1.69.patch +BuildRequires: coreutils +BuildRequires: findutils +BuildRequires: gcc +BuildRequires: make +BuildRequires: perl-devel +BuildRequires: perl-generators +BuildRequires: perl-interpreter +BuildRequires: perl(Config) +# Config_m not needed +BuildRequires: perl(ExtUtils::MakeMaker) >= 6.76 +BuildRequires: perl(File::Spec) +BuildRequires: perl(strict) +BuildRequires: perl(warnings) +# Run-time: +BuildRequires: perl(Carp) +BuildRequires: perl(Scalar::Util) +BuildRequires: perl(threads) >= 1.73 +BuildRequires: perl(XSLoader) +# Tests: +BuildRequires: perl(ExtUtils::testlib) +BuildRequires: perl(File::Path) +BuildRequires: perl(Test::More) +# Optional tests: +BuildRequires: perl(POSIX) +BuildRequires: perl(Time::HiRes) +# Win32 not needed +Requires: perl(Carp) +Requires: perl(threads) >= 1.73 +Requires: perl(XSLoader) + +%{?perl_default_filter} + +%description +By default, variables are private to each thread, and each newly created +thread gets a private copy of each existing variable. This module allows +you to share variables across different threads (and pseudo-forks on +Win32). It is used together with the threads module. + +%package tests +Summary: Tests for %{name} +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: perl-Test-Harness +Requires: perl(POSIX) +Requires: perl(Time::HiRes) + +%description tests +Tests from %{name}. Execute them +with "%{_libexecdir}/%{name}/test". + +%prep +%autosetup -p1 -n threads-shared-%{base_version} + +# Help generators to recognize Perl scripts +for F in t/*.t t/*pl; do + perl -i -MConfig -ple 'print $Config{startperl} if $. == 1 && !s{\A#!.*perl\b}{$Config{startperl}}' "$F" + chmod +x "$F" +done + +%build +perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1 OPTIMIZE="%{optflags}" +%{make_build} + +%install +%{make_install} +find %{buildroot} -type f -name '*.bs' -size 0 -delete +%{_fixperms} %{buildroot}/* + +# Install tests +mkdir -p %{buildroot}%{_libexecdir}/%{name} +cp -a t %{buildroot}%{_libexecdir}/%{name} +cat > %{buildroot}%{_libexecdir}/%{name}/test << 'EOF' +#!/bin/sh +cd %{_libexecdir}/%{name} && exec prove -I . -j "$(getconf _NPROCESSORS_ONLN)" +EOF +chmod +x %{buildroot}%{_libexecdir}/%{name}/test + +%check +export HARNESS_OPTIONS=j$(perl -e 'if ($ARGV[0] =~ /.*-j([0-9][0-9]*).*/) {print $1} else {print 1}' -- '%{?_smp_mflags}') +unset GIT_DIR PERL_BUILD_PACKAGING PERL_CORE PERL_RUNPERL_DEBUG \ + RUN_MAINTAINER_TESTS +make test + +%files +%doc Changes examples README +%{perl_vendorarch}/auto/threads* +%{perl_vendorarch}/threads* +%{_mandir}/man3/threads::shared* + +%files tests +%{_libexecdir}/%{name} + +%changelog +* Thu Jul 18 2024 Jitka Plesnikova - 1.69-510 +- Increase release to favour standalone package + +* Thu Jul 18 2024 Jitka Plesnikova - 1.69-503 +- Upgrade to 1.69 as provided in perl-5.40.0-RC1 + +* Mon Jun 24 2024 Troy Dawson - 1.68-503 +- Bump release for June 2024 mass rebuild + +* Thu Jan 25 2024 Fedora Release Engineering - 1.68-502 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 1.68-501 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jul 21 2023 Fedora Release Engineering - 1.68-500 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jul 11 2023 Jitka Plesnikova - 1.68-499 +- Increase release to favour standalone package + +* Thu May 18 2023 Jitka Plesnikova - 1.68-1 +- Upgrade to 1.68 as provided in perl-5.37.11 +- Package tests + +* Fri Jan 20 2023 Fedora Release Engineering - 1.64-490 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Jul 22 2022 Fedora Release Engineering - 1.64-489 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon May 30 2022 Jitka Plesnikova - 1.64-488 +- Increase release to favour standalone package + +* Thu May 12 2022 Jitka Plesnikova - 1.64-1 +- Upgrade to 1.64 as provided in perl-5.35.11 + +* Fri Jan 21 2022 Fedora Release Engineering - 1.62-479 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 1.62-478 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri May 21 2021 Jitka Plesnikova - 1.62-477 +- Upgrade to 1.62 as provided in perl-5.34.0 + +* Wed Jan 27 2021 Fedora Release Engineering - 1.61-458 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 1.61-457 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jun 22 2020 Jitka Plesnikova - 1.61-456 +- Upgrade to 1.61 as provided in perl-5.32.0 + +* Thu Jan 30 2020 Fedora Release Engineering - 1.60-441 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jul 26 2019 Fedora Release Engineering - 1.60-440 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Jul 12 2019 Petr Pisar - 1.60-439 +- Fix a memory leak when assigning a shared reference to a shared string + variable + +* Thu May 30 2019 Jitka Plesnikova - 1.60-438 +- Increase release to favour standalone package + +* Fri Apr 26 2019 Jitka Plesnikova - 1.60-1 +- Upgrade to 1.60 as provided in perl-5.29.10 + +* Sat Feb 02 2019 Fedora Release Engineering - 1.59-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Nov 30 2018 Petr Pisar - 1.59-1 +- 1.59 bump + +* Fri Jul 13 2018 Fedora Release Engineering - 1.58-417 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Jun 27 2018 Jitka Plesnikova - 1.58-416 +- Increase release to favour standalone package + +* Fri Feb 09 2018 Fedora Release Engineering - 1.58-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Jan 24 2018 Petr Pisar - 1.58-1 +- 1.58 bump + +* Thu Aug 03 2017 Fedora Release Engineering - 1.57-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1.57-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jun 07 2017 Jitka Plesnikova - 1.57-2 +- Perl 5.26 re-rebuild of bootstrapped packages + +* Mon Jun 05 2017 Petr Pisar - 1.57-1 +- 1.57 bump + +* Sat Jun 03 2017 Jitka Plesnikova - 1.56-393 +- Perl 5.26 rebuild + +* Thu May 11 2017 Petr Pisar - 1.56-1 +- Upgrade to 1.56 as provided in perl-5.25.12 + +* Fri Apr 21 2017 Petr Pisar - 1.55-2 +- Fix arenas allocation (RT#131124) + +* Mon Feb 27 2017 Petr Pisar - 1.55-1 +- 1.55 bump + +* Sat Feb 11 2017 Fedora Release Engineering - 1.54-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Jan 02 2017 Petr Pisar - 1.54-1 +- 1.54 bump + +* Wed May 18 2016 Jitka Plesnikova - 1.52-3 +- Perl 5.24 rebuild + +* Wed May 18 2016 Jitka Plesnikova - 1.52-2 +- Perl 5.24 rebuild + +* Tue May 17 2016 Petr Pisar - 1.52-1 +- 1.52 bump + +* Sat May 14 2016 Jitka Plesnikova - 1.51-365 +- Increase release to favour standalone package + +* Mon May 02 2016 Petr Pisar - 1.51-1 +- 1.51 bump + +* Thu Feb 04 2016 Fedora Release Engineering - 1.48-347 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jun 18 2015 Fedora Release Engineering - 1.48-346 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Jun 04 2015 Jitka Plesnikova - 1.48-345 +- Increase release to favour standalone package + +* Wed Jun 03 2015 Jitka Plesnikova - 1.48-341 +- Perl 5.22 rebuild + +* Tue May 05 2015 Petr Pisar - 1.48-340 +- 1.48 bump in order to dual-live with perl 5.22 + +* Wed Sep 03 2014 Jitka Plesnikova - 1.46-310 +- Increase release to favour standalone package + +* Tue Aug 26 2014 Jitka Plesnikova - 1.46-5 +- Perl 5.20 rebuild + +* Sun Aug 17 2014 Fedora Release Engineering - 1.46-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 1.46-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Feb 19 2014 Petr Pisar - 1.46-2 +- Declare optional tests + +* Wed Feb 05 2014 Petr Pisar - 1.46-1 +- 1.46 bump + +* Thu Nov 14 2013 Petr Pisar - 1.45-1 +- 1.45 bump + +* Sun Aug 04 2013 Fedora Release Engineering - 1.43-291 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jul 15 2013 Petr Pisar - 1.43-290 +- Increase release to favour standalone package + +* Fri Jul 12 2013 Petr Pisar - 1.43-5 +- Link minimal build-root packages against libperl.so explicitly + +* Tue Jul 02 2013 Jitka Plesnikova - 1.43-4 +- Remove BR perl(Test) + +* Tue Jul 02 2013 Jitka Plesnikova - 1.43-3 +- Specify all dependencies + +* Thu Feb 14 2013 Fedora Release Engineering - 1.43-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Tue Jan 15 2013 Petr Pisar - 1.43-1 +- 1.43 bump + +* Fri Nov 23 2012 Jitka Plesnikova - 1.42-2 +- Add BR perl(File::Spec) +- Replace PERL_INSTALL_ROOT with DESTDIR +- Remove deleting empty directories +- Remove defattr + +* Wed Oct 03 2012 Petr Pisar - 1.42-1 +- 1.42 bump + +* Mon Sep 10 2012 Petr Pisar - 1.41-1 +- 1.41 bump + +* Mon Aug 13 2012 Marcela Mašláňová - 1.40-240 +- bump release to override sub-package from perl.spec + +* Fri Jul 20 2012 Fedora Release Engineering - 1.40-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Jun 06 2012 Petr Pisar - 1.40-3 +- Perl 5.16 rebuild + +* Sat Jan 14 2012 Fedora Release Engineering - 1.40-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Sep 12 2011 Petr Pisar - 1.40-1 +- 1.40 bump + +* Tue Sep 06 2011 Petr Pisar - 1.39-1 +- 1.39 bump + +* Wed Aug 17 2011 Marcela Mašláňová - 1.37-3 +- change path on vendor, so our debuginfo are not conflicting with + perl core debuginfos + +* Mon Jun 20 2011 Marcela Mašláňová - 1.37-2 +- Perl mass rebuild + +* Tue Apr 26 2011 Petr Pisar - 1.37-1 +- 1.37 bump + +* Wed Feb 09 2011 Fedora Release Engineering - 1.36-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Jan 03 2011 Petr Pisar - 1.36-1 +- 1.36 bump + +* Mon Oct 11 2010 Petr Pisar - 1.34-1 +- 1.34 bump + +* Thu Sep 23 2010 Petr Pisar 1.33-1 +- Specfile autogenerated by cpanspec 1.78. +- Fix dependencies +- Requires perl(Scalar::Util) is autodetected +- Do not provide private library +- Remove pre-F12 BuildRoot stuff