From 2e68c7ff88674360311c4c0176e56c15ae42c1fa Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: May 03 2018 06:14:25 +0000 Subject: import rh-perl526-perl-DB_File-1.840-397.el7 --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4cf35ca --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/DB_File-1.840.tar.gz diff --git a/.rh-perl526-perl-DB_File.metadata b/.rh-perl526-perl-DB_File.metadata new file mode 100644 index 0000000..327f82d --- /dev/null +++ b/.rh-perl526-perl-DB_File.metadata @@ -0,0 +1 @@ +a7b62c1ba3f53bbc09d0a6a07a2f903d292e65ed SOURCES/DB_File-1.840.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/DB_File-1.838-Destroy-DB_File-objects-only-from-original-thread-co.patch b/SOURCES/DB_File-1.838-Destroy-DB_File-objects-only-from-original-thread-co.patch new file mode 100644 index 0000000..cdb51d5 --- /dev/null +++ b/SOURCES/DB_File-1.838-Destroy-DB_File-objects-only-from-original-thread-co.patch @@ -0,0 +1,180 @@ +From bfb2cb3cddffa144b521bb5dff76af1e065288ad Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Tue, 10 Jun 2014 14:28:09 +0200 +Subject: [PATCH] Destroy DB_File objects only from original thread context +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This patch fixes a crash when destroing a hash tied to a DB_File +database after spawning a thread: + +use Fcntl; +use DB_File; +use threads; +tie(my %dbtest, 'DB_File', "test.db", O_RDWR|O_CREAT, 0666); +threads->new(sub {})->join; + +This crashed or paniced depending on how perl was configured. + +Closes RT#61912. + +Signed-off-by: Petr Písař +--- + DB_File.xs | 50 +++++++++++++++++++++++++++++++------------------- + MANIFEST | 1 + + t/db-threads.t | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 78 insertions(+), 19 deletions(-) + create mode 100644 t/db-threads.t + +diff --git a/DB_File.xs b/DB_File.xs +index f417b22..ed6a904 100755 +--- a/DB_File.xs ++++ b/DB_File.xs +@@ -407,6 +407,7 @@ typedef union INFO { + + typedef struct { + DBTYPE type ; ++ tTHX owner ; + DB * dbp ; + SV * compare ; + bool in_compare ; +@@ -1006,6 +1007,7 @@ SV * sv ; + name, flags, mode, sv == NULL) ; + #endif + Zero(RETVAL, 1, DB_File_type) ; ++ RETVAL->owner = aTHX; + + /* Default to HASH */ + RETVAL->filtering = 0 ; +@@ -1278,6 +1280,7 @@ SV * sv ; + + /* printf("In ParseOpenInfo name=[%s] flags=[%d] mode = [%d]\n", name, flags, mode) ; */ + Zero(RETVAL, 1, DB_File_type) ; ++ RETVAL->owner = aTHX; + + /* Default to HASH */ + RETVAL->filtering = 0 ; +@@ -1597,27 +1600,36 @@ db_DESTROY(db) + INIT: + CurrentDB = db ; + Trace(("DESTROY %p\n", db)); +- CLEANUP: +- Trace(("DESTROY %p done\n", db)); +- if (db->hash) +- SvREFCNT_dec(db->hash) ; +- if (db->compare) +- SvREFCNT_dec(db->compare) ; +- if (db->prefix) +- SvREFCNT_dec(db->prefix) ; +- if (db->filter_fetch_key) +- SvREFCNT_dec(db->filter_fetch_key) ; +- if (db->filter_store_key) +- SvREFCNT_dec(db->filter_store_key) ; +- if (db->filter_fetch_value) +- SvREFCNT_dec(db->filter_fetch_value) ; +- if (db->filter_store_value) +- SvREFCNT_dec(db->filter_store_value) ; +- safefree(db) ; ++ CODE: ++ RETVAL = 0; ++ if (db && db->owner == aTHX) { ++ RETVAL = db_DESTROY(db); + #ifdef DB_VERSION_MAJOR +- if (RETVAL > 0) +- RETVAL = -1 ; ++ if (RETVAL > 0) ++ RETVAL = -1 ; + #endif ++ } ++ OUTPUT: ++ RETVAL ++ CLEANUP: ++ Trace(("DESTROY %p done\n", db)); ++ if (db && db->owner == aTHX) { ++ if (db->hash) ++ SvREFCNT_dec(db->hash) ; ++ if (db->compare) ++ SvREFCNT_dec(db->compare) ; ++ if (db->prefix) ++ SvREFCNT_dec(db->prefix) ; ++ if (db->filter_fetch_key) ++ SvREFCNT_dec(db->filter_fetch_key) ; ++ if (db->filter_store_key) ++ SvREFCNT_dec(db->filter_store_key) ; ++ if (db->filter_fetch_value) ++ SvREFCNT_dec(db->filter_fetch_value) ; ++ if (db->filter_store_value) ++ SvREFCNT_dec(db->filter_store_value) ; ++ safefree(db) ; ++ } + + + int +diff --git a/MANIFEST b/MANIFEST +index e460e81..47f43f7 100644 +--- a/MANIFEST ++++ b/MANIFEST +@@ -27,6 +27,7 @@ t/db-btree.t + t/db-hash.t + t/db-recno.t + t/pod.t ++t/db-threads.t + typemap + version.c + META.yml Module meta-data (added by MakeMaker) +diff --git a/t/db-threads.t b/t/db-threads.t +new file mode 100644 +index 0000000..b9f69b6 +--- /dev/null ++++ b/t/db-threads.t +@@ -0,0 +1,46 @@ ++#!./perl ++ ++use warnings; ++use strict; ++use Config; ++use Fcntl; ++use Test::More; ++use DB_File; ++ ++if (-d "lib" && -f "TEST") { ++ if ($Config{'extensions'} !~ /\bDB_File\b/ ) { ++ plan skip_all => 'DB_File was not built'; ++ } ++} ++plan skip_all => 'Threads are disabled' ++ unless $Config{usethreads}; ++ ++plan tests => 7; ++ ++# Check DBM back-ends do not destroy objects from then-spawned threads. ++# RT#61912. ++use_ok('threads'); ++ ++my %h; ++unlink ; ++ ++my $db = tie %h, 'DB_File', 'threads', O_RDWR|O_CREAT, 0640; ++isa_ok($db, 'DB_File'); ++ ++for (1 .. 2) { ++ ok(threads->create( ++ sub { ++ $SIG{'__WARN__'} = sub { fail(shift) }; # debugging perl panics ++ # report it by spurious TAP line ++ 1; ++ }), "Thread $_ created"); ++} ++for (threads->list) { ++ is($_->join, 1, "A thread exited successfully"); ++} ++ ++pass("Tied object survived exiting threads"); ++ ++undef $db; ++untie %h; ++unlink ; +-- +2.5.5 + diff --git a/SPECS/perl-DB_File.spec b/SPECS/perl-DB_File.spec new file mode 100644 index 0000000..536f18a --- /dev/null +++ b/SPECS/perl-DB_File.spec @@ -0,0 +1,183 @@ +%{?scl:%scl_package perl-DB_File} + +# Run optional test +%bcond_without perl_DB_File_enables_optional_test + +Name: %{?scl_prefix}perl-DB_File +Version: 1.840 +Release: 397%{?dist} +Summary: Perl5 access to Berkeley DB version 1.x +License: GPL+ or Artistic +Group: Development/Libraries +URL: http://search.cpan.org/dist/DB_File/ +Source0: http://www.cpan.org/authors/id/P/PM/PMQS/DB_File-%{version}.tar.gz +# Destroy DB_File objects only from original thread context, bug #1107732, +# CPAN RT#96357 +Patch0: DB_File-1.838-Destroy-DB_File-objects-only-from-original-thread-co.patch +BuildRequires: coreutils +BuildRequires: findutils +BuildRequires: libdb-devel +BuildRequires: %{?scl_prefix}perl-interpreter +BuildRequires: %{?scl_prefix}perl-devel +BuildRequires: %{?scl_prefix}perl-generators +BuildRequires: %{?scl_prefix}perl(Config) +BuildRequires: %{?scl_prefix}perl(ExtUtils::Constant) +BuildRequires: %{?scl_prefix}perl(ExtUtils::MakeMaker) >= 5.16 +# File::Copy not needed if ExtUtils::Constant is available +BuildRequires: %{?scl_prefix}perl(strict) +# Run-time: +BuildRequires: %{?scl_prefix}perl(Carp) +# DynaLoader not needed if XSLoader is available +BuildRequires: %{?scl_prefix}perl(Exporter) +BuildRequires: %{?scl_prefix}perl(Fcntl) +BuildRequires: %{?scl_prefix}perl(File::Spec) +BuildRequires: %{?scl_prefix}perl(Tie::Hash) +BuildRequires: %{?scl_prefix}perl(warnings) +BuildRequires: %{?scl_prefix}perl(XSLoader) +# Tests: +BuildRequires: %{?scl_prefix}perl(Symbol) +BuildRequires: %{?scl_prefix}perl(Test::More) +BuildRequires: %{?scl_prefix}perl(threads) +%if %{with perl_DB_File_enables_optional_test} && !%{defined perl_bootstrap} +# Optional tests: +# Data::Dumper not useful +BuildRequires: %{?scl_prefix}perl(Test::Pod) >= 1.00 +%endif +Requires: %{?scl_prefix}perl(:MODULE_COMPAT_%(%{?scl:scl enable %{scl} '}eval "$(perl -V:version)";echo $version%{?scl:'})) +Requires: %{?scl_prefix}perl(Fcntl) +Requires: %{?scl_prefix}perl(XSLoader) + +%{?perl_default_filter} + +%description +DB_File is a module which allows Perl programs to make use of the facilities +provided by Berkeley DB version 1.x (if you have a newer version of DB, you +will be limited to functionality provided by interface of version 1.x). The +interface defined here mirrors the Berkeley DB interface closely. + +%prep +%setup -q -n DB_File-%{version} +%patch0 -p1 +find -type f -exec chmod -x {} + +%{?scl:scl enable %{scl} '}perl -MConfig -pi -e %{?scl:'"}'%{?scl:"'}s|^#!.*perl|$Config{startperl}|%{?scl:'"}'%{?scl:"'} dbinfo%{?scl:'} + +%build +%{?scl:scl enable %{scl} '}perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="$RPM_OPT_FLAGS" && make %{?_smp_mflags}%{?scl:'} + +%install +%{?scl:scl enable %{scl} '}make pure_install DESTDIR=$RPM_BUILD_ROOT%{?scl:'} +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 +%{?scl:scl enable %{scl} '}make test%{?scl:'} + +%files +%doc Changes dbinfo README +%{perl_vendorarch}/auto/* +%{perl_vendorarch}/DB_File* +%{_mandir}/man3/* + +%changelog +* Mon Dec 18 2017 Petr Pisar - 1.840-397 +- SCL + +* Thu Aug 03 2017 Fedora Release Engineering - 1.840-396 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1.840-395 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jun 07 2017 Jitka Plesnikova - 1.840-394 +- Perl 5.26 re-rebuild of bootstrapped packages + +* Sat Jun 03 2017 Jitka Plesnikova - 1.840-393 +- Perl 5.26 rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 1.840-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Jan 02 2017 Petr Pisar - 1.840-1 +- 1.840 bump + +* Wed May 18 2016 Jitka Plesnikova - 1.838-2 +- Perl 5.24 re-rebuild of bootstrapped packages + +* Mon May 16 2016 Petr Pisar - 1.838-1 +- 1.838 bump + +* Sat May 14 2016 Jitka Plesnikova - 1.835-365 +- Increase release to favour standalone package + +* Thu Feb 04 2016 Fedora Release Engineering - 1.835-348 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jun 18 2015 Fedora Release Engineering - 1.835-347 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Jun 10 2015 Jitka Plesnikova - 1.835-346 +- Perl 5.22 re-rebuild of bootstrapped packages + +* Thu Jun 04 2015 Jitka Plesnikova - 1.835-345 +- Increase release to favour standalone package + +* Wed Jun 03 2015 Jitka Plesnikova - 1.835-2 +- Perl 5.22 rebuild + +* Fri Jan 02 2015 Petr Pisar - 1.835-1 +- 1.835 bump + +* Thu Dec 11 2014 Petr Pisar - 1.834-1 +- 1.834 bump + +* Wed Dec 10 2014 Petr Pisar - 1.833-1 +- 1.833 bump + +* Sun Sep 07 2014 Jitka Plesnikova - 1.831-311 +- Perl 5.20 re-rebuild of bootstrapped packages + +* Wed Sep 03 2014 Jitka Plesnikova - 1.831-310 +- Increase release to favour standalone package + +* Tue Aug 26 2014 Jitka Plesnikova - 1.831-7 +- Perl 5.20 rebuild + +* Sun Aug 17 2014 Fedora Release Engineering - 1.831-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Aug 08 2014 Petr Pisar - 1.831-5 +- Build-require Test::More always because of the new thread tests + +* Thu Aug 07 2014 Petr Pisar - 1.831-4 +- Initialize db_DESTROY return variable (bug #1107732) + +* Thu Aug 07 2014 Petr Pisar - 1.831-3 +- Destroy DB_File objects only from original thread context (bug #1107732) + +* Sat Jun 07 2014 Fedora Release Engineering - 1.831-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue Nov 19 2013 Petr Pisar - 1.831-1 +- 1.831 bump + +* Mon Nov 04 2013 Petr Pisar - 1.830-1 +- 1.830 bump + +* Wed Aug 14 2013 Jitka Plesnikova - 1.829-4 +- Perl 5.18 re-rebuild of bootstrapped packages + +* Sat Aug 03 2013 Fedora Release Engineering - 1.829-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Fri Jul 12 2013 Petr Pisar - 1.829-2 +- Perl 5.18 rebuild + +* Wed Jul 10 2013 Petr Pisar - 1.829-1 +- 1.829 bump + +* Thu May 09 2013 Petr Pisar - 1.828-1 +- 1.828 bump + +* Thu Mar 21 2013 Petr Pisar 1.827-1 +- Specfile autogenerated by cpanspec 1.78.