From d24af2bc595d4d8d078689b9a024074129d368cc Mon Sep 17 00:00:00 2001 From: basebuilder_pel7ppc64bebuilder0 Date: Wed, 6 Jun 2018 09:39:47 +0200 Subject: [PATCH] perl package update Signed-off-by: basebuilder_pel7ppc64bebuilder0 --- SOURCES/macros.perl | 153 + SOURCES/perl-5.10.0-libresolv.patch | 12 + .../perl-5.10.0-x86_64-io-test-failure.patch | 12 + SOURCES/perl-5.14.1-offtest.patch | 17 + ...2-Override-the-Pod-Simple-parse_file.patch | 60 + ...erl-transtate-question-mark-properly.patch | 13 + SOURCES/perl-5.16.0-fix-broken-atof.patch | 94 + ...730-should-be-cleared-on-do-IO-error.patch | 46 + .../perl-5.16.1-perl-105924-require-1-2.patch | 116 + ...yscall-I32-retval-truncates-the-retu.patch | 32 + ...Stop-my-vars-with-attrs-from-leaking.patch | 77 + ...-Glob.xs-Extend-stack-when-returning.patch | 76 + ...rl-115206-Don-t-crash-when-vivifying.patch | 75 + ...dd-NAME-headings-in-modules-with-POD.patch | 80 + ...rk.t-remove-CPU-speed-sensitive-test.patch | 73 + ...M-ODBM-SDBM-_File-objects-only-from-.patch | 233 + ...eak-deleted-iterator-when-tying-hash.patch | 60 + ...5.16.3-Don-t-leak-if-hh-copying-dies.patch | 109 + ....3-File-Glob-Dup-glob-state-in-CLONE.patch | 177 + ...ncorrect-handling-of-CRLF-in-Net-FTP.patch | 38 + ...Free-iterator-when-freeing-tied-hash.patch | 78 + ...ly-duplicate-PerlIO-encoding-objects.patch | 154 + ...RL_ASYNC_CHECK-from-Perl_leave_scope.patch | 148 + ...d2html-usage-output-and-its-POD-text.patch | 191 + ...form-SHA-256-algorithm-by-crypt-if-d.patch | 51 + ...6-Fix-misparsing-of-maketext-strings.patch | 81 + ...2-Add-PL_perlio_mutex-to-atfork_lock.patch | 48 + ...-BigInt-CalcEmu-requires-Math-BigInt.patch | 30 + ...form-SHA-256-algorithm-if-default-on.patch | 54 + ...nize-h2ph-POD-text-with-usage-output.patch | 38 + ...3-Don-t-leak-the-temp-utf8-copy-of-n.patch | 33 + SOURCES/perl-5.8.0-libdir64.patch | 46 + SOURCES/perl-USE_MM_LD_RUN_PATH.patch | 109 + SOURCES/perl-disable_test_hosts.patch | 12 + SOURCES/perl-perlbug-tag.patch | 21 + SOURCES/perl.stp | 39 + SOURCES/porting-podcheck-regen.patch | 26 + SPECS/perl.spec | 4706 +++++++++++++++++ 38 files changed, 7418 insertions(+) create mode 100644 SOURCES/macros.perl create mode 100644 SOURCES/perl-5.10.0-libresolv.patch create mode 100644 SOURCES/perl-5.10.0-x86_64-io-test-failure.patch create mode 100644 SOURCES/perl-5.14.1-offtest.patch create mode 100644 SOURCES/perl-5.14.2-Override-the-Pod-Simple-parse_file.patch create mode 100644 SOURCES/perl-5.14.2-find2perl-transtate-question-mark-properly.patch create mode 100644 SOURCES/perl-5.16.0-fix-broken-atof.patch create mode 100644 SOURCES/perl-5.16.1-RT-113730-should-be-cleared-on-do-IO-error.patch create mode 100644 SOURCES/perl-5.16.1-perl-105924-require-1-2.patch create mode 100644 SOURCES/perl-5.16.1-perl-113980-pp_syscall-I32-retval-truncates-the-retu.patch create mode 100644 SOURCES/perl-5.16.1-perl-114764-Stop-my-vars-with-attrs-from-leaking.patch create mode 100644 SOURCES/perl-5.16.1-perl-114984-Glob.xs-Extend-stack-when-returning.patch create mode 100644 SOURCES/perl-5.16.1-perl-115206-Don-t-crash-when-vivifying.patch create mode 100644 SOURCES/perl-5.16.2-cpan-CPAN-add-NAME-headings-in-modules-with-POD.patch create mode 100644 SOURCES/perl-5.16.3-Benchmark.t-remove-CPU-speed-sensitive-test.patch create mode 100644 SOURCES/perl-5.16.3-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch create mode 100644 SOURCES/perl-5.16.3-Don-t-leak-deleted-iterator-when-tying-hash.patch create mode 100644 SOURCES/perl-5.16.3-Don-t-leak-if-hh-copying-dies.patch create mode 100644 SOURCES/perl-5.16.3-File-Glob-Dup-glob-state-in-CLONE.patch create mode 100644 SOURCES/perl-5.16.3-Fix-incorrect-handling-of-CRLF-in-Net-FTP.patch create mode 100644 SOURCES/perl-5.16.3-Free-iterator-when-freeing-tied-hash.patch create mode 100644 SOURCES/perl-5.16.3-Properly-duplicate-PerlIO-encoding-objects.patch create mode 100644 SOURCES/perl-5.16.3-Remove-PERL_ASYNC_CHECK-from-Perl_leave_scope.patch create mode 100644 SOURCES/perl-5.16.3-Synchronize-pod2html-usage-output-and-its-POD-text.patch create mode 100644 SOURCES/perl-5.16.3-t-op-taint.t-Perform-SHA-256-algorithm-by-crypt-if-d.patch create mode 100644 SOURCES/perl-5.17.6-Fix-misparsing-of-maketext-strings.patch create mode 100644 SOURCES/perl-5.17.9-106212-Add-PL_perlio_mutex-to-atfork_lock.patch create mode 100644 SOURCES/perl-5.18.1-Document-Math-BigInt-CalcEmu-requires-Math-BigInt.patch create mode 100644 SOURCES/perl-5.18.2-t-op-crypt.t-Perform-SHA-256-algorithm-if-default-on.patch create mode 100644 SOURCES/perl-5.19.0-Synchronize-h2ph-POD-text-with-usage-output.patch create mode 100644 SOURCES/perl-5.20.3-Don-t-leak-the-temp-utf8-copy-of-n.patch create mode 100644 SOURCES/perl-5.8.0-libdir64.patch create mode 100644 SOURCES/perl-USE_MM_LD_RUN_PATH.patch create mode 100644 SOURCES/perl-disable_test_hosts.patch create mode 100644 SOURCES/perl-perlbug-tag.patch create mode 100644 SOURCES/perl.stp create mode 100644 SOURCES/porting-podcheck-regen.patch create mode 100644 SPECS/perl.spec diff --git a/SOURCES/macros.perl b/SOURCES/macros.perl new file mode 100644 index 00000000..dc10c03a --- /dev/null +++ b/SOURCES/macros.perl @@ -0,0 +1,153 @@ +# Sensible Perl-specific RPM build macros. +# +# Note that these depend on the generic filtering system being in place in +# rpm core; but won't cause a build to fail if they're not present. +# +# Chris Weyl 2009 +# Marcela Mašláňová 2011 + +# This macro unsets several common vars used to control how Makefile.PL (et +# al) build and install packages. We also set a couple to help some of the +# common systems be less interactive. This was blatantly stolen from +# cpanminus, and helps building rpms locally when one makes extensive use of +# local::lib, etc. +# +# Usage, in %build, before "%{__perl} Makefile.PL ..." +# +# %{?perl_ext_env_unset} + +%perl_ext_env_unset %{expand: +unset PERL_MM_OPT MODULEBUILDRC PERL5INC +export PERL_AUTOINSTALL="--defaultdeps" +export PERL_MM_USE_DEFAULT=1 +} + +############################################################################# +# Filtering macro incantations + +# keep track of what "revision" of the filtering we're at. Each time we +# change the filter we should increment this. + +%perl_default_filter_revision 3 + +# Perl provides/requeries are generated by external generators. +%global __perl_provides /usr/lib/rpm/perl.prov +%global __perl_requires /usr/lib/rpm/perl.req + +# By default, for perl packages we want to filter all files in _docdir from +# req/prov scanning, as well as filtering out any provides caused by private +# libs in vendorarch/archlib (vendor/core). +# +# Note that this must be invoked in the spec file, preferably as +# "%{?perl_default_filter}", before any %description block. + +%perl_default_filter %{expand: \ +%global __provides_exclude_from %{perl_vendorarch}/auto/.*\\\\.so$|%{perl_archlib}/.*\\\\.so$|%{_docdir} +%global __requires_exclude_from %{_docdir} +%global __provides_exclude perl\\\\(VMS|perl\\\\(Win32|perl\\\\(DB\\\\)|perl\\\\(UNIVERSAL\\\\) +%global __requires_exclude perl\\\\(VMS|perl\\\\(Win32 +} + +############################################################################# +# Macros to assist with generating a "-tests" subpackage in a semi-automatic +# manner. +# +# The following macros are still in a highly experimental stage and users +# should be aware that the interface and behaviour may change. +# +# PLEASE, PLEASE CONDITIONALIZE THESE MACROS IF YOU USE THEM. +# +# See http://gist.github.com/284409 + +# These macros should be invoked as above, right before the first %description +# section, and conditionalized. e.g., for the common case where all our tests +# are located under t/, the correct usage is: +# +# %{?perl_default_subpackage_tests} +# +# If custom files/directories need to be specified, this can be done as such: +# +# %{?perl_subpackage_tests:%perl_subpackage_tests t/ one/ three.sql} +# +# etc, etc. + +%perl_version %(eval "`%{__perl} -V:version`"; echo $version) +%perl_testdir %{_libexecdir}/perl5-tests +%cpan_dist_name %(eval echo %{name} | %{__sed} -e 's/^perl-//') + +# easily mark something as required by -tests and BR to the main package +%tests_req() %{expand:\ +BuildRequires: %*\ +%%tests_subpackage_requires %*\ +} + +# fixup (and create if needed) the shbang lines in tests, so they work and +# rpmlint doesn't (correctly) have a fit +%fix_shbang_line() \ +TMPHEAD=`mktemp`\ +TMPBODY=`mktemp`\ +for file in %* ; do \ + head -1 $file > $TMPHEAD\ + tail -n +2 $file > $TMPBODY\ + %{__perl} -pi -e '$f = /^#!/ ? "" : "#!%{__perl}$/"; $_="$f$_"' $TMPHEAD\ + cat $TMPHEAD $TMPBODY > $file\ +done\ +%{__perl} -MExtUtils::MakeMaker -e "ExtUtils::MM_Unix->fixin(qw{%*})"\ +%{__rm} $TMPHEAD $TMPBODY\ +%{nil} + +# additional -tests subpackage requires, if any +%tests_subpackage_requires() %{expand: \ +%global __tests_spkg_req %{?__tests_spkg_req} %* \ +} + +# additional -tests subpackage provides, if any +%tests_subpackage_provides() %{expand: \ +%global __tests_spkg_prov %{?__tests_spkg_prov} %* \ +} + +# +# Runs after the body of %check completes. +# + +%__perl_check_pre %{expand: \ +%{?__spec_check_pre} \ +pushd %{buildsubdir} \ +%define perl_br_testdir %{buildroot}%{perl_testdir}/%{cpan_dist_name} \ +%{__mkdir_p} %{perl_br_testdir} \ +%{__tar} -cf - %{__perl_test_dirs} | ( cd %{perl_br_testdir} && %{__tar} -xf - ) \ +find . -maxdepth 1 -type f -name '*META*' -exec %{__cp} -vp {} %{perl_br_testdir} ';' \ +find %{perl_br_testdir} -type f -exec %{__chmod} -c -x {} ';' \ +T_FILES=`find %{perl_br_testdir} -type f -name '*.t'` \ +%fix_shbang_line $T_FILES \ +%{__chmod} +x $T_FILES \ +%{_fixperms} %{perl_br_testdir} \ +popd \ +} + +# +# The actual invoked macro +# + +%perl_subpackage_tests() %{expand: \ +%global __perl_package 1\ +%global __perl_test_dirs %* \ +%global __spec_check_pre %{expand:%{__perl_check_pre}} \ +%package tests\ +Summary: Test suite for package %{name}\ +Group: Development/Debug\ +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}\ +Requires: /usr/bin/prove \ +%{?__tests_spkg_req:Requires: %__tests_spkg_req}\ +%{?__tests_spkg_prov:Provides: %__tests_spkg_prov}\ +AutoReqProv: 0 \ +%description tests\ +This package provides the test suite for package %{name}.\ +%files tests\ +%defattr(-,root,root,-)\ +%{perl_testdir}\ +} + +# shortcut sugar +%perl_default_subpackage_tests %perl_subpackage_tests t/ + diff --git a/SOURCES/perl-5.10.0-libresolv.patch b/SOURCES/perl-5.10.0-libresolv.patch new file mode 100644 index 00000000..7676bbbd --- /dev/null +++ b/SOURCES/perl-5.10.0-libresolv.patch @@ -0,0 +1,12 @@ +diff -up perl-5.10.0/Configure.didi perl-5.10.0/Configure +--- perl-5.10.0/Configure.didi 2007-12-18 11:47:07.000000000 +0100 ++++ perl-5.10.0/Configure 2008-07-21 10:51:16.000000000 +0200 +@@ -1327,7 +1327,7 @@ libswanted_uselargefiles='' + : set usesocks on the Configure command line to enable socks. + : List of libraries we want. + : If anyone needs extra -lxxx, put those in a hint file. +-libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun" ++libswanted="sfio socket resolv inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun" + libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD" + : We probably want to search /usr/shlib before most other libraries. + : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist. diff --git a/SOURCES/perl-5.10.0-x86_64-io-test-failure.patch b/SOURCES/perl-5.10.0-x86_64-io-test-failure.patch new file mode 100644 index 00000000..6b9685bc --- /dev/null +++ b/SOURCES/perl-5.10.0-x86_64-io-test-failure.patch @@ -0,0 +1,12 @@ +diff -up perl-5.10.0/t/io/fs.t.BAD perl-5.10.0/t/io/fs.t +--- perl-5.10.0/t/io/fs.t.BAD 2008-01-30 13:36:43.000000000 -0500 ++++ perl-5.10.0/t/io/fs.t 2008-01-30 13:41:27.000000000 -0500 +@@ -227,7 +227,7 @@ isnt($atime, 500000000, 'atime'); + isnt($mtime, 500000000 + $delta, 'mtime'); + + SKIP: { +- skip "no futimes", 4 unless ($Config{d_futimes} || "") eq "define"; ++ skip "no futimes", 4; + open(my $fh, "<", 'b'); + $foo = (utime 500000000,500000000 + $delta, $fh); + is($foo, 1, "futime"); diff --git a/SOURCES/perl-5.14.1-offtest.patch b/SOURCES/perl-5.14.1-offtest.patch new file mode 100644 index 00000000..45294c88 --- /dev/null +++ b/SOURCES/perl-5.14.1-offtest.patch @@ -0,0 +1,17 @@ +diff -up perl-5.14.1/cpan/File-Temp/t/fork.t.off perl-5.14.1/cpan/File-Temp/t/fork.t +--- perl-5.14.1/cpan/File-Temp/t/fork.t.off 2011-04-13 13:36:34.000000000 +0200 ++++ perl-5.14.1/cpan/File-Temp/t/fork.t 2011-06-20 10:29:31.536282611 +0200 +@@ -12,12 +12,8 @@ BEGIN { + $Config::Config{useithreads} and + $Config::Config{ccflags} =~ /-DPERL_IMPLICIT_SYS/ + ); +- if ( $can_fork ) { +- print "1..8\n"; +- } else { +- print "1..0 # Skip No fork available\n"; ++ print "1..0 # Skip Koji doesn't work with Perl fork tests\n"; + exit; +- } + } + + use File::Temp; diff --git a/SOURCES/perl-5.14.2-Override-the-Pod-Simple-parse_file.patch b/SOURCES/perl-5.14.2-Override-the-Pod-Simple-parse_file.patch new file mode 100644 index 00000000..84482200 --- /dev/null +++ b/SOURCES/perl-5.14.2-Override-the-Pod-Simple-parse_file.patch @@ -0,0 +1,60 @@ +From 915ceb2f33469eeffd28cfb81ca52a05e1301f15 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Fri, 14 Sep 2012 13:17:29 +0200 +Subject: [PATCH] Override the Pod::Simple::parse_file + +This sets output_fh to STDOUT if it's not already set. +This resolves CPANRT#77530 and RHBZ#826872 and is fixed in podlators-2.4.1. +Ported to perl-5.14.2. +--- + cpan/podlators/lib/Pod/Man.pm | 11 +++++++++++ + cpan/podlators/lib/Pod/Text.pm | 11 +++++++++++ + 2 files changed, 22 insertions(+) + +diff --git a/cpan/podlators/lib/Pod/Man.pm b/cpan/podlators/lib/Pod/Man.pm +index 96f3fcc..ad5e5ac 100644 +--- a/cpan/podlators/lib/Pod/Man.pm ++++ b/cpan/podlators/lib/Pod/Man.pm +@@ -1302,6 +1302,17 @@ sub parse_from_filehandle { + $self->parse_from_file (@_); + } + ++# Pod::Simple's parse_file doesn't set output_fh. Wrap the call and do so ++# ourself unless it was already set by the caller, since our documentation has ++# always said that this should work. ++sub parse_file { ++ my ($self, $in) = @_; ++ unless (defined $$self{output_fh}) { ++ $self->output_fh (\*STDOUT); ++ } ++ return $self->SUPER::parse_file ($in); ++} ++ + ############################################################################## + # Translation tables + ############################################################################## +diff --git a/cpan/podlators/lib/Pod/Text.pm b/cpan/podlators/lib/Pod/Text.pm +index cc02820..1a8b0bf 100644 +--- a/cpan/podlators/lib/Pod/Text.pm ++++ b/cpan/podlators/lib/Pod/Text.pm +@@ -679,6 +679,17 @@ sub parse_from_filehandle { + $self->parse_from_file (@_); + } + ++# Pod::Simple's parse_file doesn't set output_fh. Wrap the call and do so ++# ourself unless it was already set by the caller, since our documentation has ++# always said that this should work. ++sub parse_file { ++ my ($self, $in) = @_; ++ unless (defined $$self{output_fh}) { ++ $self->output_fh (\*STDOUT); ++ } ++ return $self->SUPER::parse_file ($in); ++} ++ + ############################################################################## + # Module return value and documentation + ############################################################################## +-- +1.7.11.4 + diff --git a/SOURCES/perl-5.14.2-find2perl-transtate-question-mark-properly.patch b/SOURCES/perl-5.14.2-find2perl-transtate-question-mark-properly.patch new file mode 100644 index 00000000..e81be8d2 --- /dev/null +++ b/SOURCES/perl-5.14.2-find2perl-transtate-question-mark-properly.patch @@ -0,0 +1,13 @@ +diff -up a/x2p/find2perl.PL b/x2p/find2perl.PL +--- a/x2p/find2perl.PL 2010-12-30 03:07:17.000000000 +0100 ++++ b/x2p/find2perl.PL 2012-05-29 10:18:11.697683643 +0200 +@@ -681,7 +681,8 @@ sub tab () { + sub fileglob_to_re ($) { + my $x = shift; + $x =~ s#([./^\$()+])#\\$1#g; +- $x =~ s#([?*])#.$1#g; ++ $x =~ s#\*#.*#g; ++ $x =~ s#\?#.#g; + "^$x\\z"; + } + diff --git a/SOURCES/perl-5.16.0-fix-broken-atof.patch b/SOURCES/perl-5.16.0-fix-broken-atof.patch new file mode 100644 index 00000000..4ea16c13 --- /dev/null +++ b/SOURCES/perl-5.16.0-fix-broken-atof.patch @@ -0,0 +1,94 @@ +From 78787052b6a68c0f54cfa983a69c44276de9daa4 Mon Sep 17 00:00:00 2001 +From: Jesse Luehrs +Date: Tue, 26 Jun 2012 00:13:54 -0500 +Subject: [PATCH] use a less broken test for locale radix in atof [perl #109318] + +--- + lib/locale.t | 33 +++++++++++++++++++++++++++++++++ + numeric.c | 25 +++++++++++++++---------- + 2 files changed, 48 insertions(+), 10 deletions(-) + +diff --git a/lib/locale.t b/lib/locale.t +index dfc6d2b..26a7bd4 100644 +--- a/lib/locale.t ++++ b/lib/locale.t +@@ -1247,6 +1247,39 @@ foreach $Locale (@Locale) { + print "# failed $locales_test_number locale '$Locale' characters @f\n" + } + } ++ ++ # [perl #109318] ++ { ++ my @f = (); ++ ++$locales_test_number; ++ $test_names{$locales_test_number} = 'Verify atof with locale radix and negative exponent'; ++ ++ my $radix = POSIX::localeconv()->{decimal_point}; ++ my @nums = ( ++ "3.14e+9", "3${radix}14e+9", "3.14e-9", "3${radix}14e-9", ++ "-3.14e+9", "-3${radix}14e+9", "-3.14e-9", "-3${radix}14e-9", ++ ); ++ ++ if (! $is_utf8_locale) { ++ use locale; ++ for my $num (@nums) { ++ push @f, $num ++ unless sprintf("%g", $num) =~ /3.+14/; ++ } ++ } ++ else { ++ use locale ':not_characters'; ++ for my $num (@nums) { ++ push @f, $num ++ unless sprintf("%g", $num) =~ /3.+14/; ++ } ++ } ++ ++ tryneoalpha($Locale, $locales_test_number, @f == 0); ++ if (@f) { ++ print "# failed $locales_test_number locale '$Locale' numbers @f\n" ++ } ++ } + } + + my $final_locales_test_number = $locales_test_number; +diff --git a/numeric.c b/numeric.c +index be86f3a..3eb8a0e 100644 +--- a/numeric.c ++++ b/numeric.c +@@ -847,17 +847,22 @@ Perl_my_atof(pTHX_ const char* s) + + PERL_ARGS_ASSERT_MY_ATOF; + +- if (PL_numeric_local && IN_SOME_LOCALE_FORM) { +- NV y; ++ if (PL_numeric_local && PL_numeric_radix_sv && IN_SOME_LOCALE_FORM) { ++ char *standard = NULL, *local = NULL; ++ bool use_standard_radix; + +- /* Scan the number twice; once using locale and once without; +- * choose the larger result (in absolute value). */ +- Perl_atof2(s, x); +- SET_NUMERIC_STANDARD(); +- Perl_atof2(s, y); +- SET_NUMERIC_LOCAL(); +- if ((y < 0.0 && y < x) || (y > 0.0 && y > x)) +- return y; ++ standard = strchr(s, '.'); ++ local = strstr(s, SvPV_nolen(PL_numeric_radix_sv)); ++ ++ use_standard_radix = standard && (!local || standard < local); ++ ++ if (use_standard_radix) ++ SET_NUMERIC_STANDARD(); ++ ++ Perl_atof2(s, x); ++ ++ if (use_standard_radix) ++ SET_NUMERIC_LOCAL(); + } + else + Perl_atof2(s, x); +-- +1.7.4.1 + diff --git a/SOURCES/perl-5.16.1-RT-113730-should-be-cleared-on-do-IO-error.patch b/SOURCES/perl-5.16.1-RT-113730-should-be-cleared-on-do-IO-error.patch new file mode 100644 index 00000000..e08fde72 --- /dev/null +++ b/SOURCES/perl-5.16.1-RT-113730-should-be-cleared-on-do-IO-error.patch @@ -0,0 +1,46 @@ +From a3ff80c12c16886edf9acdd3d172798e50defdb3 Mon Sep 17 00:00:00 2001 +From: Eric Brine +Date: Mon, 18 Jun 2012 14:56:32 -0400 +Subject: [PATCH] RT#113730 - $@ should be cleared on "do" IO error. + +--- + pp_ctl.c | 1 + + t/op/do.t | 12 ++++++++++++ + 2 files changed, 13 insertions(+) + +diff --git a/pp_ctl.c b/pp_ctl.c +index b414e81..437bc8f 100644 +--- a/pp_ctl.c ++++ b/pp_ctl.c +@@ -3928,6 +3928,7 @@ PP(pp_require) + DIE(aTHX_ "Can't locate %s", name); + } + ++ CLEAR_ERRSV(); + RETPUSHUNDEF; + } + else +diff --git a/t/op/do.t b/t/op/do.t +index 93d3f73..c5a5905 100644 +--- a/t/op/do.t ++++ b/t/op/do.t +@@ -286,4 +286,16 @@ SKIP: { + is($w, undef, 'do STRING does not propagate warning hints'); + } + ++# RT#113730 - $@ should be cleared on IO error. ++{ ++ $@ = "should not see"; ++ $! = 0; ++ my $rv = do("some nonexistent file"); ++ my $saved_error = $@; ++ my $saved_errno = $!; ++ ok(!$rv, "do returns false on io errror"); ++ ok(!$saved_error, "\$\@ not set on io error"); ++ ok($saved_errno, "\$! set on io error"); ++} ++ + done_testing(); +-- +1.7.11.4 + diff --git a/SOURCES/perl-5.16.1-perl-105924-require-1-2.patch b/SOURCES/perl-5.16.1-perl-105924-require-1-2.patch new file mode 100644 index 00000000..76d74f8b --- /dev/null +++ b/SOURCES/perl-5.16.1-perl-105924-require-1-2.patch @@ -0,0 +1,116 @@ +From d546938a7c8b111c463b733910db885b24724b42 Mon Sep 17 00:00:00 2001 +From: Father Chrysostomos +Date: Thu, 20 Sep 2012 06:24:25 -0700 +Subject: [PATCH] require 1 << 2 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Port to 5.16.1: + +commit c31f6d3b869d78bbd101e694fd3b384b47a77f6d +Author: Father Chrysostomos +Date: Thu Sep 20 06:24:25 2012 -0700 + + [perl #105924] require 1 << 2 + +Setting PL_expect after force_next has no effect, as force_next +(called by force_version and force_word) picks up the current value of +PL_expect and arranges for it to be reset thereto after the forced +token is force-fed to the parser. + +The KEY_require case should be setting PL_expect to XTERM (as it +already does) when there is no forced token (version or bareword), +because we expect a term after ‘require’, but to XOPERATOR when +there is a forced token, because we expect an operator after that +forced token. + +Since the PL_expect assignment has no effect after force_next, we can +set it to XOPERATOR before calling potentially calling force_next, and +then to XTERM afterwards. + +Loop exits had the same bug, so this fixes them all. +--- + t/base/lex.t | 10 +++++++++- + toke.c | 6 ++++++ + 2 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/t/base/lex.t b/t/base/lex.t +index ce16ef1..c2a6cc3 100644 +--- a/t/base/lex.t ++++ b/t/base/lex.t +@@ -1,6 +1,6 @@ + #!./perl + +-print "1..57\n"; ++print "1..63\n"; + + $x = 'x'; + +@@ -273,3 +273,11 @@ $test++; + @a = (1,2,3); + print "not " unless($a[~~2] == 3); + print "ok 57\n"; ++ ++$test = 58; ++for(qw< require goto last next redo dump >) { ++ eval "sub { $_ foo << 2 }"; ++ print "not " if $@; ++ print "ok ", $test++, " - [perl #105924] $_ WORD << ...\n"; ++ print "# $@" if $@; ++} +diff --git a/toke.c b/toke.c +index 1d18550..aa2c3b6 100644 +--- a/toke.c ++++ b/toke.c +@@ -7344,6 +7344,7 @@ Perl_yylex(pTHX) + UNI(OP_DBMCLOSE); + + case KEY_dump: ++ PL_expect = XOPERATOR; + s = force_word(s,WORD,TRUE,FALSE,FALSE); + LOOPX(OP_DUMP); + +@@ -7476,6 +7477,7 @@ Perl_yylex(pTHX) + LOP(OP_GREPSTART, XREF); + + case KEY_goto: ++ PL_expect = XOPERATOR; + s = force_word(s,WORD,TRUE,FALSE,FALSE); + LOOPX(OP_GOTO); + +@@ -7598,6 +7600,7 @@ Perl_yylex(pTHX) + LOP(OP_KILL,XTERM); + + case KEY_last: ++ PL_expect = XOPERATOR; + s = force_word(s,WORD,TRUE,FALSE,FALSE); + LOOPX(OP_LAST); + +@@ -7695,6 +7698,7 @@ Perl_yylex(pTHX) + OPERATOR(MY); + + case KEY_next: ++ PL_expect = XOPERATOR; + s = force_word(s,WORD,TRUE,FALSE,FALSE); + LOOPX(OP_NEXT); + +@@ -7880,6 +7884,7 @@ Perl_yylex(pTHX) + + case KEY_require: + s = SKIPSPACE1(s); ++ PL_expect = XOPERATOR; + if (isDIGIT(*s)) { + s = force_version(s, FALSE); + } +@@ -7911,6 +7916,7 @@ Perl_yylex(pTHX) + UNI(OP_RESET); + + case KEY_redo: ++ PL_expect = XOPERATOR; + s = force_word(s,WORD,TRUE,FALSE,FALSE); + LOOPX(OP_REDO); + +-- +1.7.11.4 + diff --git a/SOURCES/perl-5.16.1-perl-113980-pp_syscall-I32-retval-truncates-the-retu.patch b/SOURCES/perl-5.16.1-perl-113980-pp_syscall-I32-retval-truncates-the-retu.patch new file mode 100644 index 00000000..93907a36 --- /dev/null +++ b/SOURCES/perl-5.16.1-perl-113980-pp_syscall-I32-retval-truncates-the-retu.patch @@ -0,0 +1,32 @@ +From f9344c91a4ca48288bba30dc94a2d712d0659670 Mon Sep 17 00:00:00 2001 +From: Oleg Nesterov +Date: Wed, 4 Jul 2012 08:21:15 -0700 +Subject: [PATCH] [perl #113980] pp_syscall: "I32 retval" truncates the + returned value + +I noticed today that syscall(9, ...) (mmap) doesn't work for me. + +The problem is obvious, pp_syscall() uses I32 for retval and the +"long" address doesn't fit into "int". + +The one-liner below should fix the problem. +--- + pp_sys.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pp_sys.c b/pp_sys.c +index fb93732..c5d63ac 100644 +--- a/pp_sys.c ++++ b/pp_sys.c +@@ -5456,7 +5456,7 @@ PP(pp_syscall) + register I32 items = SP - MARK; + unsigned long a[20]; + register I32 i = 0; +- I32 retval = -1; ++ IV retval = -1; + + if (PL_tainting) { + while (++MARK <= SP) { +-- +1.7.11.4 + diff --git a/SOURCES/perl-5.16.1-perl-114764-Stop-my-vars-with-attrs-from-leaking.patch b/SOURCES/perl-5.16.1-perl-114764-Stop-my-vars-with-attrs-from-leaking.patch new file mode 100644 index 00000000..78515efd --- /dev/null +++ b/SOURCES/perl-5.16.1-perl-114764-Stop-my-vars-with-attrs-from-leaking.patch @@ -0,0 +1,77 @@ +From 13f27cb3dee86772eeed5d7d9b47746395ee603c Mon Sep 17 00:00:00 2001 +From: Father Chrysostomos +Date: Wed, 19 Sep 2012 21:53:51 -0700 +Subject: [PATCH] Stop my vars with attrs from leaking +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Ported to 5.16.1: + +commit 9fa29fa7929b4167c5491b792c5cc7e4365a2839 +Author: Father Chrysostomos +Date: Wed Sep 19 21:53:51 2012 -0700 + + [perl #114764] Stop my vars with attrs from leaking + +S_apply_attrs was creating a SV containing a stash name, that was +later to be put in a const op, which would take care of freeing it. +But it didn’t free it for a my variable, because the branch where that +const op was created didn’t apply. So move the creation of that SV +inside the branch that uses it, otherwise it leaks. This leak was the +result of commit 95f0a2f1ffc6. +--- + op.c | 4 ++-- + t/op/svleak.t | 5 ++++- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/op.c b/op.c +index 24d5ecb..017580d 100644 +--- a/op.c ++++ b/op.c +@@ -2279,13 +2279,11 @@ STATIC void + S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs, bool for_my) + { + dVAR; +- SV *stashsv; + + PERL_ARGS_ASSERT_APPLY_ATTRS; + + /* fake up C */ + ENTER; /* need to protect against side-effects of 'use' */ +- stashsv = stash ? newSVhek(HvNAME_HEK(stash)) : &PL_sv_no; + + #define ATTRSMODULE "attributes" + #define ATTRSMODULE_PM "attributes.pm" +@@ -2300,6 +2298,8 @@ S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs, bool for_my) + newSVpvs(ATTRSMODULE), NULL); + } + else { ++ SV * const stashsv = ++ stash ? newSVhek(HvNAME_HEK(stash)) : &PL_sv_no; + Perl_load_module(aTHX_ PERL_LOADMOD_IMPORT_OPS, + newSVpvs(ATTRSMODULE), + NULL, +diff --git a/t/op/svleak.t b/t/op/svleak.t +index df10953..6cfee2e 100644 +--- a/t/op/svleak.t ++++ b/t/op/svleak.t +@@ -13,7 +13,7 @@ BEGIN { + or skip_all("XS::APItest not available"); + } + +-plan tests => 21; ++plan tests => 22; + + # run some code N times. If the number of SVs at the end of loop N is + # greater than (N-1)*delta at the end of loop 1, we've got a leak +@@ -160,3 +160,6 @@ leak(2, 0, + } + + leak(2,0,sub { !$^V }, '[perl #109762] version object in boolean context'); ++ ++# [perl #114764] Attributes leak scalars ++leak(2, 0, sub { eval 'my $x : shared' }, 'my $x :shared used to leak'); +-- +1.7.11.4 + diff --git a/SOURCES/perl-5.16.1-perl-114984-Glob.xs-Extend-stack-when-returning.patch b/SOURCES/perl-5.16.1-perl-114984-Glob.xs-Extend-stack-when-returning.patch new file mode 100644 index 00000000..64c3e89f --- /dev/null +++ b/SOURCES/perl-5.16.1-perl-114984-Glob.xs-Extend-stack-when-returning.patch @@ -0,0 +1,76 @@ +From a6636b43dc409e4b49f369c18fedd34332fdb9ab Mon Sep 17 00:00:00 2001 +From: Father Chrysostomos +Date: Thu, 20 Sep 2012 14:25:38 -0700 +Subject: [PATCH] [perl #114984] Glob.xs: Extend stack when returning + +If a pattern passed to File::Glob consists of a space-separated list +of patterns, the stack will only be extended by doglob() enough for +the list returned by each subpattern. So iterate() needs to extend +the stack before copying the list of files from an AV to the stack. + +This fixes a regression introduced in 5.16.0. +--- + MANIFEST | 1 + + ext/File-Glob/Glob.xs | 1 + + ext/File-Glob/t/rt114984.t | 25 +++++++++++++++++++++++++ + 3 files changed, 27 insertions(+) + create mode 100644 ext/File-Glob/t/rt114984.t + +diff --git a/MANIFEST b/MANIFEST +index a7935fc..cceb00e 100644 +--- a/MANIFEST ++++ b/MANIFEST +@@ -3748,6 +3748,7 @@ ext/File-Glob/t/basic.t See if File::Glob works + ext/File-Glob/t/case.t See if File::Glob works + ext/File-Glob/t/global.t See if File::Glob works + ext/File-Glob/TODO File::Glob extension todo list ++ext/File-Glob/t/rt114984.t See if File::Glob works + ext/File-Glob/t/taint.t See if File::Glob works + ext/GDBM_File/GDBM_File.pm GDBM extension Perl module + ext/GDBM_File/GDBM_File.xs GDBM extension external subroutines +diff --git a/ext/File-Glob/Glob.xs b/ext/File-Glob/Glob.xs +index 3ea0590..d74e7a4 100644 +--- a/ext/File-Glob/Glob.xs ++++ b/ext/File-Glob/Glob.xs +@@ -93,6 +93,7 @@ iterate(pTHX_ bool(*globber)(pTHX_ AV *entries, SV *patsv)) + /* chuck it all out, quick or slow */ + if (gimme == G_ARRAY) { + if (!on_stack) { ++ EXTEND(SP, AvFILLp(entries)+1); + Copy(AvARRAY(entries), SP+1, AvFILLp(entries)+1, SV *); + SP += AvFILLp(entries)+1; + } +diff --git a/ext/File-Glob/t/rt114984.t b/ext/File-Glob/t/rt114984.t +new file mode 100644 +index 0000000..4229c6b +--- /dev/null ++++ b/ext/File-Glob/t/rt114984.t +@@ -0,0 +1,25 @@ ++use strict; ++use warnings; ++use v5.16.0; ++use File::Temp 'tempdir'; ++use File::Spec::Functions; ++use Test::More tests => 1; ++ ++my @md = (1..305); ++my @mp = (1000..1205); ++ ++my $path = tempdir uc cleanup => 1; ++ ++foreach (@md) { ++ open(my $f, ">", catfile $path, "md_$_.dat"); ++ close $f; ++} ++ ++foreach (@mp) { ++ open(my $f, ">", catfile $path, "mp_$_.dat"); ++ close $f; ++} ++my @b = glob(qq{$path/mp_[0123456789]*.dat ++ $path/md_[0123456789]*.dat}); ++is scalar(@b), @md+@mp, ++ 'File::Glob extends the stack when returning a long list'; +-- +1.7.11.4 + diff --git a/SOURCES/perl-5.16.1-perl-115206-Don-t-crash-when-vivifying.patch b/SOURCES/perl-5.16.1-perl-115206-Don-t-crash-when-vivifying.patch new file mode 100644 index 00000000..91419464 --- /dev/null +++ b/SOURCES/perl-5.16.1-perl-115206-Don-t-crash-when-vivifying.patch @@ -0,0 +1,75 @@ +Ported to 5.16.1: + +From 4505a31f43ca4e1a0e9203b389f6d4bebab9d899 Mon Sep 17 00:00:00 2001 +From: Father Chrysostomos +Date: Tue, 9 Oct 2012 20:47:18 -0700 +Subject: [PATCH] =?UTF-8?q?[perl=20#115206]=20Don=E2=80=99t=20crash=20when=20?= + =?UTF-8?q?vivifying=20$|?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It was trying to read the currently-selected handle without checking +whether it was selected. It is actually not necessary to initialise +the variable this way, as the next use of get-magic on it will clobber +the cached value. + +This initialisation was originally added in commit d8ce0c9a45. The +bug it was fixing was probably caused by missing FETCH calls that are +no longer missing. +--- + gv.c | 5 +---- + t/op/magic.t | 5 ++++- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/gv.c b/gv.c +index f352452..cf02ca4 100644 +--- a/gv.c ++++ b/gv.c +@@ -1913,10 +1913,6 @@ Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags, + Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX), + "$%c is no longer supported", *name); + break; +- case '|': /* $| */ +- sv_setiv(GvSVn(gv), (IV)(IoFLAGS(GvIOp(PL_defoutgv)) & IOf_FLUSH) != 0); +- goto magicalize; +- + case '\010': /* $^H */ + { + HV *const hv = GvHVn(gv); +@@ -1957,6 +1953,7 @@ Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags, + case '>': /* $> */ + case '\\': /* $\ */ + case '/': /* $/ */ ++ case '|': /* $| */ + case '$': /* $$ */ + case '\001': /* $^A */ + case '\003': /* $^C */ +diff --git a/t/op/magic.t b/t/op/magic.t +index 3fb1ea1..1bcfbd9 100644 +--- a/t/op/magic.t ++++ b/t/op/magic.t +@@ -5,7 +5,7 @@ BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + require './test.pl'; +- plan (tests => 156); ++ plan (tests => 157); + } + + # Test that defined() returns true for magic variables created on the fly, +@@ -581,6 +581,11 @@ SKIP: { + } + } + ++# $| ++fresh_perl_is ++ 'select f; undef *f; ${q/|/}; print STDOUT qq|ok\n|', "ok\n", {}, ++ '[perl #115206] no crash when vivifying $| while *{+select}{IO} is undef'; ++ + # ^^^^^^^^^ New tests go here ^^^^^^^^^ + + SKIP: { +-- +1.7.7.6 + diff --git a/SOURCES/perl-5.16.2-cpan-CPAN-add-NAME-headings-in-modules-with-POD.patch b/SOURCES/perl-5.16.2-cpan-CPAN-add-NAME-headings-in-modules-with-POD.patch new file mode 100644 index 00000000..3d967bf7 --- /dev/null +++ b/SOURCES/perl-5.16.2-cpan-CPAN-add-NAME-headings-in-modules-with-POD.patch @@ -0,0 +1,80 @@ +From a6a40029a3cbad2c7d9b39cec86b9dc4baf428a9 Mon Sep 17 00:00:00 2001 +From: Dominic Hargreaves +Date: Tue, 20 Dec 2011 22:19:45 +0000 +Subject: [PATCH 1/4] cpan/CPAN: add NAME headings in modules with POD + +This fixes the Debian Lintian warning about missing NAME sections in +manpages. + +Bug-Debian: http://bugs.debian.org/650448 + +Patch-Name: fixes/manpage_name_CPAN.diff +--- + cpan/CPAN/lib/CPAN/Debug.pm | 4 ++++ + cpan/CPAN/lib/CPAN/HandleConfig.pm | 6 ++++++ + cpan/CPAN/lib/CPAN/Queue.pm | 4 ++++ + cpan/CPAN/lib/CPAN/Tarzip.pm | 4 ++++ + 4 files changed, 18 insertions(+), 0 deletions(-) + +diff --git a/cpan/CPAN/lib/CPAN/Debug.pm b/cpan/CPAN/lib/CPAN/Debug.pm +index 23c4a36..48e394b 100644 +--- a/cpan/CPAN/lib/CPAN/Debug.pm ++++ b/cpan/CPAN/lib/CPAN/Debug.pm +@@ -71,6 +71,10 @@ sub debug { + + __END__ + ++=head1 NAME ++ ++CPAN::Debug - internal debugging for CPAN.pm ++ + =head1 LICENSE + + This program is free software; you can redistribute it and/or +diff --git a/cpan/CPAN/lib/CPAN/HandleConfig.pm b/cpan/CPAN/lib/CPAN/HandleConfig.pm +index 58ccbe5..bab607d 100644 +--- a/cpan/CPAN/lib/CPAN/HandleConfig.pm ++++ b/cpan/CPAN/lib/CPAN/HandleConfig.pm +@@ -6,6 +6,12 @@ use File::Spec (); + use File::Basename (); + use Carp (); + ++=head1 NAME ++ ++CPAN::HandleConfig - internal configuration handling for CPAN.pm ++ ++=cut ++ + $VERSION = "5.5003"; # see also CPAN::Config::VERSION at end of file + + %can = ( +diff --git a/cpan/CPAN/lib/CPAN/Queue.pm b/cpan/CPAN/lib/CPAN/Queue.pm +index e5d88ce..1222b37 100644 +--- a/cpan/CPAN/lib/CPAN/Queue.pm ++++ b/cpan/CPAN/lib/CPAN/Queue.pm +@@ -201,6 +201,10 @@ sub reqtype_of { + + __END__ + ++=head1 NAME ++ ++CPAN::Queue - internal queue support for CPAN.pm ++ + =head1 LICENSE + + This program is free software; you can redistribute it and/or +diff --git a/cpan/CPAN/lib/CPAN/Tarzip.pm b/cpan/CPAN/lib/CPAN/Tarzip.pm +index 972df6c..cf8aad4 100644 +--- a/cpan/CPAN/lib/CPAN/Tarzip.pm ++++ b/cpan/CPAN/lib/CPAN/Tarzip.pm +@@ -450,6 +450,10 @@ END + + __END__ + ++=head1 NAME ++ ++CPAN::Tarzip - internal handling of tar archives for CPAN.pm ++ + =head1 LICENSE + + This program is free software; you can redistribute it and/or diff --git a/SOURCES/perl-5.16.3-Benchmark.t-remove-CPU-speed-sensitive-test.patch b/SOURCES/perl-5.16.3-Benchmark.t-remove-CPU-speed-sensitive-test.patch new file mode 100644 index 00000000..05783a40 --- /dev/null +++ b/SOURCES/perl-5.16.3-Benchmark.t-remove-CPU-speed-sensitive-test.patch @@ -0,0 +1,73 @@ +From 49bc120dcaeb68e2a870e7d92cf3f217e3487fe5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 2 Jul 2015 11:15:28 +0200 +Subject: [PATCH] Benchmark.t: remove CPU-speed-sensitive test +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is upstream commit ported to 5.16.3: + +commit 9eba9e102c2f8c2ec41a50f4bbe6b09a64dddd31 +Author: David Mitchell +Date: Fri Jul 19 23:10:50 2013 +0100 + + Benchmark.t: remove CPU-speed-sensitive test + + Benchmark.t has been randomly failing test 15 in smokes for ages. + This is the one that checks that a loop run 3*N times burns approximately + 3 times more CPU than when run just N times. + + For the last month the test has included a calibration loop and test, + which does much the same thing, but without using any code from + Benchmark.pm. This has failed just as much, which confirms that its an + issue with the smoke host (such as a variable speed CPU or whatever), + rather than any flaw in the Benchmark.pm library logic. + + So just remove the calibration loop and the dodgy test. + +Signed-off-by: Petr Písař +--- + lib/Benchmark.t | 19 +------------------ + 1 file changed, 1 insertion(+), 18 deletions(-) + +diff --git a/lib/Benchmark.t b/lib/Benchmark.t +index 004092e..62bc1a6 100644 +--- a/lib/Benchmark.t ++++ b/lib/Benchmark.t +@@ -8,7 +8,7 @@ BEGIN { + use warnings; + use strict; + use vars qw($foo $bar $baz $ballast); +-use Test::More tests => 196; ++use Test::More tests => 195; + + use Benchmark qw(:all); + +@@ -86,23 +86,6 @@ my $in_onesec_adj = $in_onesec; + $in_onesec_adj *= (1/$cpu1); # adjust because may not have run for exactly 1s + print "# in_onesec_adj=$in_onesec_adj adjusted iterations\n"; + +-{ +- my $difference = $in_onesec_adj - $estimate; +- my $actual = abs ($difference / $in_onesec_adj); +- cmp_ok($actual, '<=', $delta, "is $in_onesec_adj within $delta of estimate ($estimate)") +- or do { +- diag(" in_threesecs = $in_threesecs"); +- diag(" in_threesecs_adj = $in_threesecs_adj"); +- diag(" cpu3 = $cpu3"); +- diag(" sys3 = $sys3"); +- diag(" estimate = $estimate"); +- diag(" in_onesec = $in_onesec"); +- diag(" in_onesec_adj = $in_onesec_adj"); +- diag(" cpu1 = $cpu1"); +- diag(" sys1 = $sys1"); +- }; +-} +- + # I found that the eval'ed version was 3 times faster than the coderef. + # (now it has a different ballast value) + $baz = 0; +-- +2.4.3 + diff --git a/SOURCES/perl-5.16.3-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch b/SOURCES/perl-5.16.3-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch new file mode 100644 index 00000000..3fdae3e9 --- /dev/null +++ b/SOURCES/perl-5.16.3-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch @@ -0,0 +1,233 @@ +From d309a2f4f975429871da44c33b83e651be0dc83e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Fri, 6 Jun 2014 14:31:59 +0200 +Subject: [PATCH] Destroy {GDBM,NDBM,ODBM,SDBM}_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 *_File +database after spawning a thread: + +use Fcntl; +use SDBM_File; +use threads; +tie(my %dbtest, 'SDBM_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ř +--- + ext/GDBM_File/GDBM_File.xs | 16 ++++++++++------ + ext/NDBM_File/NDBM_File.xs | 16 ++++++++++------ + ext/ODBM_File/ODBM_File.xs | 18 +++++++++++------- + ext/SDBM_File/SDBM_File.xs | 4 +++- + t/lib/dbmt_common.pl | 35 +++++++++++++++++++++++++++++++++++ + 5 files changed, 69 insertions(+), 20 deletions(-) + +diff --git a/ext/GDBM_File/GDBM_File.xs b/ext/GDBM_File/GDBM_File.xs +index afb361c..e7a3808 100644 +--- a/ext/GDBM_File/GDBM_File.xs ++++ b/ext/GDBM_File/GDBM_File.xs +@@ -13,6 +13,7 @@ + #define store_value 3 + + typedef struct { ++ tTHX owner; + GDBM_FILE dbp ; + SV * filter[4]; + int filtering ; +@@ -78,6 +79,7 @@ gdbm_TIEHASH(dbtype, name, read_write, mode, fatal_func = (FATALFUNC)croak) + RETVAL = NULL ; + if ((dbp = gdbm_open(name, GDBM_BLOCKSIZE, read_write, mode, fatal_func))) { + RETVAL = (GDBM_File)safecalloc(1, sizeof(GDBM_File_type)) ; ++ RETVAL->owner = aTHX; + RETVAL->dbp = dbp ; + } + +@@ -98,12 +100,14 @@ gdbm_DESTROY(db) + PREINIT: + int i = store_value; + CODE: +- gdbm_close(db); +- do { +- if (db->filter[i]) +- SvREFCNT_dec(db->filter[i]); +- } while (i-- > 0); +- safefree(db); ++ if (db && db->owner == aTHX) { ++ gdbm_close(db); ++ do { ++ if (db->filter[i]) ++ SvREFCNT_dec(db->filter[i]); ++ } while (i-- > 0); ++ safefree(db); ++ } + + #define gdbm_FETCH(db,key) gdbm_fetch(db->dbp,key) + datum_value +diff --git a/ext/NDBM_File/NDBM_File.xs b/ext/NDBM_File/NDBM_File.xs +index 52e60fc..af223e5 100644 +--- a/ext/NDBM_File/NDBM_File.xs ++++ b/ext/NDBM_File/NDBM_File.xs +@@ -33,6 +33,7 @@ END_EXTERN_C + #define store_value 3 + + typedef struct { ++ tTHX owner; + DBM * dbp ; + SV * filter[4]; + int filtering ; +@@ -71,6 +72,7 @@ ndbm_TIEHASH(dbtype, filename, flags, mode) + RETVAL = NULL ; + if ((dbp = dbm_open(filename, flags, mode))) { + RETVAL = (NDBM_File)safecalloc(1, sizeof(NDBM_File_type)); ++ RETVAL->owner = aTHX; + RETVAL->dbp = dbp ; + } + +@@ -84,12 +86,14 @@ ndbm_DESTROY(db) + PREINIT: + int i = store_value; + CODE: +- dbm_close(db->dbp); +- do { +- if (db->filter[i]) +- SvREFCNT_dec(db->filter[i]); +- } while (i-- > 0); +- safefree(db); ++ if (db && db->owner == aTHX) { ++ dbm_close(db->dbp); ++ do { ++ if (db->filter[i]) ++ SvREFCNT_dec(db->filter[i]); ++ } while (i-- > 0); ++ safefree(db); ++ } + + #define ndbm_FETCH(db,key) dbm_fetch(db->dbp,key) + datum_value +diff --git a/ext/ODBM_File/ODBM_File.xs b/ext/ODBM_File/ODBM_File.xs +index d1ece7f..f7e00a0 100644 +--- a/ext/ODBM_File/ODBM_File.xs ++++ b/ext/ODBM_File/ODBM_File.xs +@@ -45,6 +45,7 @@ datum nextkey(datum key); + #define store_value 3 + + typedef struct { ++ tTHX owner; + void * dbp ; + SV * filter[4]; + int filtering ; +@@ -112,6 +113,7 @@ odbm_TIEHASH(dbtype, filename, flags, mode) + } + dbp = (void*)(dbminit(filename) >= 0 ? &dbmrefcnt : 0); + RETVAL = (ODBM_File)safecalloc(1, sizeof(ODBM_File_type)); ++ RETVAL->owner = aTHX; + RETVAL->dbp = dbp ; + } + OUTPUT: +@@ -124,13 +126,15 @@ DESTROY(db) + dMY_CXT; + int i = store_value; + CODE: +- dbmrefcnt--; +- dbmclose(); +- do { +- if (db->filter[i]) +- SvREFCNT_dec(db->filter[i]); +- } while (i-- > 0); +- safefree(db); ++ if (db && db->owner == aTHX) { ++ dbmrefcnt--; ++ dbmclose(); ++ do { ++ if (db->filter[i]) ++ SvREFCNT_dec(db->filter[i]); ++ } while (i-- > 0); ++ safefree(db); ++ } + + datum_value + odbm_FETCH(db, key) +diff --git a/ext/SDBM_File/SDBM_File.xs b/ext/SDBM_File/SDBM_File.xs +index 291e41b..0bdae9a 100644 +--- a/ext/SDBM_File/SDBM_File.xs ++++ b/ext/SDBM_File/SDBM_File.xs +@@ -10,6 +10,7 @@ + #define store_value 3 + + typedef struct { ++ tTHX owner; + DBM * dbp ; + SV * filter[4]; + int filtering ; +@@ -43,6 +44,7 @@ sdbm_TIEHASH(dbtype, filename, flags, mode) + RETVAL = NULL ; + if ((dbp = sdbm_open(filename,flags,mode))) { + RETVAL = (SDBM_File)safecalloc(1, sizeof(SDBM_File_type)); ++ RETVAL->owner = aTHX; + RETVAL->dbp = dbp ; + } + +@@ -54,7 +56,7 @@ void + sdbm_DESTROY(db) + SDBM_File db + CODE: +- if (db) { ++ if (db && db->owner == aTHX) { + int i = store_value; + sdbm_close(db->dbp); + do { +diff --git a/t/lib/dbmt_common.pl b/t/lib/dbmt_common.pl +index 5d4098c..a0a4d52 100644 +--- a/t/lib/dbmt_common.pl ++++ b/t/lib/dbmt_common.pl +@@ -511,5 +511,40 @@ unlink , $Dfile; + unlink ; + } + ++{ ++ # Check DBM back-ends do not destroy objects from then-spawned threads. ++ # RT#61912. ++ SKIP: { ++ my $threads_count = 2; ++ skip 'Threads are disabled', 3 + 2 * $threads_count ++ unless $Config{usethreads}; ++ use_ok('threads'); ++ ++ my %h; ++ unlink ; ++ ++ my $db = tie %h, $DBM_Class, 'Op1_dbmx', $create, 0640; ++ isa_ok($db, $DBM_Class); ++ ++ 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 ; ++ } ++} ++ + done_testing(); + 1; +-- +1.9.3 + diff --git a/SOURCES/perl-5.16.3-Don-t-leak-deleted-iterator-when-tying-hash.patch b/SOURCES/perl-5.16.3-Don-t-leak-deleted-iterator-when-tying-hash.patch new file mode 100644 index 00000000..72806125 --- /dev/null +++ b/SOURCES/perl-5.16.3-Don-t-leak-deleted-iterator-when-tying-hash.patch @@ -0,0 +1,60 @@ +From 677ffc8fe97148750054b11e7fbd21c98f860ee1 Mon Sep 17 00:00:00 2001 +From: Father Chrysostomos +Date: Fri, 21 Sep 2012 18:23:20 -0700 +Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20leak=20deleted=20iterator=20whe?= + =?UTF-8?q?n=20tying=20hash?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Petr Pisar: ported to 5.16.3 +--- + pp_sys.c | 7 +++++++ + t/op/tie.t | 13 +++++++++++++ + 2 files changed, 20 insertions(+) + +diff --git a/pp_sys.c b/pp_sys.c +index 034a2d0..0e35d59 100644 +--- a/pp_sys.c ++++ b/pp_sys.c +@@ -852,9 +852,16 @@ PP(pp_tie) + + switch(SvTYPE(varsv)) { + case SVt_PVHV: ++ { ++ HE *entry; + methname = "TIEHASH"; ++ if (HvLAZYDEL(varsv) && (entry = HvEITER((HV *)varsv))) { ++ HvLAZYDEL_off(varsv); ++ hv_free_ent((HV *)varsv, entry); ++ } + HvEITER_set(MUTABLE_HV(varsv), 0); + break; ++ } + case SVt_PVAV: + methname = "TIEARRAY"; + if (!AvREAL(varsv)) { +diff --git a/t/op/tie.t b/t/op/tie.t +index 9301bb3..5a536b8 100644 +--- a/t/op/tie.t ++++ b/t/op/tie.t +@@ -1259,3 +1259,16 @@ $h{i}{j} = 'k'; + print $h{i}{j}, "\n"; + EXPECT + k ++######## ++ ++# NAME Test that tying a hash does not leak a deleted iterator ++# This produced unbalanced string table warnings under ++# PERL_DESTRUCT_LEVEL=2. ++package l { ++ sub TIEHASH{bless[]} ++} ++$h = {foo=>0}; ++each %$h; ++delete $$h{foo}; ++tie %$h, 'l'; ++EXPECT +-- +1.8.1.4 + diff --git a/SOURCES/perl-5.16.3-Don-t-leak-if-hh-copying-dies.patch b/SOURCES/perl-5.16.3-Don-t-leak-if-hh-copying-dies.patch new file mode 100644 index 00000000..eb350b67 --- /dev/null +++ b/SOURCES/perl-5.16.3-Don-t-leak-if-hh-copying-dies.patch @@ -0,0 +1,109 @@ +From f5488561bdaab57380bf07e8e66778503a41aca3 Mon Sep 17 00:00:00 2001 +From: Father Chrysostomos +Date: Sun, 23 Sep 2012 12:42:15 -0700 +Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20leak=20if=20hh=20copying=20dies?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When %^H is copied on entering a new scope, if it happens to have been +tied it can die. This was resulting in leaks, because no protections +were added to handle that case. + +The two things that were leaking were the new hash in hv_copy_hints_hv +and the new value (for an element) in newSVsv. + +By fixing newSVsv itself, this also fixes any potential leaks when +other pieces of code call newSVsv on explosive values. + +Petr Pisar: Ported to 5.16.3 +--- + hv.c | 6 ++++++ + sv.c | 7 ++++--- + t/op/svleak.t | 22 +++++++++++++++++++++- + 3 files changed, 31 insertions(+), 4 deletions(-) + +diff --git a/hv.c b/hv.c +index 3c35341..29d6352 100644 +--- a/hv.c ++++ b/hv.c +@@ -1440,6 +1440,9 @@ Perl_hv_copy_hints_hv(pTHX_ HV *const ohv) + const I32 riter = HvRITER_get(ohv); + HE * const eiter = HvEITER_get(ohv); + ++ ENTER; ++ SAVEFREESV(hv); ++ + while (hv_max && hv_max + 1 >= hv_fill * 2) + hv_max = hv_max / 2; + HvMAX(hv) = hv_max; +@@ -1461,6 +1464,9 @@ Perl_hv_copy_hints_hv(pTHX_ HV *const ohv) + } + HvRITER_set(ohv, riter); + HvEITER_set(ohv, eiter); ++ ++ SvREFCNT_inc_simple_void_NN(hv); ++ LEAVE; + } + hv_magic(hv, NULL, PERL_MAGIC_hints); + return hv; +diff --git a/sv.c b/sv.c +index a43feac..597d71b 100644 +--- a/sv.c ++++ b/sv.c +@@ -8764,11 +8764,12 @@ Perl_newSVsv(pTHX_ register SV *const old) + Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL), "semi-panic: attempt to dup freed string"); + return NULL; + } ++ /* Do this here, otherwise we leak the new SV if this croaks. */ ++ SvGETMAGIC(old); + new_SV(sv); +- /* SV_GMAGIC is the default for sv_setv() +- SV_NOSTEAL prevents TEMP buffers being, well, stolen, and saves games ++ /* SV_NOSTEAL prevents TEMP buffers being, well, stolen, and saves games + with SvTEMP_off and SvTEMP_on round a call to sv_setsv. */ +- sv_setsv_flags(sv, old, SV_GMAGIC | SV_NOSTEAL); ++ sv_setsv_flags(sv, old, SV_NOSTEAL); + return sv; + } + +diff --git a/t/op/svleak.t b/t/op/svleak.t +index 2f09af3..011c184 100644 +--- a/t/op/svleak.t ++++ b/t/op/svleak.t +@@ -13,7 +13,7 @@ BEGIN { + or skip_all("XS::APItest not available"); + } + +-plan tests => 23; ++plan tests => 24; + + # run some code N times. If the number of SVs at the end of loop N is + # greater than (N-1)*delta at the end of loop 1, we've got a leak +@@ -176,3 +176,23 @@ leak(2, 0, sub { + each %$h; + undef $h; + }, 'tied hash iteration does not leak'); ++ ++# [perl #107000] ++package hhtie { ++ sub TIEHASH { bless [] } ++ sub STORE { $_[0][0]{$_[1]} = $_[2] } ++ sub FETCH { die if $explosive; $_[0][0]{$_[1]} } ++ sub FIRSTKEY { keys %{$_[0][0]}; each %{$_[0][0]} } ++ sub NEXTKEY { each %{$_[0][0]} } ++} ++leak(2,!!$Config{mad}, sub { ++ eval q` ++ BEGIN { ++ $hhtie::explosive = 0; ++ tie %^H, hhtie; ++ $^H{foo} = bar; ++ $hhtie::explosive = 1; ++ } ++ { 1; } ++ `; ++}, 'hint-hash copying does not leak'); +-- +1.8.1.4 + diff --git a/SOURCES/perl-5.16.3-File-Glob-Dup-glob-state-in-CLONE.patch b/SOURCES/perl-5.16.3-File-Glob-Dup-glob-state-in-CLONE.patch new file mode 100644 index 00000000..a26b5857 --- /dev/null +++ b/SOURCES/perl-5.16.3-File-Glob-Dup-glob-state-in-CLONE.patch @@ -0,0 +1,177 @@ +From faa03ffb8ccbf754d38d041570fcf2ce8816f36b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20=C5=A0abata?= +Date: Wed, 2 Sep 2015 16:24:58 +0200 +Subject: [PATCH] File::Glob: Dup glob state in CLONE() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +File::Glob: Dup glob state in CLONE() + +This solves [perl #119897] and [perl #117823], and restores the +behavior of glob() in conjunction with threads of 5.14 and older. + +Since 5.16, code that used glob() inside a thread had been +unintentionally sharing state between threads, which lead to things +like this crashing and failing assertions: + +./perl -Ilib -Mthreads -e 'scalar glob("*"); threads->create(sub { glob("*") })->join();' + +Signed-off-by: Petr Šabata +--- + MANIFEST | 1 + + ext/File-Glob/Glob.xs | 33 ++++++++++++++++++++++ + ext/File-Glob/t/threads.t | 71 +++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 105 insertions(+) + create mode 100644 ext/File-Glob/t/threads.t + +diff --git a/MANIFEST b/MANIFEST +index 181bb3f..9771022 100644 +--- a/MANIFEST ++++ b/MANIFEST +@@ -3683,6 +3683,7 @@ ext/File-Glob/t/global.t See if File::Glob works + ext/File-Glob/TODO File::Glob extension todo list + ext/File-Glob/t/rt114984.t See if File::Glob works + ext/File-Glob/t/taint.t See if File::Glob works ++ext/File-Glob/t/threads.t See if File::Glob + threads works + ext/GDBM_File/GDBM_File.pm GDBM extension Perl module + ext/GDBM_File/GDBM_File.xs GDBM extension external subroutines + ext/GDBM_File/hints/sco.pl Hint for GDBM_File for named architecture +diff --git a/ext/File-Glob/Glob.xs b/ext/File-Glob/Glob.xs +index d74e7a4..6c69aa6 100644 +--- a/ext/File-Glob/Glob.xs ++++ b/ext/File-Glob/Glob.xs +@@ -9,6 +9,9 @@ + #define MY_CXT_KEY "File::Glob::_guts" XS_VERSION + + typedef struct { ++#ifdef USE_ITHREADS ++ tTHX interp; ++#endif + int x_GLOB_ERROR; + HV * x_GLOB_ENTRIES; + } my_cxt_t; +@@ -380,6 +383,33 @@ PPCODE: + iterate(aTHX_ doglob_iter_wrapper); + SPAGAIN; + ++#ifdef USE_ITHREADS ++ ++void ++CLONE(...) ++INIT: ++ HV *glob_entries_clone = NULL; ++CODE: ++ PERL_UNUSED_ARG(items); ++ { ++ dMY_CXT; ++ if ( MY_CXT.x_GLOB_ENTRIES ) { ++ CLONE_PARAMS param; ++ param.stashes = NULL; ++ param.flags = 0; ++ param.proto_perl = MY_CXT.interp; ++ ++ glob_entries_clone = MUTABLE_HV(sv_dup_inc((SV*)MY_CXT.x_GLOB_ENTRIES, ¶m)); ++ } ++ } ++ { ++ MY_CXT_CLONE; ++ MY_CXT.x_GLOB_ENTRIES = glob_entries_clone; ++ MY_CXT.interp = aTHX; ++ } ++ ++#endif ++ + BOOT: + { + #ifndef PERL_EXTERNAL_GLOB +@@ -394,6 +424,9 @@ BOOT: + { + dMY_CXT; + MY_CXT.x_GLOB_ENTRIES = NULL; ++#ifdef USE_ITHREADS ++ MY_CXT.interp = aTHX; ++#endif + } + } + +diff --git a/ext/File-Glob/t/threads.t b/ext/File-Glob/t/threads.t +new file mode 100644 +index 0000000..141450a +--- /dev/null ++++ b/ext/File-Glob/t/threads.t +@@ -0,0 +1,71 @@ ++#!./perl ++ ++BEGIN { ++ chdir 't' if -d 't'; ++ @INC = '../lib'; ++ require Config; import Config; ++ if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) { ++ print "1..0\n"; ++ exit 0; ++ } ++} ++use strict; ++use warnings; ++# Test::More needs threads pre-loaded ++use if $Config{useithreads}, 'threads'; ++use Test::More; ++ ++BEGIN { ++ if (! $Config{'useithreads'}) { ++ plan skip_all => "Perl not compiled with 'useithreads'"; ++ } ++} ++ ++use File::Temp qw(tempdir); ++use File::Spec qw(); ++use File::Glob qw(csh_glob); ++ ++my($dir) = tempdir(CLEANUP => 1) ++ or die "Could not create temporary directory"; ++ ++my @temp_files = qw(1_file 2_file 3_file); ++for my $file (@temp_files) { ++ open my $fh, ">", File::Spec->catfile($dir, $file) ++ or die "Could not create file $dir/$file: $!"; ++ close $fh; ++} ++my $cwd = Cwd::cwd(); ++chdir $dir ++ or die "Could not chdir to $dir: $!"; ++ ++sub do_glob { scalar csh_glob("*") } ++# Stablish some glob state ++my $first_file = do_glob(); ++is($first_file, $temp_files[0]); ++ ++my @files; ++push @files, threads->create(\&do_glob)->join() for 1..5; ++is_deeply( ++ \@files, ++ [($temp_files[1]) x 5], ++ "glob() state is cloned for new threads" ++); ++ ++@files = threads->create({'context' => 'list'}, ++ sub { ++ return do_glob(), threads->create(\&do_glob)->join() ++ })->join(); ++ ++is_deeply( ++ \@files, ++ [@temp_files[1,2]], ++ "..and for new threads inside threads" ++); ++ ++my $second_file = do_glob(); ++is($second_file, $temp_files[1], "state doesn't leak from threads"); ++ ++chdir $cwd ++ or die "Could not chdir back to $cwd: $!"; ++ ++done_testing; +-- +2.4.3 + diff --git a/SOURCES/perl-5.16.3-Fix-incorrect-handling-of-CRLF-in-Net-FTP.patch b/SOURCES/perl-5.16.3-Fix-incorrect-handling-of-CRLF-in-Net-FTP.patch new file mode 100644 index 00000000..eadad5bb --- /dev/null +++ b/SOURCES/perl-5.16.3-Fix-incorrect-handling-of-CRLF-in-Net-FTP.patch @@ -0,0 +1,38 @@ +From 7c8b0c1259db2bdd372cc1bdb63bf5b89a969a4a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Tue, 27 Oct 2015 16:33:43 +0100 +Subject: [PATCH] Fix incorrect handling of CRLF in Net::FTP +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +libnet upstream commit ported to perl-5.16.3: + +From 24eb8619451c3d8529d903d9133d03a7f447488f Mon Sep 17 00:00:00 2001 +From: Steve Hay +Date: Fri, 3 Jan 2014 17:41:55 +0000 +Subject: [PATCH] Fix incorrect handling of CRLF in Net::FTP + +Signed-off-by: Petr Písař +--- + cpan/libnet/Net/FTP/A.pm | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/cpan/libnet/Net/FTP/A.pm b/cpan/libnet/Net/FTP/A.pm +index 427d02b..886d252 100644 +--- a/cpan/libnet/Net/FTP/A.pm ++++ b/cpan/libnet/Net/FTP/A.pm +@@ -77,8 +77,8 @@ sub write { + my $timeout = @_ ? shift: $data->timeout; + + my $nr = (my $tmp = substr($buf, 0, $size)) =~ tr/\r\n/\015\012/; +- $tmp =~ s/([^\015])\012/$1\015\012/sg if $nr; +- $tmp =~ s/^\012/\015\012/ unless ${*$data}{'net_ftp_outcr'}; ++ $tmp =~ s/(? +Date: Fri, 21 Sep 2012 22:01:19 -0700 +Subject: [PATCH] Free iterator when freeing tied hash + +The current iterator was leaking when a tied hash was freed or +undefined. + +Since we already have a mechanism, namely HvLAZYDEL, for freeing +HvEITER when not referenced elsewhere, we can use that. + +Petr Pisar: Ported to 5.16.3. +--- + hv.c | 3 +++ + t/op/svleak.t | 15 ++++++++++++++- + 2 files changed, 17 insertions(+), 1 deletion(-) + +diff --git a/hv.c b/hv.c +index a031703..3c35341 100644 +--- a/hv.c ++++ b/hv.c +@@ -2346,6 +2346,7 @@ Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags) + if (entry) { + sv_setsv(key, HeSVKEY_force(entry)); + SvREFCNT_dec(HeSVKEY(entry)); /* get rid of previous key */ ++ HeSVKEY_set(entry, NULL); + } + else { + char *k; +@@ -2353,6 +2354,7 @@ Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags) + + /* one HE per MAGICAL hash */ + iter->xhv_eiter = entry = new_HE(); /* HvEITER(hv) = new_HE() */ ++ HvLAZYDEL_on(hv); /* make sure entry gets freed */ + Zero(entry, 1, HE); + Newxz(k, HEK_BASESIZE + sizeof(const SV *), char); + hek = (HEK*)k; +@@ -2369,6 +2371,7 @@ Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags) + Safefree(HeKEY_hek(entry)); + del_HE(entry); + iter->xhv_eiter = NULL; /* HvEITER(hv) = NULL */ ++ HvLAZYDEL_off(hv); + return NULL; + } + } +diff --git a/t/op/svleak.t b/t/op/svleak.t +index 6cfee2e..2f09af3 100644 +--- a/t/op/svleak.t ++++ b/t/op/svleak.t +@@ -13,7 +13,7 @@ BEGIN { + or skip_all("XS::APItest not available"); + } + +-plan tests => 22; ++plan tests => 23; + + # run some code N times. If the number of SVs at the end of loop N is + # greater than (N-1)*delta at the end of loop 1, we've got a leak +@@ -163,3 +163,16 @@ leak(2,0,sub { !$^V }, '[perl #109762] version object in boolean context'); + + # [perl #114764] Attributes leak scalars + leak(2, 0, sub { eval 'my $x : shared' }, 'my $x :shared used to leak'); ++ ++# Tied hash iteration was leaking if the hash was freed before itera- ++# tion was over. ++package t { ++ sub TIEHASH { bless [] } ++ sub FIRSTKEY { 0 } ++} ++leak(2, 0, sub { ++ my $h = {}; ++ tie %$h, t; ++ each %$h; ++ undef $h; ++}, 'tied hash iteration does not leak'); +-- +1.8.1.4 + diff --git a/SOURCES/perl-5.16.3-Properly-duplicate-PerlIO-encoding-objects.patch b/SOURCES/perl-5.16.3-Properly-duplicate-PerlIO-encoding-objects.patch new file mode 100644 index 00000000..b75ad1eb --- /dev/null +++ b/SOURCES/perl-5.16.3-Properly-duplicate-PerlIO-encoding-objects.patch @@ -0,0 +1,154 @@ +From a1e8f04634112d64383f0079421cf9cf5a154c0e Mon Sep 17 00:00:00 2001 +From: Vincent Pit +Date: Fri, 28 Aug 2015 14:17:00 -0300 +Subject: [PATCH] Properly duplicate PerlIO::encoding objects +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Upstream commit ported to 5.16.3: + +commit 0ee3fa26f660ac426e3e082f77d806c9d1471f93 +Author: Vincent Pit +Date: Fri Aug 28 14:17:00 2015 -0300 + + Properly duplicate PerlIO::encoding objects + + PerlIO::encoding objects are usually initialized by calling Perl methods, + essentially from the pushed() and getarg() callbacks. During cloning, the + PerlIO API will by default call these methods to initialize the duplicate + struct when the PerlIOBase parent struct is itself duplicated. This does + not behave so well because the perl interpreter is not ready to call + methods at this point, for the stacks are not set up yet. + + The proper way to duplicate the PerlIO::encoding object is to call sv_dup() + on its members from the dup() PerlIO callback. So the only catch is to make + the getarg() and pushed() calls implied by the duplication of the underlying + PerlIOBase object aware that they are called during cloning, and make them + wait that the control flow returns to the dup() callback. Fortunately, + getarg() knows since its param argument is then non-null, and its return + value is passed immediately to pushed(), so it is enough to tag this + returned value with a custom magic so that pushed() can see it is being + called during cloning. + + This fixes [RT #31923]. + +Signed-off-by: Petr Písař +--- + MANIFEST | 1 + + ext/PerlIO-encoding/encoding.xs | 25 +++++++++++++++++++++++-- + ext/PerlIO-encoding/t/threads.t | 35 +++++++++++++++++++++++++++++++++++ + 3 files changed, 59 insertions(+), 2 deletions(-) + create mode 100644 ext/PerlIO-encoding/t/threads.t + +diff --git a/MANIFEST b/MANIFEST +index 02e8234..5caa981 100644 +--- a/MANIFEST ++++ b/MANIFEST +@@ -3791,6 +3791,7 @@ ext/PerlIO-encoding/MANIFEST PerlIO::encoding list of files + ext/PerlIO-encoding/t/encoding.t See if PerlIO encoding conversion works + ext/PerlIO-encoding/t/fallback.t See if PerlIO fallbacks work + ext/PerlIO-encoding/t/nolooping.t Tests for PerlIO::encoding ++ext/PerlIO-encoding/t/threads.t Tests PerlIO::encoding and threads + ext/PerlIO-mmap/mmap.pm PerlIO layer for memory maps + ext/PerlIO-mmap/mmap.xs PerlIO layer for memory maps + ext/PerlIO-scalar/scalar.pm PerlIO layer for scalars +diff --git a/ext/PerlIO-encoding/encoding.xs b/ext/PerlIO-encoding/encoding.xs +index 98d89e9..d5efb62 100644 +--- a/ext/PerlIO-encoding/encoding.xs ++++ b/ext/PerlIO-encoding/encoding.xs +@@ -49,13 +49,23 @@ typedef struct { + + #define NEEDS_LINES 1 + ++static const MGVTBL PerlIOEncode_tag = { 0, 0, 0, 0, 0, 0, 0, 0 }; ++ + SV * + PerlIOEncode_getarg(pTHX_ PerlIO * f, CLONE_PARAMS * param, int flags) + { + PerlIOEncode *e = PerlIOSelf(f, PerlIOEncode); +- SV *sv = &PL_sv_undef; +- PERL_UNUSED_ARG(param); ++ SV *sv; + PERL_UNUSED_ARG(flags); ++ /* During cloning, return an undef token object so that _pushed() knows ++ * that it should not call methods and wait for _dup() to actually dup the ++ * encoding object. */ ++ if (param) { ++ sv = newSV(0); ++ sv_magicext(sv, NULL, PERL_MAGIC_ext, &PerlIOEncode_tag, 0, 0); ++ return sv; ++ } ++ sv = &PL_sv_undef; + if (e->enc) { + dSP; + /* Not 100% sure stack swap is right thing to do during dup ... */ +@@ -86,6 +96,14 @@ PerlIOEncode_pushed(pTHX_ PerlIO * f, const char *mode, SV * arg, PerlIO_funcs * + IV code = PerlIOBuf_pushed(aTHX_ f, mode, Nullsv,tab); + SV *result = Nullsv; + ++ if (SvTYPE(arg) >= SVt_PVMG ++ && mg_findext(arg, PERL_MAGIC_ext, &PerlIOEncode_tag)) { ++ e->enc = NULL; ++ e->chk = NULL; ++ e->inEncodeCall = 0; ++ return code; ++ } ++ + PUSHSTACKi(PERLSI_MAGIC); + SPAGAIN; + +@@ -558,6 +576,9 @@ PerlIOEncode_dup(pTHX_ PerlIO * f, PerlIO * o, + if (oe->enc) { + fe->enc = PerlIO_sv_dup(aTHX_ oe->enc, params); + } ++ if (oe->chk) { ++ fe->chk = PerlIO_sv_dup(aTHX_ oe->chk, params); ++ } + } + return f; + } +diff --git a/ext/PerlIO-encoding/t/threads.t b/ext/PerlIO-encoding/t/threads.t +new file mode 100644 +index 0000000..64f0e55 +--- /dev/null ++++ b/ext/PerlIO-encoding/t/threads.t +@@ -0,0 +1,35 @@ ++#!perl ++ ++use strict; ++use warnings; ++ ++BEGIN { ++ use Config; ++ if ($Config{extensions} !~ /\bEncode\b/) { ++ print "1..0 # Skip: no Encode\n"; ++ exit 0; ++ } ++ unless ($Config{useithreads}) { ++ print "1..0 # Skip: no threads\n"; ++ exit 0; ++ } ++} ++ ++use threads; ++ ++use Test::More tests => 3 + 1; ++ ++binmode *STDOUT, ':encoding(UTF-8)'; ++ ++SKIP: { ++ local $@; ++ my $ret = eval { ++ my $thread = threads->create(sub { pass 'in thread'; return 1 }); ++ skip 'test thread could not be spawned' => 3 unless $thread; ++ $thread->join; ++ }; ++ is $@, '', 'thread did not croak'; ++ is $ret, 1, 'thread returned the right value'; ++} ++ ++pass 'passes at least one test'; +-- +2.5.5 + diff --git a/SOURCES/perl-5.16.3-Remove-PERL_ASYNC_CHECK-from-Perl_leave_scope.patch b/SOURCES/perl-5.16.3-Remove-PERL_ASYNC_CHECK-from-Perl_leave_scope.patch new file mode 100644 index 00000000..0e6ee228 --- /dev/null +++ b/SOURCES/perl-5.16.3-Remove-PERL_ASYNC_CHECK-from-Perl_leave_scope.patch @@ -0,0 +1,148 @@ +From 13716dc35cd0869b98bd30cebbdeb8d48ab07a8b Mon Sep 17 00:00:00 2001 +From: Nicholas Clark +Date: Sat, 14 Apr 2012 15:51:33 +0200 +Subject: [PATCH] Remove PERL_ASYNC_CHECK() from Perl_leave_scope(). + +PERL_ASYNC_CHECK() was added to Perl_leave_scope() as part of commit +f410a2119920dd04, which moved signal dispatch from the runloop to +control flow ops, to mitigate nearly all of the speed cost of safe +signals. + +The assumption was that scope exit was a safe place to dispatch signals. +However, this is not true, as parts of the regex engine call +leave_scope(), the regex engine stores some state in per-interpreter +variables, and code called within signal handlers can change these +values. + +Hence remove the call to PERL_ASYNC_CHECK() from Perl_leave_scope(), and +add it explicitly in the various OPs which were relying on their call to +leave_scope() to dispatch any pending signals. Also add a +PERL_ASYNC_CHECK() to the exit of the runloop, which ensures signals +still dispatch from S_sortcv() and S_sortcv_stacked(), as well as +addressing one of the concerns in the commit message of +f410a2119920dd04: + + Subtle bugs might remain - there might be constructions that enter + the runloop (where signals used to be dispatched) but don't contain + any PERL_ASYNC_CHECK() calls themselves. + +Finally, move the PERL_ASYNC_CHECK(); added by that commit to pp_goto to +the end of the function, to be consistent with the positioning of all +other PERL_ASYNC_CHECK() calls - at the beginning or end of OP +functions, hence just before the return to or just after the call from +the runloop, and hence effectively at the same point as the previous +location of PERL_ASYNC_CHECK() in the runloop. +--- + dump.c | 1 + + pp_ctl.c | 11 ++++++++++- + run.c | 1 + + scope.c | 2 -- + 4 files changed, 12 insertions(+), 3 deletions(-) + +diff --git a/dump.c b/dump.c +index b238ee0..d770a65 100644 +--- a/dump.c ++++ b/dump.c +@@ -2118,6 +2118,7 @@ Perl_runops_debug(pTHX) + } + } while ((PL_op = PL_op->op_ppaddr(aTHX))); + DEBUG_l(Perl_deb(aTHX_ "leaving RUNOPS level\n")); ++ PERL_ASYNC_CHECK(); + + TAINT_NOT; + return 0; +diff --git a/pp_ctl.c b/pp_ctl.c +index fd92efa..6206a25 100644 +--- a/pp_ctl.c ++++ b/pp_ctl.c +@@ -377,6 +377,7 @@ PP(pp_substcont) + TAINT_NOT; + LEAVE_SCOPE(cx->sb_oldsave); + POPSUBST(cx); ++ PERL_ASYNC_CHECK(); + RETURNOP(pm->op_next); + /* NOTREACHED */ + } +@@ -2732,6 +2733,7 @@ PP(pp_next) + if (PL_scopestack_ix < inner) + leave_scope(PL_scopestack[PL_scopestack_ix]); + PL_curcop = cx->blk_oldcop; ++ PERL_ASYNC_CHECK(); + return (cx)->blk_loop.my_op->op_nextop; + } + +@@ -2774,6 +2776,7 @@ PP(pp_redo) + LEAVE_SCOPE(oldsave); + FREETMPS; + PL_curcop = cx->blk_oldcop; ++ PERL_ASYNC_CHECK(); + return redo_op; + } + +@@ -2978,6 +2981,7 @@ PP(pp_goto) + PUTBACK; + (void)(*CvXSUB(cv))(aTHX_ cv); + LEAVE; ++ PERL_ASYNC_CHECK(); + return retop; + } + else { +@@ -3049,6 +3053,7 @@ PP(pp_goto) + } + } + } ++ PERL_ASYNC_CHECK(); + RETURNOP(CvSTART(cv)); + } + } +@@ -3209,6 +3214,7 @@ PP(pp_goto) + PL_do_undump = FALSE; + } + ++ PERL_ASYNC_CHECK(); + RETURNOP(retop); + } + +@@ -5129,10 +5135,13 @@ PP(pp_leavewhen) + leave_scope(PL_scopestack[PL_scopestack_ix]); + PL_curcop = cx->blk_oldcop; + ++ PERL_ASYNC_CHECK(); + return cx->blk_loop.my_op->op_nextop; + } +- else ++ else { ++ PERL_ASYNC_CHECK(); + RETURNOP(cx->blk_givwhen.leave_op); ++ } + } + + PP(pp_continue) +diff --git a/run.c b/run.c +index 7c1d0aa..774852d 100644 +--- a/run.c ++++ b/run.c +@@ -40,6 +40,7 @@ Perl_runops_standard(pTHX) + register OP *op = PL_op; + while ((PL_op = op = op->op_ppaddr(aTHX))) { + } ++ PERL_ASYNC_CHECK(); + + TAINT_NOT; + return 0; +diff --git a/scope.c b/scope.c +index ffd0552..121d1f7 100644 +--- a/scope.c ++++ b/scope.c +@@ -1168,8 +1168,6 @@ Perl_leave_scope(pTHX_ I32 base) + } + + PL_tainted = was; +- +- PERL_ASYNC_CHECK(); + } + + void +-- +1.8.1.4 + diff --git a/SOURCES/perl-5.16.3-Synchronize-pod2html-usage-output-and-its-POD-text.patch b/SOURCES/perl-5.16.3-Synchronize-pod2html-usage-output-and-its-POD-text.patch new file mode 100644 index 00000000..0894e064 --- /dev/null +++ b/SOURCES/perl-5.16.3-Synchronize-pod2html-usage-output-and-its-POD-text.patch @@ -0,0 +1,191 @@ +From 9b9923c633797a232ac871903c3c14833036aa28 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Sun, 9 Jun 2013 14:14:24 -0400 +Subject: [PATCH] Synchronize pod2html usage output and its POD text + + +Petr Pisar: Port to perl-5.16.3. + +diff --git a/ext/Pod-Html/bin/pod2html b/ext/Pod-Html/bin/pod2html +index c422ebf..b022859 100644 +--- a/ext/Pod-Html/bin/pod2html ++++ b/ext/Pod-Html/bin/pod2html +@@ -6,10 +6,14 @@ pod2html - convert .pod files to .html files + + =head1 SYNOPSIS + +- pod2html --help --htmlroot= --infile= --outfile= ++ pod2html --help --htmldir= --htmlroot= ++ --infile= --outfile= + --podpath=:...: --podroot= +- --recurse --norecurse --verbose +- --index --noindex --title= ++ --cachedir= --flush --recurse --norecurse ++ --quiet --noquiet --verbose --noverbose ++ --index --noindex --backlink --nobacklink ++ --header --noheader --poderrors --nopoderrors ++ --css= --title= + + =head1 DESCRIPTION + +@@ -27,12 +31,27 @@ pod2html takes the following arguments: + + Displays the usage message. + ++=item htmldir ++ ++ --htmldir=name ++ ++Sets the directory to which all cross references in the resulting HTML file ++will be relative. Not passing this causes all links to be absolute since this ++is the value that tells Pod::Html the root of the documentation tree. ++ ++Do not use this and --htmlroot in the same call to pod2html; they are mutually ++exclusive. ++ + =item htmlroot + +- --htmlroot=name ++ --htmlroot=URL ++ ++Sets the base URL for the HTML files. When cross-references are made, the ++HTML root is prepended to the URL. ++ ++Do not use this if relative links are desired: use --htmldir instead. + +-Sets the base URL for the HTML files. When cross-references are made, +-the HTML root is prepended to the URL. ++Do not pass both this and --htmldir to pod2html; they are mutually exclusive. + + =item infile + +@@ -61,6 +80,59 @@ Specify the base directory for finding library pods. + Specify which subdirectories of the podroot contain pod files whose + HTML converted forms can be linked-to in cross-references. + ++=item cachedir ++ ++ --cachedir=name ++ ++Specify which directory is used for storing cache. Default directory is the ++current working directory. ++ ++=item flush ++ ++ --flush ++ ++Flush the cache. ++ ++=item backlink ++ ++ --backlink ++ ++Turn =head1 directives into links pointing to the top of the HTML file. ++ ++=item nobacklink ++ ++ --nobacklink ++ ++Do not turn =head1 directives into links pointing to the top of the HTML file ++(default behaviour). ++ ++=item header ++ ++ --header ++ ++Create header and footer blocks containing the text of the "NAME" section. ++ ++=item noheader ++ ++ --noheader ++ ++Do not create header and footer blocks containing the text of the "NAME" ++section (default behaviour). ++ ++=item poderrors ++ ++ --poderrors ++ ++Include a "POD ERRORS" section in the outfile if there were any POD errors in ++the infile (default behaviour). ++ ++=item nopoderrors ++ ++ --nopoderrors ++ ++Do not include a "POD ERRORS" section in the outfile if there were any POD ++errors in the infile. ++ + =item index + + --index +@@ -86,18 +158,44 @@ Recurse into subdirectories specified in podpath (default behaviour). + + Do not recurse into subdirectories specified in podpath. + ++=item css ++ ++ --css=URL ++ ++Specify the URL of cascading style sheet to link from resulting HTML file. ++Default is none style sheet. ++ + =item title + + --title=title + + Specify the title of the resulting HTML file. + ++=item quiet ++ ++ --quiet ++ ++Don't display mostly harmless warning messages. ++ ++=item noquiet ++ ++ --noquiet ++ ++Display mostly harmless warning messages (default behaviour). But this is not ++the same as "verbose" mode. ++ + =item verbose + + --verbose + + Display progress messages. + ++=item noverbose ++ ++ --noverbose ++ ++Do not display progress messages (default behaviour). ++ + =back + + =head1 AUTHOR +diff --git a/ext/Pod-Html/lib/Pod/Html.pm b/ext/Pod-Html/lib/Pod/Html.pm +index 72b37c2..3feb812 100644 +--- a/ext/Pod-Html/lib/Pod/Html.pm ++++ b/ext/Pod-Html/lib/Pod/Html.pm +@@ -447,9 +447,14 @@ sub usage { + my $podfile = shift; + warn "$0: $podfile: @_\n" if @_; + die < --infile= --outfile= +- --podpath=:...: --podroot= --cachedir= +- --recurse --verbose --index --norecurse --noindex ++Usage: $0 --help --htmldir= --htmlroot= ++ --infile= --outfile= ++ --podpath=:...: --podroot= ++ --cachedir= --flush --recurse --norecurse ++ --quiet --noquiet --verbose --noverbose ++ --index --noindex --backlink --nobacklink ++ --header --noheader --poderrors --nopoderrors ++ --css= --title= + + --[no]backlink - turn =head1 directives into links pointing to the top of + the page (off by default). +-- +1.8.1.4 + diff --git a/SOURCES/perl-5.16.3-t-op-taint.t-Perform-SHA-256-algorithm-by-crypt-if-d.patch b/SOURCES/perl-5.16.3-t-op-taint.t-Perform-SHA-256-algorithm-by-crypt-if-d.patch new file mode 100644 index 00000000..2948fc32 --- /dev/null +++ b/SOURCES/perl-5.16.3-t-op-taint.t-Perform-SHA-256-algorithm-by-crypt-if-d.patch @@ -0,0 +1,51 @@ +From 5984f005f7a08feca52509658cff1c56d768e057 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 1 Dec 2014 15:28:36 +0100 +Subject: [PATCH] t/op/taint.t: Perform SHA-256 algorithm by crypt() if default + one is disabled +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The crypt(3) call may return NULL. This is the case on FIPS-enabled +platforms. Then "tainted crypt" test would fail. + +See RT#121591 for similar fix in t/op/crypt.t. + +Signed-off-by: Petr Písař + +Petr Pisar: Ported to 5.16.3. + +Signed-off-by: Petr Písař +--- + t/op/taint.t | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/t/op/taint.t b/t/op/taint.t +index 9cea740..478e574 100644 +--- a/t/op/taint.t ++++ b/t/op/taint.t +@@ -1868,7 +1868,19 @@ foreach my $ord (78, 163, 256) { + + { + # 59998 +- sub cr { my $x = crypt($_[0], $_[1]); $x } ++ sub cr { ++ # On platforms implementing FIPS mode, using a weak algorithm ++ # (including the default triple-DES algorithm) causes crypt(3) to ++ # return a null pointer, which Perl converts into undef. We assume ++ # for now that all such platforms support glibc-style selection of ++ # a different hashing algorithm. ++ my $alg = ''; # Use default algorithm ++ if ( !defined(crypt("ab", "cd")) ) { ++ $alg = '$5$'; # Use SHA-256 ++ } ++ my $x = crypt($_[0], $alg . $_[1]); ++ $x ++ } + sub co { my $x = ~$_[0]; $x } + my ($a, $b); + $a = cr('hello', 'foo' . $TAINT); +-- +1.9.3 + diff --git a/SOURCES/perl-5.17.6-Fix-misparsing-of-maketext-strings.patch b/SOURCES/perl-5.17.6-Fix-misparsing-of-maketext-strings.patch new file mode 100644 index 00000000..9a8629fa --- /dev/null +++ b/SOURCES/perl-5.17.6-Fix-misparsing-of-maketext-strings.patch @@ -0,0 +1,81 @@ +From 1735f6f53ca19f99c6e9e39496c486af323ba6a8 Mon Sep 17 00:00:00 2001 +From: Brian Carlson +Date: Wed, 28 Nov 2012 08:54:33 -0500 +Subject: [PATCH] Fix misparsing of maketext strings. + +Case 61251: This commit fixes a misparse of maketext strings that could +lead to arbitrary code execution. Basically, maketext was compiling +bracket notation into functions, but neglected to escape backslashes +inside the content or die on fully-qualified method names when +generating the code. This change escapes all such backslashes and dies +when a method name with a colon or apostrophe is specified. +--- + AUTHORS | 1 + + dist/Locale-Maketext/lib/Locale/Maketext.pm | 24 ++++++++---------------- + 2 files changed, 9 insertions(+), 16 deletions(-) + +diff --git a/AUTHORS b/AUTHORS +index 70734b0..009dea0 100644 +--- a/AUTHORS ++++ b/AUTHORS +@@ -154,6 +154,7 @@ Breno G. de Oliveira + Brent Dax + Brooks D Boyd + Brian Callaghan ++Brian Carlson + Brian Clarke + brian d foy + Brian Fraser +diff --git a/dist/Locale-Maketext/lib/Locale/Maketext.pm b/dist/Locale-Maketext/lib/Locale/Maketext.pm +index 4822027..63e5fba 100644 +--- a/dist/Locale-Maketext/lib/Locale/Maketext.pm ++++ b/dist/Locale-Maketext/lib/Locale/Maketext.pm +@@ -625,21 +625,9 @@ sub _compile { + # 0-length method name means to just interpolate: + push @code, ' ('; + } +- elsif($m =~ /^\w+(?:\:\:\w+)*$/s +- and $m !~ m/(?:^|\:)\d/s +- # exclude starting a (sub)package or symbol with a digit ++ elsif($m =~ /^\w+$/s ++ # exclude anything fancy, especially fully-qualified module names + ) { +- # Yes, it even supports the demented (and undocumented?) +- # $obj->Foo::bar(...) syntax. +- $target->_die_pointing( +- $string_to_compile, q{Can't use "SUPER::" in a bracket-group method}, +- 2 + length($c[-1]) +- ) +- if $m =~ m/^SUPER::/s; +- # Because for SUPER:: to work, we'd have to compile this into +- # the right package, and that seems just not worth the bother, +- # unless someone convinces me otherwise. +- + push @code, ' $_[0]->' . $m . '('; + } + else { +@@ -693,7 +681,9 @@ sub _compile { + elsif(substr($1,0,1) ne '~') { + # it's stuff not containing "~" or "[" or "]" + # i.e., a literal blob +- $c[-1] .= $1; ++ my $text = $1; ++ $text =~ s/\\/\\\\/g; ++ $c[-1] .= $text; + + } + elsif($1 eq '~~') { # "~~" +@@ -731,7 +721,9 @@ sub _compile { + else { + # It's a "~X" where X is not a special character. + # Consider it a literal ~ and X. +- $c[-1] .= $1; ++ my $text = $1; ++ $text =~ s/\\/\\\\/g; ++ $c[-1] .= $text; + } + } + } +-- +1.7.11.7 + diff --git a/SOURCES/perl-5.17.9-106212-Add-PL_perlio_mutex-to-atfork_lock.patch b/SOURCES/perl-5.17.9-106212-Add-PL_perlio_mutex-to-atfork_lock.patch new file mode 100644 index 00000000..9e3fa342 --- /dev/null +++ b/SOURCES/perl-5.17.9-106212-Add-PL_perlio_mutex-to-atfork_lock.patch @@ -0,0 +1,48 @@ +From 4da80956418bbe1fdc23cad0b1cbb24cd7b87609 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Patrik=20H=C3=A4gglund?= +Date: Sat, 2 Feb 2013 20:21:05 +0100 +Subject: [PATCH] PATCH [perl #106212] Add PL_perlio_mutex to + atfork_lock/unlock + +Using threads + fork() on Linux, and IO operations in the threads, the +PL_perlio_mutex may be left in a locked state at the call of fork(), +potentially leading to deadlock in the child process at subsequent IO +operations. (Threads are pre-empted and not continued in the child +process after the fork.) + +Therefore, ensure that the PL_perlio_mutex is unlocked in the child +process, right after fork(), by using atfork_lock/unlock. + +(The RT text gives ways to reproduce the problem, but are not easily +added to Perl's test suite) +--- + util.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/util.c b/util.c +index 5c695b8..75381f1 100644 +--- a/util.c ++++ b/util.c +@@ -2798,6 +2798,9 @@ Perl_atfork_lock(void) + dVAR; + #if defined(USE_ITHREADS) + /* locks must be held in locking order (if any) */ ++# ifdef USE_PERLIO ++ MUTEX_LOCK(&PL_perlio_mutex); ++# endif + # ifdef MYMALLOC + MUTEX_LOCK(&PL_malloc_mutex); + # endif +@@ -2812,6 +2815,9 @@ Perl_atfork_unlock(void) + dVAR; + #if defined(USE_ITHREADS) + /* locks must be released in same order as in atfork_lock() */ ++# ifdef USE_PERLIO ++ MUTEX_UNLOCK(&PL_perlio_mutex); ++# endif + # ifdef MYMALLOC + MUTEX_UNLOCK(&PL_malloc_mutex); + # endif +-- +1.8.1.4 + diff --git a/SOURCES/perl-5.18.1-Document-Math-BigInt-CalcEmu-requires-Math-BigInt.patch b/SOURCES/perl-5.18.1-Document-Math-BigInt-CalcEmu-requires-Math-BigInt.patch new file mode 100644 index 00000000..c3db43db --- /dev/null +++ b/SOURCES/perl-5.18.1-Document-Math-BigInt-CalcEmu-requires-Math-BigInt.patch @@ -0,0 +1,30 @@ +From 862c89c81d26dae0dcef138e19df8b45615e69c9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 2 Dec 2013 10:10:56 +0100 +Subject: [PATCH] Document Math::BigInt::CalcEmu requires Math::BigInt +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + + + +Signed-off-by: Petr Písař +--- + dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm b/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm +index c82e153..0c0b496 100644 +--- a/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm ++++ b/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm +@@ -290,6 +290,7 @@ Math::BigInt::CalcEmu - Emulate low-level math with BigInt code + + =head1 SYNOPSIS + ++ use Math::BigInt; + use Math::BigInt::CalcEmu; + + =head1 DESCRIPTION +-- +1.8.3.1 + diff --git a/SOURCES/perl-5.18.2-t-op-crypt.t-Perform-SHA-256-algorithm-if-default-on.patch b/SOURCES/perl-5.18.2-t-op-crypt.t-Perform-SHA-256-algorithm-if-default-on.patch new file mode 100644 index 00000000..c6480ee2 --- /dev/null +++ b/SOURCES/perl-5.18.2-t-op-crypt.t-Perform-SHA-256-algorithm-if-default-on.patch @@ -0,0 +1,54 @@ +From 8de0fd45cde4826951842f80b6ce109988d47f4f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 7 Apr 2014 12:31:28 +0200 +Subject: [PATCH] t/op/crypt.t: Perform SHA-256 algorithm if default one is + disabled +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The crypt(3) call may return NULL. This is the case of FIPS-enabled +platforms. Then "salt makes a difference" test would fail. + +Signed-off-by: Petr Písař +--- + t/op/crypt.t | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/t/op/crypt.t b/t/op/crypt.t +index 27c878f..6c43992 100644 +--- a/t/op/crypt.t ++++ b/t/op/crypt.t +@@ -28,19 +28,25 @@ BEGIN { + # bets, given alternative encryption/hashing schemes like MD5, + # C2 (or higher) security schemes, and non-UNIX platforms. + ++# Platforms implementing FIPS mode return undef on weak crypto algorithms. ++my $alg = ''; # Use default algorithm ++if ( !defined(crypt("ab", "cd")) ) { ++ $alg = '$5$'; # Use SHA-256 ++} ++ + SKIP: { + skip ("VOS crypt ignores salt.", 1) if ($^O eq 'vos'); +- ok(substr(crypt("ab", "cd"), 2) ne substr(crypt("ab", "ce"), 2), "salt makes a difference"); ++ ok(substr(crypt("ab", $alg . "cd"), 2) ne substr(crypt("ab", $alg. "ce"), 2), "salt makes a difference"); + } + + $a = "a\xFF\x{100}"; + +-eval {$b = crypt($a, "cd")}; ++eval {$b = crypt($a, $alg . "cd")}; + like($@, qr/Wide character in crypt/, "wide characters ungood"); + + chop $a; # throw away the wide character + +-eval {$b = crypt($a, "cd")}; ++eval {$b = crypt($a, $alg . "cd")}; + is($@, '', "downgrade to eight bit characters"); +-is($b, crypt("a\xFF", "cd"), "downgrade results agree"); ++is($b, crypt("a\xFF", $alg . "cd"), "downgrade results agree"); + +-- +1.9.0 + diff --git a/SOURCES/perl-5.19.0-Synchronize-h2ph-POD-text-with-usage-output.patch b/SOURCES/perl-5.19.0-Synchronize-h2ph-POD-text-with-usage-output.patch new file mode 100644 index 00000000..25d32df0 --- /dev/null +++ b/SOURCES/perl-5.19.0-Synchronize-h2ph-POD-text-with-usage-output.patch @@ -0,0 +1,38 @@ +From fe89bf70817551c30bcacaef25578ffeb7d71eb1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Sun, 9 Jun 2013 14:01:49 -0400 +Subject: [PATCH] Synchronize h2ph POD text with usage output + +--- + utils/h2ph.PL | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/utils/h2ph.PL b/utils/h2ph.PL +index a2d737b..9a8b14d 100644 +--- a/utils/h2ph.PL ++++ b/utils/h2ph.PL +@@ -866,7 +866,8 @@ h2ph - convert .h C header files to .ph Perl header files + + =head1 SYNOPSIS + +-B ++B + + =head1 DESCRIPTION + +@@ -932,6 +933,11 @@ you will see the slightly more helpful + + However, the B<.ph> files almost double in size when built using B<-h>. + ++=item -e ++ ++If an error is encountered during conversion, output file will be removed and ++a warning emitted instead of terminating the conversion immediately. ++ + =item -D + + Include the code from the B<.h> file as a comment in the B<.ph> file. +-- +1.8.1.4 + diff --git a/SOURCES/perl-5.20.3-Don-t-leak-the-temp-utf8-copy-of-n.patch b/SOURCES/perl-5.20.3-Don-t-leak-the-temp-utf8-copy-of-n.patch new file mode 100644 index 00000000..811584ab --- /dev/null +++ b/SOURCES/perl-5.20.3-Don-t-leak-the-temp-utf8-copy-of-n.patch @@ -0,0 +1,33 @@ +From 8d89c0509dd5eb1de58dc6617f6e08599eb24792 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Mon, 10 Aug 2015 13:37:26 +0100 +Subject: [PATCH] [PATCH] [perl #123786] don't leak the temp utf8 copy of + namepv +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + pad.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/pad.c b/pad.c +index fed2892..f22c3c5 100644 +--- a/pad.c ++++ b/pad.c +@@ -976,8 +976,10 @@ Perl_pad_findmy_pvn(pTHX_ const char *namepv, STRLEN namelen, U32 flags) + + if (is_utf8) + flags |= padadd_UTF8_NAME; +- else ++ else { + flags &= ~padadd_UTF8_NAME; ++ SAVEFREEPV(namepv); ++ } + } + + offset = pad_findlex(namepv, namelen, flags, +-- +2.4.3 + diff --git a/SOURCES/perl-5.8.0-libdir64.patch b/SOURCES/perl-5.8.0-libdir64.patch new file mode 100644 index 00000000..0ab67a07 --- /dev/null +++ b/SOURCES/perl-5.8.0-libdir64.patch @@ -0,0 +1,46 @@ +--- perl-5.8.0/Configure.orig 2002-09-09 11:31:19.000000000 -0400 ++++ perl-5.8.0/Configure 2002-09-09 11:40:37.000000000 -0400 +@@ -6458,8 +6458,8 @@ + : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7. + case "$installstyle" in + '') case "$prefix" in +- *perl*) dflt='lib';; +- *) dflt='lib/perl5' ;; ++ *perl*) dflt='lib64';; ++ *) dflt='lib64/perl5' ;; + esac + ;; + *) dflt="$installstyle" ;; +@@ -6475,8 +6475,8 @@ + : /opt/perl/lib/perl5... would be redundant. + : The default "style" setting is made in installstyle.U + case "$installstyle" in +-*lib/perl5*) set dflt privlib lib/$package/$version ;; +-*) set dflt privlib lib/$version ;; ++*lib64/perl5*) set dflt privlib lib64/$package/$version ;; ++*) set dflt privlib lib64/$version ;; + esac + eval $prefixit + $cat <_PRINT_PREREQ; +- } ++ } ++ ++ # USE_MM_LD_RUN_PATH - another RedHatism to disable automatic RPATH generation ++ if ( ( ! $self->{USE_MM_LD_RUN_PATH} ) ++ &&( ("@ARGV" =~ /\bUSE_MM_LD_RUN_PATH(=([01]))?\b/) ++ ||( exists( $ENV{USE_MM_LD_RUN_PATH} ) ++ &&( $ENV{USE_MM_LD_RUN_PATH} =~ /([01])?$/ ) ++ ) ++ ) ++ ) ++ { ++ my $v = $1; ++ if( $v ) ++ { ++ $v = ($v=~/=([01])$/)[0]; ++ }else ++ { ++ $v = 1; ++ }; ++ $self->{USE_MM_LD_RUN_PATH}=$v; ++ }; + + print STDOUT "MakeMaker (v$VERSION)\n" if $Verbose; + if (-f "MANIFEST" && ! -f "Makefile" && ! $ENV{PERL_CORE}){ +@@ -2352,6 +2372,40 @@ precedence. A typemap in the current di + precedence, even if it isn't listed in TYPEMAPS. The default system + typemap has lowest precedence. + ++=item USE_MM_LD_RUN_PATH ++ ++boolean ++The Fedora perl MakeMaker distribution differs from the standard ++upstream release in that it disables use of the MakeMaker generated ++LD_RUN_PATH by default, UNLESS this attribute is specified , or the ++USE_MM_LD_RUN_PATH environment variable is set during the MakeMaker run. ++ ++The upstream MakeMaker will set the ld(1) environment variable LD_RUN_PATH ++to the concatenation of every -L ld(1) option directory in which a -l ld(1) ++option library is found, which is used as the ld(1) -rpath option if none ++is specified. This means that, if your application builds shared libraries ++and your MakeMaker application links to them, that the absolute paths of the ++libraries in the build tree will be inserted into the RPATH header of all ++MakeMaker generated binaries, and that such binaries will be unable to link ++to these libraries if they do not still reside in the build tree directories ++(unlikely) or in the system library directories (/lib or /usr/lib), regardless ++of any LD_LIBRARY_PATH setting. So if you specified -L../mylib -lmylib , and ++ your 'libmylib.so' gets installed into /some_directory_other_than_usr_lib, ++ your MakeMaker application will be unable to link to it, even if LD_LIBRARY_PATH ++is set to include /some_directory_other_than_usr_lib, because RPATH overrides ++LD_LIBRARY_PATH. ++ ++So for Fedora MakeMaker builds LD_RUN_PATH is NOT generated by default for ++every link. You can still use explicit -rpath ld options or the LD_RUN_PATH ++environment variable during the build to generate an RPATH for the binaries. ++ ++You can set the USE_MM_LD_RUN_PATH attribute to 1 on the MakeMaker command ++line or in the WriteMakefile arguments to enable generation of LD_RUN_PATH ++for every link command. ++ ++USE_MM_LD_RUN_PATH will default to 1 (LD_RUN_PATH will be used) IF the ++$USE_MM_LD_RUN_PATH environment variable is set during a MakeMaker run. ++ + =item VENDORPREFIX + + Like PERLPREFIX, but only for the vendor install locations. +diff -up perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm.usem perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm +--- perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm.usem 2011-05-08 05:10:08.000000000 +0200 ++++ perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2011-05-17 11:14:22.172115972 +0200 +@@ -944,7 +944,7 @@ $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $ + } + + my $ld_run_path_shell = ""; +- if ($self->{LD_RUN_PATH} ne "") { ++ if (($self->{LD_RUN_PATH} ne "") && ($self->{USE_MM_LD_RUN_PATH})) { + $ld_run_path_shell = 'LD_RUN_PATH="$(LD_RUN_PATH)" '; + } + diff --git a/SOURCES/perl-disable_test_hosts.patch b/SOURCES/perl-disable_test_hosts.patch new file mode 100644 index 00000000..dc86a346 --- /dev/null +++ b/SOURCES/perl-disable_test_hosts.patch @@ -0,0 +1,12 @@ +diff -up perl-5.12.0/cpan/libnet/Net/Config.pm.disable perl-5.12.0/cpan/libnet/Net/Config.pm +--- perl-5.12.0/cpan/libnet/Net/Config.pm.disable 2010-01-18 19:52:49.000000000 +0100 ++++ perl-5.12.0/cpan/libnet/Net/Config.pm 2010-04-13 16:03:50.090770813 +0200 +@@ -29,7 +29,7 @@ eval { local $SIG{__DIE__}; require Net: + ftp_firewall => undef, + ftp_ext_passive => 1, + ftp_int_passive => 1, +- test_hosts => 1, ++ test_hosts => 0, + test_exist => 1, + ); + diff --git a/SOURCES/perl-perlbug-tag.patch b/SOURCES/perl-perlbug-tag.patch new file mode 100644 index 00000000..0f96ab34 --- /dev/null +++ b/SOURCES/perl-perlbug-tag.patch @@ -0,0 +1,21 @@ +diff -up perl-5.16.0-RC2/utils/perlbug.PL.fedora perl-5.16.0-RC2/utils/perlbug.PL +--- perl-5.16.0-RC2/utils/perlbug.PL.fedora 2012-05-16 16:15:51.000000000 +0200 ++++ perl-5.16.0-RC2/utils/perlbug.PL 2012-05-16 16:18:36.018894464 +0200 +@@ -271,17 +271,6 @@ sub Init { + $ok = ''; + if ($opt{o}) { + if ($opt{o} eq 'k' or $opt{o} eq 'kay') { +- my $age = time - $patchlevel_date; +- if ($opt{o} eq 'k' and $age > 60 * 24 * 60 * 60 ) { +- my $date = localtime $patchlevel_date; +- print <<"EOF"; +-"perlbug -ok" and "perlbug -nok" do not report on Perl versions which +-are more than 60 days old. This Perl version was constructed on +-$date. If you really want to report this, use +-"perlbug -okay" or "perlbug -nokay". +-EOF +- exit(); +- } + # force these options + unless ($opt{n}) { + $opt{S} = 1; # don't prompt for send diff --git a/SOURCES/perl.stp b/SOURCES/perl.stp new file mode 100644 index 00000000..ccc203b7 --- /dev/null +++ b/SOURCES/perl.stp @@ -0,0 +1,39 @@ +/* + This probe will fire when the perl script enters a subroutine. + */ + +probe perl.sub.call = process("LIBRARY_PATH").mark("sub__entry") +{ + + sub = user_string($arg1) + filename = user_string($arg2) + lineno = $arg3 + package = user_string($arg4) + +} + +/* + This probe will fire when the return from a subroutine has been + hit. + */ + +probe perl.sub.return = process("LIBRARY_PATH").mark("sub__return") +{ + + sub = user_string($arg1) + filename = user_string($arg2) + lineno = $arg3 + package = user_string($arg4) + +} + +/* + This probe will fire when the Perl interperter changes state. + */ + +probe perl.phase.change = process("LIBRARY_PATH").mark("phase__change") +{ + newphase = user_string($arg1) + oldphase = user_string($arg2) + +} diff --git a/SOURCES/porting-podcheck-regen.patch b/SOURCES/porting-podcheck-regen.patch new file mode 100644 index 00000000..15df1309 --- /dev/null +++ b/SOURCES/porting-podcheck-regen.patch @@ -0,0 +1,26 @@ +diff -up perl-5.16.0-RC2/t/porting/known_pod_issues.dat.pody perl-5.16.0-RC2/t/porting/known_pod_issues.dat +--- perl-5.16.0-RC2/t/porting/known_pod_issues.dat.pody 2012-05-14 21:49:22.000000000 +0200 ++++ perl-5.16.0-RC2/t/porting/known_pod_issues.dat 2012-05-16 14:21:00.000000000 +0200 +@@ -1,4 +1,4 @@ +-# This file is the data file for porting/podcheck.t. ++# This file is the data file for t/porting/podcheck.t. + # There are three types of lines. + # Comment lines are white-space only or begin with a '#', like this one. Any + # changes you make to the comment lines will be lost when the file is +@@ -217,6 +217,7 @@ pod/perlbook.pod Verbatim line length in + pod/perlcall.pod Verbatim line length including indents exceeds 79 by 2 + pod/perlce.pod Verbatim line length including indents exceeds 79 by 2 + pod/perlclib.pod Verbatim line length including indents exceeds 79 by 3 ++pod/perlcn.pod Verbatim line length including indents exceeds 79 by 1 + pod/perlcygwin.pod Verbatim line length including indents exceeds 79 by 25 + pod/perldbmfilter.pod Verbatim line length including indents exceeds 79 by 1 + pod/perldebguts.pod Verbatim line length including indents exceeds 79 by 68 +@@ -248,6 +249,8 @@ pod/perliol.pod Verbatim line length inc + pod/perlipc.pod Apparent broken link 1 + pod/perlipc.pod Verbatim line length including indents exceeds 79 by 19 + pod/perlirix.pod Verbatim line length including indents exceeds 79 by 4 ++pod/perljp.pod Verbatim line length including indents exceeds 79 by 1 ++pod/perlko.pod Verbatim line length including indents exceeds 79 by 22 + pod/perllol.pod Verbatim line length including indents exceeds 79 by 4 + pod/perlmacosx.pod Verbatim line length including indents exceeds 79 by 3 + pod/perlmod.pod Verbatim line length including indents exceeds 79 by 2 diff --git a/SPECS/perl.spec b/SPECS/perl.spec new file mode 100644 index 00000000..2967b85d --- /dev/null +++ b/SPECS/perl.spec @@ -0,0 +1,4706 @@ +%global perl_version 5.16.3 +%global perl_epoch 4 +%global perl_arch_stem -thread-multi +%global perl_archname %{_arch}-%{_os}%{perl_arch_stem} + +%global multilib_64_archs aarch64 %{power64} s390x sparc64 x86_64 +%global parallel_tests 1 +%global tapsetdir %{_datadir}/systemtap/tapset + +%global dual_life 0 +%global rebuild_from_scratch 0 + +# This overrides filters from build root (/etc/rpm/macros.perl) +# intentionally (unversioned perl(DB) is removed and versioned one is kept) +# Filter provides from *.pl files, bug #924938 +# Filter *.so file from auto subdir only to keep providing libperl.so +%global __provides_exclude_from .*/auto/.*\\.so$|.*%{_docdir}|.*%{perl_archlib}/.*\\.pl$|.*%{perl_privlib}/.*\\.pl$ +%global __requires_exclude_from %{_docdir} +%global __provides_exclude perl\\((VMS|Win32|BSD::|DB\\)$) +# unicore::Name - it's needed by perl, maybe problem of rpm +# FCGI is external dependency after install of perl-CGI, remove it during RC releases +%global __requires_exclude perl\\((VMS|BSD::|Win32|Tk|Mac::|Your::Module::Here|unicore::Name|FCGI) +# same as we provide in /etc/rpm/macros.perl +%global perl5_testdir %{_libexecdir}/perl5-tests + +# We can bootstrap without gdbm +%bcond_without gdbm +# We can skip %%check phase +%bcond_without test + +Name: perl +Version: %{perl_version} +# release number must be even higher, because dual-lived modules will be broken otherwise +Release: 292%{?dist} +Epoch: %{perl_epoch} +Summary: Practical Extraction and Report Language +Group: Development/Languages +# Modules Tie::File and Getopt::Long are licenced under "GPLv2+ or Artistic," +# we have to reflect that in the sub-package containing them. +# under UCD are unicode tables +# Public domain: ext/SDBM_File/sdbm/*, ext/Compress-Raw-Bzip2/bzip2-src/dlltest.c +# MIT: ext/MIME-Base64/Base64.xs +# Copyright Only: for example ext/Text-Soundex/Soundex.xs +License: (GPL+ or Artistic) and (GPLv2+ or Artistic) and Copyright Only and MIT and Public Domain and UCD +Url: http://www.perl.org/ +Source0: http://www.cpan.org/src/5.0/perl-%{perl_version}.tar.bz2 +Source2: perl-5.8.0-libnet.cfg +Source3: macros.perl +#Systemtap tapset and example that make use of systemtap-sdt-devel +# build requirement. Written by lberk; Not yet upstream. +Source4: perl.stp +Source5: perl-example.stp + +Patch0: porting-podcheck-regen.patch +# Removes date check, Fedora/RHEL specific +Patch1: perl-perlbug-tag.patch + +# Fedora/RHEL only (64bit only) +Patch3: perl-5.8.0-libdir64.patch + +# Fedora/RHEL specific (use libresolv instead of libbind) +Patch4: perl-5.10.0-libresolv.patch + +# FIXME: May need the "Fedora" references removed before upstreaming +# patches ExtUtils-MakeMaker +Patch5: perl-USE_MM_LD_RUN_PATH.patch + +# Skip hostname tests, since hostname lookup isn't available in Fedora +# buildroots by design. +# patches Net::Config from libnet +Patch6: perl-disable_test_hosts.patch + +# The Fedora builders started randomly failing this futime test +# only on x86_64, so we just don't run it. Works fine on normal +# systems. +Patch7: perl-5.10.0-x86_64-io-test-failure.patch + +# switch off test, which is failing only on koji (fork) +Patch8: perl-5.14.1-offtest.patch + +# Fix find2perl to translate ? glob properly, rhbz#825701, RT#113054 +Patch9: perl-5.14.2-find2perl-transtate-question-mark-properly.patch + +# Fix broken atof, rhbz#835452, RT#109318 +Patch10: perl-5.16.0-fix-broken-atof.patch + +# Clear $@ before `do' I/O error, rhbz#834226, RT#113730 +Patch13: perl-5.16.1-RT-113730-should-be-cleared-on-do-IO-error.patch + +# Do not truncate syscall() return value to 32 bits, rhbz#838551, RT#113980 +Patch14: perl-5.16.1-perl-113980-pp_syscall-I32-retval-truncates-the-retu.patch + +# Override the Pod::Simple::parse_file, rhbz#826872, CPANRT#77530, in +# podlators-2.4.1 +Patch15: perl-5.14.2-Override-the-Pod-Simple-parse_file.patch + +# Do not leak with attribute on my variable, rhbz#858966, RT#114764, +# fixed after 5.17.4 +Patch16: perl-5.16.1-perl-114764-Stop-my-vars-with-attrs-from-leaking.patch + +# Allow operator after numeric keyword argument, rhbz#859328, RT#105924, +# fixed after 5.17.4 +Patch17: perl-5.16.1-perl-105924-require-1-2.patch + +# Extend stack in File::Glob::glob, rhbz#859332, RT#114984, fixed after 5.17.4 +Patch18: perl-5.16.1-perl-114984-Glob.xs-Extend-stack-when-returning.patch + +# Do not crash when vivifying $|, rhbz#865296, RT#115206 +Patch19: perl-5.16.1-perl-115206-Don-t-crash-when-vivifying.patch + +# Fix CVE-2012-6329, rhbz#884354 +Patch20: perl-5.17.6-Fix-misparsing-of-maketext-strings.patch + +# Add NAME heading into CPAN PODs, rhbz#908113, CPANRT#73396 +Patch21: perl-5.16.2-cpan-CPAN-add-NAME-headings-in-modules-with-POD.patch + +# Fix leaking tied hashes, rhbz#859910, RT#107000, fixed after 5.17.4 +Patch22: perl-5.16.3-Don-t-leak-deleted-iterator-when-tying-hash.patch +Patch23: perl-5.16.3-Free-iterator-when-freeing-tied-hash.patch +Patch24: perl-5.16.3-Don-t-leak-if-hh-copying-dies.patch + +# Fix dead lock in PerlIO after fork from thread, rhbz#947444, RT#106212 +Patch25: perl-5.17.9-106212-Add-PL_perlio_mutex-to-atfork_lock.patch + +# Make regular expression engine safe in a signal handler, rhbz#849703, +# RT#114878, fixed after 5.17.11 +Patch26: perl-5.16.3-Remove-PERL_ASYNC_CHECK-from-Perl_leave_scope.patch + +# Update h2ph(1) documentation, rhbz#948538, RT#117647 +Patch27: perl-5.19.0-Synchronize-h2ph-POD-text-with-usage-output.patch + +# Update pod2html(1) documentation, rhbz#948538, RT#117623 +Patch28: perl-5.16.3-Synchronize-pod2html-usage-output-and-its-POD-text.patch + +# Document Math::BigInt::CalcEmu requires Math::BigInt, rhbz#959096, +# CPAN RT#85015 +Patch29: perl-5.18.1-Document-Math-BigInt-CalcEmu-requires-Math-BigInt.patch + +# Use stronger algorithm needed for FIPS in t/op/crypt.t, bug #1084796, +# RT#121591 +Patch30: perl-5.18.2-t-op-crypt.t-Perform-SHA-256-algorithm-if-default-on.patch + +# Make *DBM_File desctructors thread-safe, bug #1107542, RT#61912 +Patch31: perl-5.16.3-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch + +# Use stronger algorithm needed for FIPS in t/op/taint.t, bug #1084796, +# RT#123338 +Patch32: perl-5.16.3-t-op-taint.t-Perform-SHA-256-algorithm-by-crypt-if-d.patch + +# Remove CPU-speed-sensitive test in Benchmark test, bug #1238567, +# in upstream after 5.19.1 +Patch33: perl-5.16.3-Benchmark.t-remove-CPU-speed-sensitive-test.patch + +# Make File::Glob work with threads again, bug #1223045 +# RT#119897, in upstream after 5.19.5 +Patch34: perl-5.16.3-File-Glob-Dup-glob-state-in-CLONE.patch + +# Fix CRLF conversion in ASCII FTP upload, bug #1263734, CPAN RT#41642 +Patch35: perl-5.16.3-Fix-incorrect-handling-of-CRLF-in-Net-FTP.patch + +# Don't leak the temp utf8 copy of namepv, bug #1063330, CPAN RT#123786 +Patch36: perl-5.20.3-Don-t-leak-the-temp-utf8-copy-of-n.patch + +# Fix duplicating PerlIO::encoding when spawning threads, bug #1344749, +# RT#31923, in upstream after 5.23.3 +Patch37: perl-5.16.3-Properly-duplicate-PerlIO-encoding-objects.patch + +# Update some of the bundled modules +# see http://fedoraproject.org/wiki/Perl/perl.spec for instructions + +BuildRequires: groff, libdb-devel, tcsh, zlib-devel, bzip2-devel +BuildRequires: systemtap-sdt-devel +%if %{with gdbm} +BuildRequires: gdbm-devel +%endif + +# For tests +BuildRequires: procps, rsyslog + +# The long line of Perl provides. + + +# compat macro needed for rebuild +%global perl_compat perl(:MODULE_COMPAT_5.16.3) + +# Compat provides +Provides: %perl_compat +Provides: perl(:MODULE_COMPAT_5.16.2) +Provides: perl(:MODULE_COMPAT_5.16.1) +Provides: perl(:MODULE_COMPAT_5.16.0) + +# Threading provides +Provides: perl(:WITH_ITHREADS) +Provides: perl(:WITH_THREADS) +# Largefile provides +Provides: perl(:WITH_LARGEFILES) +# PerlIO provides +Provides: perl(:WITH_PERLIO) +# File provides +Provides: perl(bytes_heavy.pl) +Provides: perl(dumpvar.pl) +Provides: perl(perl5db.pl) +Provides: perl(utf8_heavy.pl) + +# suidperl isn't created by upstream since 5.12.0 +Obsoletes: perl-suidperl <= 4:5.12.2 + +Requires: perl-libs = %{perl_epoch}:%{perl_version}-%{release} +# Time::HiRes needed by Net::Ping, bug #1122368 +Requires: perl(Time::HiRes) + +# We need this to break the dependency loop, and ensure that perl-libs +# gets installed before perl. +Requires(post): perl-libs +# Same as perl-libs. We need macros in basic buildroot, where Perl is only +# because of git. +Requires(post): perl-macros + + +%description +Perl is a high-level programming language with roots in C, sed, awk and shell +scripting. Perl is good at handling processes and files, and is especially +good at handling text. Perl's hallmarks are practicality and efficiency. +While it is used to do a lot of different things, Perl's most common +applications are system administration utilities and web programming. A large +proportion of the CGI scripts on the web are written in Perl. You need the +perl package installed on your system so that your system can handle Perl +scripts. + +Install this package if you want to program in Perl or enable your system to +handle Perl scripts. + +%package libs +Summary: The libraries for the perl runtime +Group: Development/Languages +License: GPL+ or Artistic +Requires: %perl_compat + +%description libs +The libraries for the perl runtime + + +%package devel +Summary: Header #files for use in perl development +Group: Development/Languages +License: GPL+ or Artistic +# Require $Config{libs} providers, bug #905482 +Requires: libdb-devel +%if %{with gdbm} +Requires: gdbm-devel +%endif +Requires: glibc-devel +Requires: systemtap-sdt-devel +Requires: perl(ExtUtils::ParseXS) +Requires: %perl_compat + +%description devel +This package contains header files and development modules. +Most perl packages will need to install perl-devel to build. + + +%package macros +Summary: Macros for rpmbuild +Group: Development/Languages +License: GPL+ or Artistic +Requires: %perl_compat + +%description macros +Macros for rpmbuild are needed during build of srpm in koji. This +sub-package must be installed into buildroot, so it will be needed +by perl. Perl is needed because of git. + + +%package tests +Summary: The Perl test suite +Group: Development/Languages +License: GPL+ or Artistic +# right? +AutoReqProv: 0 +Requires: %perl_compat +# FIXME - note this will need to change when doing the core/minimal swizzle +Requires: perl-core + +%description tests +This package contains the test suite included with Perl %{perl_version}. + +Install this if you want to test your Perl installation (binary and core +modules). + + +%if %{dual_life} || %{rebuild_from_scratch} +%package Archive-Extract +Summary: Generic archive extracting mechanism +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.58 +Requires: %perl_compat +BuildArch: noarch + +%description Archive-Extract +Archive::Extract is a generic archive extraction mechanism. +%endif + + +%if %{dual_life} || %{rebuild_from_scratch} +%package Archive-Tar +Summary: A module for Perl manipulation of .tar files +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.82 +Requires: %perl_compat +Requires: perl(Compress::Zlib), perl(IO::Zlib) +BuildArch: noarch + +%description Archive-Tar +Archive::Tar provides an object oriented mechanism for handling tar files. It +provides class methods for quick and easy files handling while also allowing +for the creation of tar file objects for custom manipulation. If you have the +IO::Zlib module installed, Archive::Tar will also support compressed or +gzipped tar files. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package autodie +Summary: Replace functions with ones that succeed or die +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 2.10 +Requires: %perl_compat +BuildArch: noarch +Requires: perl(B) +Requires: perl(Fcntl) +Requires: perl(overload) +Requires: perl(POSIX) +Conflicts: perl < 4:5.16.2-259 + +%description autodie +The "autodie" and "Fatal" pragma provides a convenient way to replace +functions that normally return false on failure with equivalents that throw an +exception on failure. + +However "Fatal" has been obsoleted by the new autodie pragma. Please use +autodie in preference to "Fatal". +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package B-Lint +Summary: Perl lint +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.14 +Requires: %perl_compat +Requires: perl(constant) +BuildArch: noarch +Conflicts: perl < 4:5.16.2-251 + +%description B-Lint +The B::Lint module is equivalent to an extended version of the -w option of +perl. It is named after the program lint which carries out a similar process +for C programs. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Carp +Summary: Alternative warn and die for modules +Epoch: 0 +Version: 1.26 +License: GPL+ or Artistic +Group: Development/Libraries +Requires: %perl_compat +Provides: perl(Carp::Heavy) = %{version} +BuildArch: noarch + +# Do not export unversioned module +%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\(Carp\\)\\s*$ + +%description Carp +The Carp routines are useful in your own modules because they act like +die() or warn(), but with a message which is more likely to be useful to a +user of your module. In the case of cluck, confess, and longmess that +context is a summary of every call in the call-stack. For a shorter message +you can use carp or croak which report the error as being from where your +module was called. There is no guarantee that that is where the error was, +but it is a good educated guess. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package CGI +Summary: Handle Common Gateway Interface requests and responses +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 3.59 +Requires: %perl_compat +Provides: perl(CGI) = %{version} +BuildArch: noarch + +# Do not export unversioned module +%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\(CGI\\)\\s*$ +# Do not export private modules +%global __provides_exclude %{__provides_exclude}|^perl\\(Fh\\)\\s*$ +%global __provides_exclude %{__provides_exclude}|^perl\\(MultipartBuffer\\)\\s*$ +%global __provides_exclude %{__provides_exclude}|^perl\\(utf8\\)\\s*$ + +%description CGI +CGI.pm is a stable, complete and mature solution for processing and preparing +HTTP requests and responses. Major features including processing form +submissions, file uploads, reading and writing cookies, query string generation +and manipulation, and processing and preparing HTTP headers. Some HTML +generation utilities are included as well. + +CGI.pm performs very well in in a vanilla CGI.pm environment and also comes +with built-in support for mod_perl and mod_perl2 as well as FastCGI. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Compress-Raw-Bzip2 +Summary: Low-Level Interface to bzip2 compression library +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 2.048 +Requires: perl(Exporter), perl(File::Temp) + +%description Compress-Raw-Bzip2 +This module provides a Perl interface to the bzip2 compression library. +It is used by IO::Compress::Bzip2. + +%package Compress-Raw-Zlib +Summary: Low-Level Interface to the zlib compression library +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 2.048 +Requires: %perl_compat + +%description Compress-Raw-Zlib +This module provides a Perl interface to the zlib compression library. +It is used by IO::Compress::Zlib. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package constant +Summary: Perl pragma to declare constants +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.23 +Requires: %perl_compat +Requires: perl(Carp) +BuildArch: noarch +Conflicts: perl < 4:5.16.3-264 + +%description constant +This pragma allows you to declare constants at compile-time: + +use constant PI => 4 * atan2(1, 1); + +When you declare a constant such as "PI" using the method shown above, +each machine your script runs upon can have as many digits of accuracy +as it can use. Also, your program will be easier to read, more likely +to be maintained (and maintained correctly), and far less likely to +send a space probe to the wrong planet because nobody noticed the one +equation in which you wrote 3.14195. + +When a constant is used in an expression, Perl replaces it with its +value at compile time, and may then optimize the expression further. +In particular, any code in an "if (CONSTANT)" block will be optimized +away if the constant is false. +%endif + +%package CPAN +Summary: Query, download and build perl modules from CPAN sites +Group: Development/Languages +License: GPL+ or Artistic +Epoch: 0 +Version: 1.9800 +Requires: perl(Data::Dumper) +# CPAN encourages Digest::SHA strongly because of integrity checks +Requires: perl(Digest::SHA) +# local::lib recommended by CPAN::FirstTime default choice, bug #1122368 +Requires: perl(local::lib) +Requires: %perl_compat +Provides: cpan = %{version} +BuildArch: noarch + +%description CPAN +Query, download and build perl modules from CPAN sites. + +%if %{dual_life} || %{rebuild_from_scratch} +%package CPAN-Meta +Summary: Distribution metadata for a CPAN dist +Epoch: 0 +Version: 2.120630 +License: GPL+ or Artistic +Group: Development/Libraries +Requires: %perl_compat +BuildArch: noarch + +%description CPAN-Meta +Software distributions released to the CPAN include a META.json or, for +older distributions, META.yml, which describes the distribution, its +contents, and the requirements for building and installing the +distribution. The data structure stored in the META.json file is described +in CPAN::Meta::Spec. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package CPAN-Meta-Requirements +Summary: Set of version requirements for a CPAN dist +Epoch: 0 +Version: 2.120.630 +License: GPL+ or Artistic +Group: Development/Libraries +Requires: %perl_compat +BuildArch: noarch + +%description CPAN-Meta-Requirements +A CPAN::Meta::Requirements object models a set of version constraints like +those specified in the META.yml or META.json files in CPAN distributions. +It can be built up by adding more and more constraints, and it will reduce +them to the simplest representation. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package CPAN-Meta-YAML +Version: 0.007 +Epoch: 0 +Summary: Read and write a subset of YAML for CPAN Meta files +License: GPL+ or Artistic +Group: Development/Libraries +BuildArch: noarch +Requires: %perl_compat + +%description CPAN-Meta-YAML +This module implements a subset of the YAML specification for use in reading +and writing CPAN metadata files like META.yml and MYMETA.yml. It should not be +used for any other general YAML parsing or generation task. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package CPANPLUS +Summary: API & CLI access to the CPAN mirrors +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +# real version 0.9121 +Version: 0.91.21 +# CPANPLUS encourages Digest::SHA strongly because of integrity checks +Requires: perl(Digest::SHA) +Requires: perl(Module::Pluggable) >= 2.4 +Requires: perl(Module::CoreList) +Requires: %perl_compat +BuildArch: noarch + +%description CPANPLUS +The CPANPLUS library is an API to the CPAN mirrors and a collection of +interactive shells, commandline programs, etc, that use this API. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package CPANPLUS-Dist-Build +Summary: Module::Build extension for CPANPLUS +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 0.62 +Requires: %perl_compat +# This is a plug-in for CPANPLUS, specify reverse dependency here +Requires: perl(CPANPLUS) +BuildArch: noarch + +%description CPANPLUS-Dist-Build +CPANPLUS::Dist::Build is a distribution class for Module::Build related +modules. With this package, you can create, install and uninstall +Module::Build-based perl modules by calling CPANPLUS::Dist methods. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Data-Dumper +Summary: Stringify perl data structures, suitable for printing and eval +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 2.135.06 +Requires: %perl_compat +Requires: perl(Scalar::Util) +Requires: perl(XSLoader) + +%description Data-Dumper +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. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package DB_File +Summary: Perl5 access to Berkeley DB version 1.x +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.826 +Requires: %perl_compat +Requires: perl(Fcntl) +Requires: perl(XSLoader) +Conflicts: perl < 4:5.16.3-264 + +%description DB_File +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. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Digest +Summary: Modules that calculate message digests +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 0 +Version: 1.17 +BuildArch: noarch +Requires: %perl_compat +Requires: perl(MIME::Base64) + +%description Digest +The Digest:: modules calculate digests, also called "fingerprints" or +"hashes", of some data, called a message. The digest is (usually) +some small/fixed size string. The actual size of the digest depend of +the algorithm used. The message is simply a sequence of arbitrary +bytes or bits. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Digest-MD5 +Summary: Perl interface to the MD5 Algorithm +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 0 +Version: 2.51 +Requires: %perl_compat +Requires: perl(XSLoader) +# Recommended +Requires: perl(Digest::base) >= 1.00 + +%description Digest-MD5 +The Digest::MD5 module allows you to use the RSA Data Security Inc. MD5 +Message Digest algorithm from within Perl programs. The algorithm takes as +input a message of arbitrary length and produces as output a 128-bit +"fingerprint" or "message digest" of the input. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Digest-SHA +Summary: Perl extension for SHA-1/224/256/384/512 +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 5.71 +Requires: %perl_compat +# Recommended +Requires: perl(Digest::base) +Requires: perl(MIME::Base64) + +%description Digest-SHA +Digest::SHA is a complete implementation of the NIST Secure Hash +Standard. It gives Perl programmers a convenient way to calculate +SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512 message digests. The +module can handle all types of input, including partial-byte data. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Encode +Summary: Character encodings in Perl +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 2.44.01 +Requires: %perl_compat +Conflicts: perl < 4:5.16.2-256 + +%description Encode +The Encode module provides the interface between Perl strings and the rest +of the system. Perl strings are sequences of characters. + +%package Encode-devel +Summary: Character encodings in Perl +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 2.44.01 +Requires: %perl_compat +Requires: %{name}-Encode = %{epoch}:%{version}-%{release} +Requires: perl-devel +BuildArch: noarch + +%description Encode-devel +enc2xs builds a Perl extension for use by Encode from either Unicode Character +Mapping files (.ucm) or Tcl Encoding Files (.enc). You can use enc2xs to add +your own encoding to perl. No knowledge of XS is necessary. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Env +Summary: Perl module that imports environment variables as scalars or arrays +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.03 +Requires: %perl_compat +BuildArch: noarch +Conflicts: perl < 4:5.16.2-265 + +%description Env +Perl maintains environment variables in a special hash named %%ENV. For when +this access method is inconvenient, the Perl module Env allows environment +variables to be treated as scalar or array variables. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Exporter +Summary: Implements default import method for modules +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 5.66 +Requires: %perl_compat +Requires: perl(Carp) >= 1.05 +BuildArch: noarch +Conflicts: perl < 4:5.16.2-265 + +%description Exporter +The Exporter module implements an import method which allows a module to +export functions and variables to its users' name spaces. Many modules use +Exporter rather than implementing their own import method because Exporter +provides a highly flexible interface, with an implementation optimized for +the common case. +%endif + +%package ExtUtils-CBuilder +Summary: Compile and link C code for Perl modules +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +# real version 0.280206 https://fedoraproject.org/wiki/Perl/Tips#Dot_approach +Version: 0.28.2.6 +Requires: perl-devel +Requires: %perl_compat +BuildArch: noarch + +%description ExtUtils-CBuilder +This module can build the C portions of Perl modules by invoking the +appropriate compilers and linkers in a cross-platform manner. It was motivated +by the Module::Build project, but may be useful for other purposes as well. + + +%package ExtUtils-Embed +Summary: Utilities for embedding Perl in C/C++ applications +Group: Development/Languages +License: GPL+ or Artistic +Epoch: 0 +Version: 1.30 +Requires: perl-devel +Requires: %perl_compat +BuildArch: noarch + +%description ExtUtils-Embed +Utilities for embedding Perl in C/C++ applications. + + +%package ExtUtils-Install +Summary: Install files from here to there +Group: Development/Languages +License: GPL+ or Artistic +Epoch: 0 +Version: 1.58 +Requires: perl-devel +Requires: %perl_compat +BuildArch: noarch + +%description ExtUtils-Install +Handles the installing and uninstalling of perl modules, scripts, man +pages, etc. + +%if %{dual_life} || %{rebuild_from_scratch} +%package ExtUtils-MakeMaker +Summary: Create a module Makefile +Group: Development/Languages +License: GPL+ or Artistic +Epoch: 0 +Version: 6.63.2 +Requires: perl-devel +Requires: %perl_compat +Requires: perl(ExtUtils::Install) +Requires: perl(ExtUtils::Manifest) +Requires: perl(Test::Harness) +# Optional run-time needed for generating documentation from POD: +Requires: perl(Pod::Man) +BuildArch: noarch + +# Filter false DynaLoader provides. Versioned perl(DynaLoader) keeps +# unfiltered on perl package, no need to reinject it. +%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\(DynaLoader\\)\\s*$ +%global __provides_exclude %__provides_exclude|^perl\\(ExtUtils::MakeMaker::_version\\) + +%description ExtUtils-MakeMaker +Create a module Makefile. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package ExtUtils-Manifest +Summary: Utilities to write and check a MANIFEST file +Group: Development/Languages +License: GPL+ or Artistic +Epoch: 0 +Version: 1.61 +Requires: perl-devel +Requires: %perl_compat +Requires: perl(File::Path) +BuildArch: noarch + +%description ExtUtils-Manifest +%{summary}. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package ExtUtils-ParseXS +Summary: Module and a script for converting Perl XS code into C code +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 3.16 +Requires: perl-devel +Requires: %perl_compat +BuildArch: noarch +Obsoletes: perl-ExtUtils-Typemaps + +%description ExtUtils-ParseXS +ExtUtils::ParseXS will compile XS code into C code by embedding the constructs +necessary to let C functions manipulate Perl values and creates the glue +necessary to let Perl access those functions. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package File-CheckTree +Summary: Run many file-test checks on a tree +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 4.41 +Requires: %perl_compat +BuildArch: noarch +Conflicts: perl < 4:5.16.2-256 + +%description File-CheckTree +File::CheckTree::validate() routine takes a single multi-line string +consisting of directives, each containing a file name plus a file test to try +on it. (The file test may also be a "cd", causing subsequent relative file +names to be interpreted relative to that directory.) After the file test you +may put || die to make it a fatal error if the file test fails. The default is +|| warn. The file test may optionally have a "!' prepended to test for the +opposite condition. If you do a cd and then list some relative file names, you +may want to indent them slightly for readability. If you supply your own die() +or warn() message, you can use $file to interpolate the file name. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package File-Fetch +Summary: Generic file fetching mechanism +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 0.32 +Requires: perl(IPC::Cmd) >= 0.36 +Requires: perl(Module::Load::Conditional) >= 0.04 +Requires: perl(Params::Check) >= 0.07 +Requires: %perl_compat +BuildArch: noarch + +%description File-Fetch +File::Fetch is a generic file fetching mechanism. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package File-Path +Summary: Create or remove directory trees +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 2.08.01 +Requires: %perl_compat +Requires: perl(Carp) +BuildArch: noarch +Conflicts: perl < 4:5.16.2-265 + +%description File-Path +This module provides a convenient way to create directories of arbitrary +depth and to delete an entire directory subtree from the file system. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package File-Temp +Summary: Return name and handle of a temporary file safely +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 0.22 +Requires: %perl_compat +BuildArch: noarch +Requires: perl(File::Path) >= 2.06 +Requires: perl(POSIX) +Conflicts: perl < 4:5.16.2-265 + +%description File-Temp +File::Temp can be used to create and open temporary files in a safe way. +There is both a function interface and an object-oriented interface. The +File::Temp constructor or the tempfile() function can be used to return the +name and the open file handle of a temporary file. The tempdir() function +can be used to create a temporary directory. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +# FIXME Filter-Simple? version? +%package Filter +Summary: Perl source filters +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.40 +Requires: %perl_compat + +%description Filter +Source filters alter the program text of a module before Perl sees it, much as +a C preprocessor alters the source text of a C program before the compiler +sees it. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Getopt-Long +Summary: Extended processing of command line options +Group: Development/Libraries +License: GPLv2+ or Artistic +Epoch: 0 +Version: 2.38 +Requires: %perl_compat +Requires: perl(overload) +Requires: perl(Text::ParseWords) +# Recommended: +Requires: perl(Pod::Usage) >= 1.14 +BuildArch: noarch +Conflicts: perl < 4:5.16.3-268 + +%description Getopt-Long +The Getopt::Long module implements an extended getopt function called +GetOptions(). It parses the command line from @ARGV, recognizing and removing +specified options and their possible values. It adheres to the POSIX syntax +for command line options, with GNU extensions. In general, this means that +options have long names instead of single letters, and are introduced with +a double dash "--". Support for bundling of command line options, as was the +case with the more traditional single-letter approach, is provided but not +enabled by default. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package IO-Compress +Summary: IO::Compress wrapper for modules +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 2.048 +Requires: %perl_compat +Obsoletes: perl-Compress-Zlib <= 2.020 +Provides: perl(IO::Uncompress::Bunzip2) +BuildArch: noarch + +%description IO-Compress +This module is the base class for all IO::Compress and IO::Uncompress modules. +This module is not intended for direct use in application code. Its sole +purpose is to to be sub-classed by IO::Compress modules. +%endif + +%package IO-Zlib +Summary: Perl IO:: style interface to Compress::Zlib +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 1.10 +Requires: perl(Compress::Zlib) +Requires: %perl_compat +BuildArch: noarch + +%description IO-Zlib +This modules provides an IO:: style interface to the Compress::Zlib package. +The main advantage is that you can use an IO::Zlib object in much the same way +as an IO::File object so you can have common code that doesn't know which sort +of file it is using. + + +%if %{dual_life} || %{rebuild_from_scratch} +%package IPC-Cmd +Summary: Finding and running system commands made easy +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.76 +Requires: perl(ExtUtils::MakeMaker) +Requires: %perl_compat +BuildArch: noarch + +%description IPC-Cmd +IPC::Cmd allows you to run commands, interactively if desired, in a platform +independent way, but have them still work. +%endif + + +%if %{dual_life} || %{rebuild_from_scratch} +%package HTTP-Tiny +Summary: A small, simple, correct HTTP/1.1 client +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 0.017 +Requires: perl(bytes) +Requires: perl(Carp) +Requires: perl(IO::Socket) +Requires: perl(Time::Local) +BuildArch: noarch + +%description HTTP-Tiny +This is a very simple HTTP/1.1 client, designed primarily for doing simple GET +requests without the overhead of a large framework like LWP::UserAgent. +It is more correct and more complete than HTTP::Lite. It supports proxies +(currently only non-authenticating ones) and redirection. It also correctly +resumes after EINTR. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package JSON-PP +Summary: JSON::XS compatible pure-Perl module +Epoch: 0 +# 2.27150 version is a typo but we cannot fix it because it would break +# monotony +Version: 2.27200 +License: GPL+ or Artistic +Group: Development/Libraries +BuildArch: noarch +Requires: %perl_compat +Conflicts: perl-JSON < 2.50 + +%description JSON-PP +JSON::XS is the fastest and most proper JSON module on CPAN. It is written by +Marc Lehmann in C, so must be compiled and installed in the used environment. +JSON::PP is a pure-Perl module and is compatible with JSON::XS. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Locale-Codes +Summary: Distribution of modules to handle locale codes +Epoch: 0 +Version: 3.21 +License: GPL+ or Artistic +Group: Development/Libraries +Requires: %perl_compat +Requires: perl(constant) +Provides: perl(Locale::Codes) = %{version} +BuildArch: noarch + +# Do not export unversioned module +%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\(Locale::Codes\\)\\s*$ + +%description Locale-Codes +Locale-Codes is a distribution containing a set of modules. The modules +each deal with different types of codes which identify parts of the locale +including languages, countries, currency, etc. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Locale-Maketext +Summary: Framework for localization +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.22 +Requires: %perl_compat +BuildArch: noarch +Conflicts: perl < 4:5.16.3-268 + +%description Locale-Maketext +It is a common feature of applications (whether run directly, or via the Web) +for them to be "localized" -- i.e., for them to present an English interface +to an English-speaker, a German interface to a German-speaker, and so on for +all languages it's programmed with. Locale::Maketext is a framework for +software localization; it provides you with the tools for organizing and +accessing the bits of text and text-processing code that you need for +producing localized applications. +%endif + +%package Locale-Maketext-Simple +Summary: Simple interface to Locale::Maketext::Lexicon +Group: Development/Libraries +License: MIT +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.21 +Requires: %perl_compat +BuildArch: noarch + +%description Locale-Maketext-Simple +This module is a simple wrapper around Locale::Maketext::Lexicon, designed +to alleviate the need of creating Language Classes for module authors. + + +%if %{dual_life} || %{rebuild_from_scratch} +%package Log-Message +Summary: Generic message storage mechanism +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.04 +Requires: %perl_compat +# Add a versioned provides, since we pull the unversioned one out. +Provides: perl(Log::Message::Handlers) = %{version} +BuildArch: noarch + +%description Log-Message +Log::Message is a generic message storage mechanism. It allows you to store +messages on a stack -- either shared or private -- and assign meta-data to it. +Some meta-data will automatically be added for you, like a timestamp and a +stack trace, but some can be filled in by the user, like a tag by which to +identify it or group it, and a level at which to handle the message (for +example, log it, or die with it). +%endif + + +%if %{dual_life} || %{rebuild_from_scratch} +%package Log-Message-Simple +Summary: Simplified frontend to Log::Message +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 0.08 +Requires: %perl_compat +BuildArch: noarch + +%description Log-Message-Simple +This module provides standardized logging facilities using the +Log::Message module. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Module-Build +Summary: Perl module for building and installing Perl modules +Group: Development/Libraries +License: GPL+ or Artistic +# Check epoch with standalone package +Epoch: 2 +# real version 0.39_01 +Version: 0.39.01 +Requires: perl(Archive::Tar) >= 1.08 +Requires: perl(CPAN::Meta) >= 2.110420 +Requires: perl(ExtUtils::CBuilder) >= 0.15 +Requires: perl(ExtUtils::ParseXS) >= 1.02 +Requires: perl-devel +Requires: %perl_compat +# Optional run-time needed for generating documentation from POD: +Requires: perl(Pod::Html) +Requires: perl(Pod::Man) +Requires: perl(Pod::Text) +BuildArch: noarch + +%description Module-Build +Module::Build is a system for building, testing, and installing Perl modules. +It is meant to be an alternative to ExtUtils::MakeMaker. Developers may alter +the behavior of the module through subclassing in a much more straightforward +way than with MakeMaker. It also does not require a make on your system - most +of the Module::Build code is pure-perl and written in a very cross-platform +way. In fact, you don't even need a shell, so even platforms like MacOS +(traditional) can use it fairly easily. Its only prerequisites are modules that +are included with perl 5.6.0, and it works fine on perl 5.005 if you can +install a few additional modules. +%endif + +%package Module-CoreList +Summary: Perl core modules indexed by perl versions +Group: Development/Languages +License: GPL+ or Artistic +Epoch: 1 +Version: 2.76.02 +Requires: %perl_compat +Requires: perl(version) +BuildArch: noarch + +%description Module-CoreList +Module::CoreList contains the hash of hashes %%Module::CoreList::version, this +is keyed on perl version as indicated in $]. The second level hash is module +=> version pairs. + + +%if %{dual_life} || %{rebuild_from_scratch} +%package Module-Load +Summary: Runtime require of both modules and files +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.22 +Requires: %perl_compat +BuildArch: noarch + +%description Module-Load +Module::Load eliminates the need to know whether you are trying to require +either a file or a module. +%endif + + +%if %{dual_life} || %{rebuild_from_scratch} +%package Module-Load-Conditional +Summary: Looking up module information / loading at runtime +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 0.46 +Requires: %perl_compat +BuildArch: noarch + +%description Module-Load-Conditional +Module::Load::Conditional provides simple ways to query and possibly load any +of the modules you have installed on your system during runtime. +%endif + + +%package Module-Loaded +Summary: Mark modules as loaded or unloaded +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.08 +Requires: %perl_compat +BuildArch: noarch + +%description Module-Loaded +When testing applications, often you find yourself needing to provide +functionality in your test environment that would usually be provided by +external modules. Rather than munging the %%INC by hand to mark these external +modules as loaded, so they are not attempted to be loaded by perl, this module +offers you a very simple way to mark modules as loaded and/or unloaded. + + +%if %{dual_life} || %{rebuild_from_scratch} +%package Module-Metadata +Summary: Gather package and POD information from perl module files +Epoch: 0 +Version: 1.000009 +License: GPL+ or Artistic +Group: Development/Libraries +BuildArch: noarch +Requires: %perl_compat + +%description Module-Metadata +Gather package and POD information from perl module files +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Module-Pluggable +Summary: Automatically give your module the ability to have plugins +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +# Keep two digit decimal part +Version: 4.00 +Requires: %perl_compat +BuildArch: noarch + +%description Module-Pluggable +Provides a simple but, hopefully, extensible way of having 'plugins' for your +module. +%endif + + +%package Object-Accessor +Summary: Perl module that allows per object accessors +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.42 +Requires: %perl_compat +BuildArch: noarch + +%description Object-Accessor +Object::Accessor provides an interface to create per object accessors (as +opposed to per Class accessors, as, for example, Class::Accessor provides). + + +%package Package-Constants +Summary: List all constants declared in a package +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.02 +Requires: %perl_compat +BuildArch: noarch + +%description Package-Constants +Package::Constants lists all the constants defined in a certain package. This +can be useful for, among others, setting up an autogenerated @EXPORT/@EXPORT_OK +for a Constants.pm file. + +%if %{dual_life} || %{rebuild_from_scratch} +%package PathTools +Summary: PathTools Perl module (Cwd, File::Spec) +Group: Development/Libraries +License: (GPL+ or Artistic) and BSD +Epoch: 0 +Version: 3.39.2 +Requires: %perl_compat +Requires: perl(Carp) + +%description PathTools +PathTools Perl module (Cwd, File::Spec). +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Params-Check +Summary: Generic input parsing/checking mechanism +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.32 +Requires: %perl_compat +BuildArch: noarch + +%description Params-Check +Params::Check is a generic input parsing/checking mechanism. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Parse-CPAN-Meta +Summary: Parse META.yml and other similar CPAN metadata files +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 1.4402 +Requires: %perl_compat +BuildArch: noarch +Requires: perl(CPAN::Meta::YAML) >= 0.002 +Requires: perl(JSON::PP) >= 2.27103 +# FIXME it could be removed now? +Obsoletes: perl-Parse-CPAN-Meta < 1.40 + +%description Parse-CPAN-Meta +Parse::CPAN::Meta is a parser for META.yml files, based on the parser half of +YAML::Tiny. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Perl-OSType +Summary: Map Perl operating system names to generic types +Version: 1.002 +Epoch: 0 +License: GPL+ or Artistic +Group: Development/Libraries +Requires: %perl_compat +BuildArch: noarch + +%description Perl-OSType +Modules that provide OS-specific behaviors often need to know if the current +operating system matches a more generic type of operating systems. For example, +'linux' is a type of 'Unix' operating system and so is 'freebsd'. +This module provides a mapping between an operating system name as given by $^O +and a more generic type. The initial version is based on the OS type mappings +provided in Module::Build and ExtUtils::CBuilder (thus, Microsoft operating +systems are given the type 'Windows' rather than 'Win32'). +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Pod-Checker +Summary: Check POD documents for syntax errors +License: GPL+ or Artistic +Group: Development/Libraries +Requires: %perl_compat +BuildArch: noarch + +%description Pod-Checker +Module and tools to verify POD documentation contents for compliance with the +Plain Old Documentation format specifications. +%endif + +%package Pod-Escapes +Summary: Perl module for resolving POD escape sequences +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 1.04 +Requires: %perl_compat +BuildArch: noarch + +%description Pod-Escapes +This module provides things that are useful in decoding Pod E<...> sequences. +Presumably, it should be used only by Pod parsers and/or formatters. + +%if %{dual_life} || %{rebuild_from_scratch} +%package Pod-LaTeX +Summary: Convert POD data to formatted LaTeX +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 0.60 +Requires: %perl_compat +BuildArch: noarch +Conflicts: perl < 4:5.16.2-248 + +%description Pod-LaTeX +Pod::LaTeX is a module to convert documentation in the POD format into +LaTeX. A pod2latex replacement command is provided. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Pod-Parser +Summary: Basic perl modules for handling Plain Old Documentation (POD) +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.51 +Requires: %perl_compat +BuildArch: noarch + +%description Pod-Parser +This software distribution contains the packages for using Perl5 POD (Plain +Old Documentation). See the "perlpod" and "perlsyn" manual pages from your +Perl5 distribution for more information about POD. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Pod-Perldoc +Summary: Look up Perl documentation in Pod format +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 3.17.00 +# Pod::Perldoc::ToMan executes roff +Requires: groff-base +Requires: %perl_compat +BuildArch: noarch + +%description Pod-Perldoc +perldoc looks up a piece of documentation in .pod format that is embedded +in the perl installation tree or in a perl script, and displays it via +"groff -man | $PAGER". This is primarily used for the documentation for +the perl library modules. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Pod-Simple +Summary: Framework for parsing POD documentation +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 3.20 +Requires: %perl_compat +BuildArch: noarch + +%description Pod-Simple +Pod::Simple is a Perl library for parsing text in the Pod ("plain old +documentation") markup language that is typically used for writing +documentation for Perl and for Perl modules. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Pod-Usage +Summary: Print a usage message from embedded pod documentation +License: GPL+ or Artistic +Group: Development/Libraries +# Pod::Usage execute perldoc from perl-Pod-Perldoc by default +BuildRequires: perl-Pod-Perldoc +Requires: %perl_compat +# Pod::Usage executes perldoc from perl-Pod-Perldoc by default +Requires: perl-Pod-Perldoc +Requires: perl(Pod::Text) +BuildArch: noarch + +%description Pod-Usage +pod2usage will print a usage message for the invoking script (using its +embedded POD documentation) and then exit the script with the desired exit +status. The usage message printed may have any one of three levels of +"verboseness": If the verbose level is 0, then only a synopsis is printed. +If the verbose level is 1, then the synopsis is printed along with a +description (if present) of the command line options and arguments. If the +verbose level is 2, then the entire manual page is printed. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package podlators +Summary: Format POD source into various output formats +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 2.4.0 +BuildArch: noarch +Requires: %perl_compat +Requires: perl(File::Spec) >= 0.8 +Requires: perl(Pod::Simple) >= 3.06 +Conflicts: perl < 4:5.16.1-234 + +%description podlators +This package contains Pod::Man and Pod::Text modules which convert POD input +to *roff source output, suitable for man pages, or plain text. It also +includes several sub-classes of Pod::Text for formatted output to terminals +with various capabilities. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Scalar-List-Utils +Summary: A selection of general-utility scalar and list subroutines +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.25 +Requires: %perl_compat + +%description Scalar-List-Utils +Scalar::Util and List::Util contain a selection of subroutines that people have +expressed would be nice to have in the perl core, but the usage would not +really be high enough to warrant the use of a keyword, and the size so small +such that being individual extensions would be wasteful. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Storable +Summary: Persistence for Perl data structures +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 2.34 +Requires: %perl_compat +# Carp substitutes missing Log::Agent +Requires: perl(Carp) +Requires: perl(Config) +# Fcntl is optional, but locking is good +Requires: perl(Fcntl) +Requires: perl(IO::File) +Conflicts: perl < 4:5.16.3-274 + +%description Storable +The Storable package brings persistence to your Perl data structures +containing scalar, array, hash or reference objects, i.e. anything that +can be conveniently stored to disk and retrieved at a later time. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Sys-Syslog +Summary: Perl interface to the UNIX syslog(3) calls +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 0.29 +Requires: %perl_compat +Requires: perl(XSLoader) +Conflicts: perl < 4:5.16.3-269 + +%description Sys-Syslog +Sys::Syslog is an interface to the UNIX syslog(3) function. Call syslog() with +a string priority and a list of printf() arguments just like at syslog(3). +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Term-UI +Summary: Term::ReadLine UI made easy +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 0.30 +Requires: %perl_compat +Requires: perl(Log::Message::Simple) +BuildArch: noarch + +%description Term-UI +Term::UI is a transparent way of eliminating the overhead of having to format +a question and then validate the reply, informing the user if the answer was not +proper and re-issuing the question. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Test-Harness +Summary: Run Perl standard test scripts with statistics +Group: Development/Languages +License: GPL+ or Artistic +Epoch: 0 +Version: 3.23 +Requires: %perl_compat +BuildArch: noarch + +%description Test-Harness +Run Perl standard test scripts with statistics. +Use TAP::Parser, Test::Harness package was whole rewritten. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Test-Simple +Summary: Basic utilities for writing tests +Group: Development/Languages +License: GPL+ or Artistic +Epoch: 0 +Version: 0.98 +Requires: %perl_compat +Requires: perl(Data::Dumper) +BuildArch: noarch + +%description Test-Simple +Basic utilities for writing tests. + +%package Test-Simple-tests +Summary: Test suite for package perl-Test-Simple +Group: Development/Debug +License: GPL+ or Artistic +Epoch: 0 +Version: 0.98 +Requires: perl-Test-Simple = %{epoch}:%{version}-%{release} +Requires: /usr/bin/prove +AutoReqProv: 0 +BuildArch: noarch + +%description Test-Simple-tests +This package provides the test suite for package perl-Test-Simple. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Text-ParseWords +Summary: Parse text into an array of tokens or array of arrays +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 3.27 +Requires: %perl_compat +Requires: perl(Carp) +BuildArch: noarch +Conflicts: perl < 4:5.16.2-256 + +%description Text-ParseWords +Parse text into an array of tokens or array of arrays. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Text-Soundex +Summary: Implementation of the soundex algorithm +Group: Development/Libraries +License: Copyright only +Epoch: 0 +# perl's 3.03_1 copy is identical to CPAN 3.03 +Version: 3.03 +Requires: %perl_compat +Requires: perl(Carp) +Requires: perl(Text::Unidecode) +Conflicts: perl < 4:5.16.2-250 + +%description Text-Soundex +Soundex is a phonetic algorithm for indexing names by sound, as pronounced in +English. This module implements the original soundex algorithm developed by +Robert Russell and Margaret Odell, as well as a variation called "American +Soundex". +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Thread-Queue +Summary: Thread-safe queues +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 2.12 +Requires: %perl_compat +Requires: perl(Carp) +BuildArch: noarch +Conflicts: perl < 4:5.16.2-257 + +%description Thread-Queue +This module provides thread-safe FIFO queues that can be accessed safely by +any number of threads. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Time-HiRes +Summary: High resolution alarm, sleep, gettimeofday, interval timers +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.9725 +Requires: %perl_compat +Requires: perl(Carp) +Conflicts: perl < 4:5.16.3-271 + +%description Time-HiRes +The Time::HiRes module implements a Perl interface to the usleep, nanosleep, +ualarm, gettimeofday, and setitimer/getitimer system calls, in other words, +high resolution time and timers. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Time-Local +Summary: Efficiently compute time from local and GMT time +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.2000 +Requires: %perl_compat +BuildArch: noarch +Conflicts: perl < 4:5.16.3-262 + +%description Time-Local +This module provides functions that are the inverse of built-in perl functions +localtime() and gmtime(). They accept a date as a six-element array, and +return the corresponding time(2) value in seconds since the system epoch +(Midnight, January 1, 1970 GMT on Unix, for example). This value can be +positive or negative, though POSIX only requires support for positive values, +so dates before the system's epoch may not work on all operating systems. +%endif + +%package Time-Piece +Summary: Time objects from localtime and gmtime +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +# real 1.20_01 +Version: 1.20.1 +Requires: %perl_compat + +%description Time-Piece +The Time::Piece module replaces the standard localtime and gmtime functions +with implementations that return objects. It does so in a backwards compatible +manner, so that using localtime or gmtime as documented in perlfunc still +behave as expected. + +%if %{dual_life} || %{rebuild_from_scratch} +%package parent +Summary: Establish an ISA relationship with base classes at compile time +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.225 +Requires: %perl_compat +BuildArch: noarch + +%description parent +parent allows you to both load one or more modules, while setting up +inheritance from those modules at the same time. Mostly similar in effect to: + + package Baz; + + BEGIN { + require Foo; + require Bar; + + push @ISA, qw(Foo Bar); + } +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Socket +Summary: C socket.h defines and structure manipulators +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 2.001 +Requires: %perl_compat + +%description Socket +This module is just a translation of the C socket.h file. Unlike the old +mechanism of requiring a translated socket.ph file, this uses the h2xs program +(see the Perl source distribution) and your native C compiler. This means +that it has a far more likely chance of getting the numbers right. This +includes all of the commonly used pound-defines like AF_INET, SOCK_STREAM, etc. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package threads +Summary: Perl interpreter-based threads +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.86 +Requires: perl = %{perl_epoch}:%{perl_version} + +%description threads +Since Perl 5.8, thread programming has been available using a model called +interpreter threads which provides a new Perl interpreter for each thread, +and, by default, results in no data or state information being shared between +threads. + +(Prior to Perl 5.8, 5005threads was available through the Thread.pm API. This +threading model has been deprecated, and was removed as of Perl 5.10.0.) + +As just mentioned, all variables are, by default, thread local. To use shared +variables, you need to also load threads::shared. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package threads-shared +Summary: Perl extension for sharing data structures between threads +Group: Development/Libraries +License: GPL+ or Artistic +Epoch: 0 +Version: 1.40 +Requires: %perl_compat + +%description threads-shared +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. This module supports the sharing of the +following data types only: scalars and scalar refs, arrays and array refs, and +hashes and hash refs. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package version +Summary: Perl extension for Version Objects +Group: Development/Libraries +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 3 +Version: 0.99 +Requires: %perl_compat +BuildArch: noarch + +%description version +Perl extension for Version Objects +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Version-Requirements +Summary: Set of version requirements for a CPAN dist +License: GPL+ or Artistic +Group: Development/Libraries +Version: 0.101022 +Epoch: 0 +Requires: %perl_compat +BuildArch: noarch + +%description Version-Requirements +A Version::Requirements object models a set of version constraints like +those specified in the META.yml or META.json files in CPAN distributions. +It can be built up by adding more and more constraints, and it will reduce +them to the simplest representation. +%endif + +%package core +Summary: Base perl metapackage +Group: Development/Languages +# This rpm doesn't contain any copyrightable material. +# Nevertheless, it needs a License tag, so we'll use the generic +# "perl" license. +License: GPL+ or Artistic +Epoch: 0 +Version: %{perl_version} +Requires: %perl_compat +Requires: perl-libs = %{perl_epoch}:%{perl_version}-%{release} +Requires: perl-devel = %{perl_epoch}:%{perl_version}-%{release} +Requires: perl-macros + +Requires: perl-Archive-Extract, perl-Archive-Tar, perl-autodie +Requires: perl-B-Lint, perl-Compress-Raw-Bzip2, +Requires: perl-Carp, perl-Compress-Raw-Zlib, perl-CGI, perl-constant, +Requires: perl-CPAN, perl-CPAN-Meta, perl-CPAN-Meta-Requirements, +Requires: perl-CPAN-Meta-YAML, perl-CPANPLUS, +Requires: perl-CPANPLUS-Dist-Build, perl-Encode +Requires: perl-Data-Dumper, perl-DB_File, perl-Digest, perl-Digest-MD5, +Requires: perl-Digest-SHA, perl-Env, perl-Exporter +Requires: perl-ExtUtils-CBuilder, perl-ExtUtils-Embed, +Requires: perl-ExtUtils-Install, perl-ExtUtils-MakeMaker +Requires: perl-ExtUtils-Manifest +Requires: perl-ExtUtils-ParseXS, perl-File-CheckTree, perl-File-Fetch +Requires: perl-File-Path, perl-File-Temp, perl-Filter, perl-Getopt-Long +Requires: perl-HTTP-Tiny +Requires: perl-IO-Compress, perl-IO-Zlib, perl-IPC-Cmd, perl-JSON-PP +Requires: perl-Locale-Codes, perl-Locale-Maketext, +Requires: perl-Locale-Maketext-Simple +Requires: perl-Log-Message, perl-Log-Message-Simple, perl-Module-Build +Requires: perl-Module-CoreList, perl-Module-Load +Requires: perl-Module-Load-Conditional, perl-Module-Loaded, perl-Module-Metadata +Requires: perl-Module-Pluggable, perl-Object-Accessor, perl-Package-Constants, perl-PathTools +Requires: perl-Params-Check, perl-Parse-CPAN-Meta, perl-Perl-OSType +Requires: perl-Pod-Checker, perl-Pod-Escapes, perl-Pod-LaTeX +Requires: perl-Pod-Parser, perl-Pod-Perldoc, perl-Pod-Usage +Requires: perl-podlators, perl-Pod-Simple, perl-Scalar-List-Utils +Requires: perl-Socket, perl-Storable, perl-Sys-Syslog, +Requires: perl-Term-UI, perl-Test-Harness, +Requires: perl-Test-Simple +Requires: perl-Text-ParseWords, perl-Text-Soundex, perl-Thread-Queue +Requires: perl-Time-HiRes +Requires: perl-Time-Local, perl-Time-Piece, perl-Version-Requirements, +Requires: perl-version, perl-threads, perl-threads-shared, perl-parent + +%description core +A metapackage which requires all of the perl bits and modules in the upstream +tarball from perl.org. + +%prep +%setup -q -n perl-%{perl_version} +%patch0 -p1 +%patch1 -p1 +%ifarch %{multilib_64_archs} +%patch3 -p1 +%endif +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 +%patch25 -p1 +%patch26 -p1 +%patch27 -p1 +%patch28 -p1 +%patch29 -p1 +%patch30 -p1 +%patch31 -p1 +%patch32 -p1 +%patch33 -p1 +%patch34 -p1 +%patch35 -p1 +%patch36 -p1 +%patch37 -p1 + +%if !%{defined perl_bootstrap} +# Local patch tracking +perl -x patchlevel.h \ + 'Fedora Patch1: Removes date check, Fedora/RHEL specific' \ +%ifarch %{multilib_64_archs} \ + 'Fedora Patch3: support for libdir64' \ +%endif \ + 'Fedora Patch4: use libresolv instead of libbind' \ + 'Fedora Patch5: USE_MM_LD_RUN_PATH' \ + 'Fedora Patch6: Skip hostname tests, due to builders not being network capable' \ + 'Fedora Patch7: Dont run one io test due to random builder failures' \ + 'Fedora Patch9: Fix find2perl to translate ? glob properly (RT#113054)' \ + 'Fedora Patch10: Fix broken atof (RT#109318)' \ + 'Fedora Patch13: Clear $@ before "do" I/O error (RT#113730)' \ + 'Fedora Patch14: Do not truncate syscall() return value to 32 bits (RT#113980)' \ + 'Fedora Patch15: Override the Pod::Simple::parse_file (CPANRT#77530)' \ + 'Fedora Patch16: Do not leak with attribute on my variable (RT#114764)' \ + 'Fedora Patch17: Allow operator after numeric keyword argument (RT#105924)' \ + 'Fedora Patch18: Extend stack in File::Glob::glob, (RT#114984)' \ + 'Fedora Patch19: Do not crash when vivifying $|' \ + 'Fedora Patch20: Fix misparsing of maketext strings (CVE-2012-6329)' \ + 'Fedora Patch21: Add NAME headings to CPAN modules (CPANRT#73396)' \ + 'Fedora Patch22: Fix leaking tied hashes (RT#107000) [1]' \ + 'Fedora Patch23: Fix leaking tied hashes (RT#107000) [2]' \ + 'Fedora Patch24: Fix leaking tied hashes (RT#107000) [3]' \ + 'Fedora Patch25: Fix dead lock in PerlIO after fork from thread (RT#106212)' \ + 'Fedora Patch26: Make regexp safe in a signal handler (RT#114878)' \ + 'Fedora Patch27: Update h2ph(1) documentation (RT#117647)' \ + 'Fedora Patch28: Update pod2html(1) documentation (RT#117623)' \ + 'Fedora Patch29: Document Math::BigInt::CalcEmu requires Math::BigInt (CPAN RT#85015)' \ + 'RHEL Patch30: Use stronger algorithm needed for FIPS in t/op/crypt.t (RT#121591)' \ + 'RHEL Patch31: Make *DBM_File desctructors thread-safe (RT#61912)' \ + 'RHEL Patch32: Use stronger algorithm needed for FIPS in t/op/taint.t (RT#123338)' \ + 'RHEL Patch33: Remove CPU-speed-sensitive test in Benchmark test' \ + 'RHEL Patch34: Make File::Glob work with threads again' \ + 'RHEL Patch35: Fix CRLF conversion in ASCII FTP upload (CPAN RT#41642)' \ + 'RHEL Patch36: Do not leak the temp utf8 copy of namepv (CPAN RT#123786)' \ + 'RHEL Patch37: Fix duplicating PerlIO::encoding when spawning threads (RT#31923)' \ + %{nil} +%endif + +#copy the example script +cp -a %{SOURCE5} . + +# +# Candidates for doc recoding (need case by case review): +# find . -name "*.pod" -o -name "README*" -o -name "*.pm" | xargs file -i | grep charset= | grep -v '\(us-ascii\|utf-8\)' +recode() +{ + iconv -f "${2:-iso-8859-1}" -t utf-8 < "$1" > "${1}_" + touch -r "$1" "${1}_" + mv -f "${1}_" "$1" +} +recode README.cn euc-cn +recode README.jp euc-jp +recode README.ko euc-kr +# TODO iconv fail on this one +##recode README.tw big5 +recode pod/perlebcdic.pod +recode pod/perlhack.pod +recode pod/perlhist.pod +recode pod/perlthrtut.pod +recode AUTHORS + +find . -name \*.orig -exec rm -fv {} \; + +# Configure Compress::Zlib to use system zlib +sed -i 's|BUILD_ZLIB = True|BUILD_ZLIB = False| + s|INCLUDE = ./zlib-src|INCLUDE = %{_includedir}| + s|LIB = ./zlib-src|LIB = %{_libdir}|' \ + cpan/Compress-Raw-Zlib/config.in + +# Ensure that we never accidentally bundle zlib or bzip2 +rm -rf cpan/Compress-Raw-Zlib/zlib-src +rm -rf cpan/Compress-Raw-Bzip2/bzip2-src +sed -i '/\(bzip2\|zlib\)-src/d' MANIFEST + +%if !%{with gdbm} +# Do not install anything requiring NDBM_File if NDBM is not available. +rm -rf 'cpan/Memoize/Memoize/NDBM_File.pm' +sed -i '\|cpan/Memoize/Memoize/NDBM_File.pm|d' MANIFEST +%endif + +%build +echo "RPM Build arch: %{_arch}" + +# use "lib", not %%{_lib}, for privlib, sitelib, and vendorlib +# To build production version, we would need -DDEBUGGING=-g + +# Perl INC path (perl -V) in search order: +# - /usr/local/share/perl5 -- for CPAN (site lib) +# - /usr/local/lib[64]/perl5 -- for CPAN (site arch) +# - /usr/share/perl5/vendor_perl -- 3rd party (vendor lib) +# - /usr/lib[64]/perl5/vendor_perl -- 3rd party (vendor arch) +# - /usr/share/perl5 -- Fedora (priv lib) +# - /usr/lib[64]/perl5 -- Fedora (arch lib) + +%global privlib %{_prefix}/share/perl5 +%global archlib %{_libdir}/perl5 + +%global perl_vendorlib %{privlib}/vendor_perl +%global perl_vendorarch %{archlib}/vendor_perl + +# For perl-5.14.2-large-repeat-heap-abuse.patch +perl regen.pl -v + +/bin/sh Configure -des -Doptimize="$RPM_OPT_FLAGS" \ + -Dccdlflags="-Wl,--enable-new-dtags" \ + -Dlddlflags="-shared $RPM_OPT_FLAGS $RPM_LD_FLAGS" \ + -DDEBUGGING=-g \ + -Dversion=%{perl_version} \ + -Dmyhostname=localhost \ + -Dperladmin=root@localhost \ + -Dcc='%{__cc}' \ + -Dcf_by='Red Hat, Inc.' \ + -Dprefix=%{_prefix} \ + -Dvendorprefix=%{_prefix} \ + -Dsiteprefix=%{_prefix}/local \ + -Dsitelib="%{_prefix}/local/share/perl5" \ + -Dsitearch="%{_prefix}/local/%{_lib}/perl5" \ + -Dprivlib="%{privlib}" \ + -Dvendorlib="%{perl_vendorlib}" \ + -Darchlib="%{archlib}" \ + -Dvendorarch="%{perl_vendorarch}" \ + -Darchname=%{perl_archname} \ +%ifarch %{multilib_64_archs} + -Dlibpth="/usr/local/lib64 /lib64 %{_prefix}/lib64" \ +%endif +%ifarch sparc sparcv9 + -Ud_longdbl \ +%endif + -Duseshrplib \ + -Dusethreads \ + -Duseithreads \ + -Dusedtrace='/usr/bin/dtrace' \ + -Duselargefiles \ + -Dd_semctl_semun \ + -Di_db \ +%if %{with gdbm} + -Ui_ndbm \ + -Di_gdbm \ +%endif + -Di_shadow \ + -Di_syslog \ + -Dman3ext=3pm \ + -Duseperlio \ + -Dinstallusrbinperl=n \ + -Ubincompat5005 \ + -Uversiononly \ + -Dpager='/usr/bin/less -isr' \ + -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto \ + -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto \ + -Ud_endservent_r_proto -Ud_setservent_r_proto \ + -Dscriptdir='%{_bindir}' \ + -Dusesitecustomize + +# -Duseshrplib creates libperl.so, -Ubincompat5005 help create DSO -> libperl.so + +BUILD_BZIP2=0 +BZIP2_LIB=%{_libdir} +export BUILD_BZIP2 BZIP2_LIB + +%ifarch sparc64 %{arm} +make +%else +make %{?_smp_mflags} +%endif + +%install +make install DESTDIR=$RPM_BUILD_ROOT + +%global build_archlib $RPM_BUILD_ROOT%{archlib} +%global build_privlib $RPM_BUILD_ROOT%{privlib} +%global build_bindir $RPM_BUILD_ROOT%{_bindir} +%global new_perl LD_PRELOAD="%{build_archlib}/CORE/libperl.so" \\\ + LD_LIBRARY_PATH="%{build_archlib}/CORE" \\\ + PERL5LIB="%{build_archlib}:%{build_privlib}" \\\ + %{build_bindir}/perl + +install -p -m 755 utils/pl2pm %{build_bindir}/pl2pm + +for i in asm/termios.h syscall.h syslimits.h syslog.h \ + sys/ioctl.h sys/socket.h sys/time.h wait.h +do + %{new_perl} %{build_bindir}/h2ph -a -d %{build_archlib} $i || true +done + +# vendor directories (in this case for third party rpms) +# perl doesn't create the auto subdirectory, but modules put things in it, +# so we need to own it. + +mkdir -p $RPM_BUILD_ROOT%{perl_vendorarch}/auto +mkdir -p $RPM_BUILD_ROOT%{perl_vendorlib} + +# +# libnet configuration file +# +install -p -m 644 %{SOURCE2} %{build_privlib}/Net/libnet.cfg + +# +# perl RPM macros +# +mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/rpm +install -p -m 644 %{SOURCE3} ${RPM_BUILD_ROOT}%{_sysconfdir}/rpm/ + +# +# Core modules removal +# +find $RPM_BUILD_ROOT -type f -name '*.bs' -empty | xargs rm -f + +chmod -R u+w $RPM_BUILD_ROOT/* + +# miniperl? As an interpreter? How odd. Anyway, a symlink does it: +rm %{build_privlib}/ExtUtils/xsubpp +ln -s ../../../bin/xsubpp %{build_privlib}/ExtUtils/ + +# Don't need the .packlist +rm %{build_archlib}/.packlist + +# Do not distribute File::Spec::VMS as it works on VMS only (bug #973713) +# We cannot remove it in %%prep because dist/Cwd/t/Spec.t test needs it. +rm %{build_archlib}/File/Spec/VMS.pm +rm $RPM_BUILD_ROOT%{_mandir}/man3/File::Spec::VMS.3* + +# Fix some manpages to be UTF-8 +mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1/ +pushd $RPM_BUILD_ROOT%{_mandir}/man1/ + for i in perl588delta.1 perldelta.1 ; do + iconv -f MS-ANSI -t UTF-8 $i --output new-$i + rm $i + mv new-$i $i + done +popd + +# for now, remove Bzip2: +# Why? Now is missing Bzip2 files and provides +##find $RPM_BUILD_ROOT -name Bzip2 | xargs rm -r +##find $RPM_BUILD_ROOT -name '*B*zip2*'| xargs rm + +# tests -- FIXME need to validate that this all works as expected +mkdir -p %{buildroot}%{perl5_testdir}/perl-tests + +# "core" +tar -cf - t/ | ( cd %{buildroot}%{perl5_testdir}/perl-tests && tar -xf - ) + +# "dual-lifed" +for dir in `find ext/ -type d -name t -maxdepth 2` ; do + + tar -cf - $dir | ( cd %{buildroot}%{perl5_testdir}/perl-tests/t && tar -xf - ) +done + +# Selected "Dual-lifed cpan" packages +pushd cpan +for package in Test-Simple; do + for dir in `find ${package} -type d -name t -maxdepth 2` ; do + tar -cf - $dir | ( cd %{buildroot}%{perl5_testdir} && tar -xf - ) + done +done +popd + +# Systemtap tapset install +mkdir -p %{buildroot}%{tapsetdir} +%ifarch %{multilib_64_archs} +%global libperl_stp libperl%{perl_version}-64.stp +%else +%global libperl_stp libperl%{perl_version}-32.stp +%endif + +sed \ + -e "s|LIBRARY_PATH|%{archlib}/CORE/libperl.so|" \ + %{SOURCE4} \ + > %{buildroot}%{tapsetdir}/%{libperl_stp} + +# TODO: Canonicalize test files (rewrite intrerpreter path, fix permissions) +# XXX: We cannot rewrite ./perl before %%check phase. Otherwise the test +# would run against system perl at build-time. +# See __spec_check_pre global macro in macros.perl. +#T_FILES=`find %%{buildroot}%%{perl5_testdir} -type f -name '*.t'` +#%%fix_shbang_line $T_FILES +#%%{__chmod} +x $T_FILES +#%%{_fixperms} %%{buildroot}%%{perl5_testdir} +# +# lib/perl5db.t will fail if Term::ReadLine::Gnu is available +%check +%if %{with test} +%if %{parallel_tests} + JOBS=$(printf '%%s' "%{?_smp_mflags}" | sed 's/.*-j\([0-9][0-9]*\).*/\1/') + LC_ALL=C TEST_JOBS=$JOBS make test_harness +%else + LC_ALL=C make test +%endif +%endif + +%post libs -p /sbin/ldconfig + +%postun libs -p /sbin/ldconfig + +%files +%doc Artistic AUTHORS Copying README Changes +%{_mandir}/man1/*.1* +%{_mandir}/man3/*.3* +%{_bindir}/* +%{privlib} +%{archlib}/* +%{perl_vendorlib} + + +# libs +%exclude %{archlib}/CORE/libperl.so +%exclude %{perl_vendorarch} + +# devel +%exclude %{_bindir}/h2xs +%exclude %{_mandir}/man1/h2xs* +%exclude %{_bindir}/libnetcfg +%exclude %{_mandir}/man1/libnetcfg* +%exclude %{_bindir}/perlivp +%exclude %{_mandir}/man1/perlivp* +%exclude %{archlib}/CORE/*.h +%exclude %{_mandir}/man1/perlxs* + +# Archive-Extract +%exclude %{privlib}/Archive/Extract.pm +%exclude %{_mandir}/man3/Archive::Extract.3* + +# Archive-Tar +%exclude %{_bindir}/ptar +%exclude %{_bindir}/ptardiff +%exclude %{_bindir}/ptargrep +%exclude %{privlib}/Archive/Tar/ +%exclude %{privlib}/Archive/Tar.pm +%exclude %{_mandir}/man1/ptar.1* +%exclude %{_mandir}/man1/ptardiff.1* +%exclude %{_mandir}/man1/ptargrep.1* +%exclude %{_mandir}/man3/Archive::Tar* + +# autodie +%exclude %{privlib}/autodie/ +%exclude %{privlib}/autodie.pm +%exclude %{privlib}/Fatal.pm +%exclude %{_mandir}/man3/autodie.3* +%exclude %{_mandir}/man3/autodie::* +%exclude %{_mandir}/man3/Fatal.3* + +# B-Lint +%exclude %{privlib}/B/Lint* +%exclude %{_mandir}/man3/B::Lint* + +# Carp +%exclude %{privlib}/Carp +%exclude %{privlib}/Carp.* +%exclude %{_mandir}/man3/Carp.* + +# CGI +%exclude %{privlib}/CGI/ +%exclude %{privlib}/CGI.pm +%exclude %{_mandir}/man3/CGI.3* +%exclude %{_mandir}/man3/CGI::*.3* + +# constant +%exclude %{privlib}/constant.pm +%exclude %{_mandir}/man3/constant.3* + +# CPAN +%exclude %{_bindir}/cpan +%exclude %{privlib}/App/Cpan.pm +%exclude %{privlib}/CPAN/ +%exclude %{privlib}/CPAN.pm +%exclude %{_mandir}/man1/cpan.1* +%exclude %{_mandir}/man3/App::Cpan.* +%exclude %{_mandir}/man3/CPAN.* +%exclude %{_mandir}/man3/CPAN:* + +# CPAN-Meta +%exclude %{privlib}/CPAN/Meta.pm +%exclude %{privlib}/CPAN/Meta/Converter.pm +%exclude %{privlib}/CPAN/Meta/Feature.pm +%exclude %{privlib}/CPAN/Meta/History.pm +%exclude %{privlib}/CPAN/Meta/Prereqs.pm +%exclude %{privlib}/CPAN/Meta/Spec.pm +%exclude %{privlib}/CPAN/Meta/Validator.pm +%exclude %{_mandir}/man3/CPAN::Meta* + +# CPAN-Meta-Requirements +%exclude %{privlib}/CPAN/Meta/Requirements.pm +%exclude %{_mandir}/man3/CPAN::Meta::Requirements.3* + +# CPAN-Meta-YAML +%exclude %{privlib}/CPAN/Meta/YAML.pm +%exclude %{_mandir}/man3/CPAN::Meta::YAML* + +# Parse-CPAN-Meta +%exclude %dir %{privlib}/Parse/ +%exclude %dir %{privlib}/Parse/CPAN/ +%exclude %{privlib}/Parse/CPAN/Meta.pm +%exclude %{_mandir}/man3/Parse::CPAN::Meta.3* + +# CPANPLUS +# CPANPLUS-Dist-Build +%exclude %{_bindir}/cpan2dist +%exclude %{_bindir}/cpanp +%exclude %{_bindir}/cpanp-run-perl +%exclude %{privlib}/CPANPLUS/ +%exclude %{privlib}/CPANPLUS.pm +%exclude %{_mandir}/man1/cpan2dist.1* +%exclude %{_mandir}/man1/cpanp.1* +%exclude %{_mandir}/man3/CPANPLUS* + +# Compress-Raw-Bzip2 +%exclude %dir %{archlib}/Compress +%exclude %{archlib}/Compress/Raw/Bzip2.pm +%exclude %{_mandir}/man3/Compress::Raw::Bzip2* + +# Compress-Raw-Zlib +%exclude %{archlib}/Compress/Raw/ +%exclude %{archlib}/auto/Compress +%exclude %{archlib}/auto/Compress/Raw/ +%exclude %{archlib}/auto/Compress/Raw/Zlib/ +%exclude %{_mandir}/man3/Compress::Raw::Zlib* + +# Data-Dumper +%exclude %dir %{archlib}/auto/Data +%exclude %dir %{archlib}/auto/Data/Dumper +%exclude %{archlib}/auto/Data/Dumper/Dumper.so +%exclude %dir %{archlib}/Data +%exclude %{archlib}/Data/Dumper.pm +%exclude %{_mandir}/man3/Data::Dumper.3* + +# DB_File +%exclude %{archlib}/DB_File.pm +%exclude %dir %{archlib}/auto/DB_File +%exclude %{archlib}/auto/DB_File/DB_File.so +%exclude %{_mandir}/man3/DB_File* + +# Digest +%exclude %{privlib}/Digest.pm +%exclude %dir %{privlib}/Digest +%exclude %{privlib}/Digest/base.pm +%exclude %{privlib}/Digest/file.pm +%exclude %{_mandir}/man3/Digest.3* +%exclude %{_mandir}/man3/Digest::base.3* +%exclude %{_mandir}/man3/Digest::file.3* + +# Digest-MD5 +%exclude %{archlib}/Digest/MD5.pm +%exclude %{archlib}/auto/Digest/MD5/ +%exclude %{_mandir}/man3/Digest::MD5.3* + +# Digest-SHA +%exclude %{_bindir}/shasum +%exclude %{archlib}/Digest/SHA.pm +%exclude %{archlib}/auto/Digest/SHA/ +%exclude %{_mandir}/man1/shasum.1* +%exclude %{_mandir}/man3/Digest::SHA.3* + +# Encode +%exclude %{_bindir}/piconv +%exclude %{archlib}/encoding.pm +%exclude %{archlib}/Encode* +%exclude %{archlib}/auto/Encode* +%exclude %{_mandir}/man1/piconv.1* +%exclude %{_mandir}/man3/encoding.3* +%exclude %{_mandir}/man3/Encode*.3* + +# Encode-devel +%exclude %{_bindir}/enc2xs +%exclude %{privlib}/Encode/*.e2x +%exclude %{privlib}/Encode/encode.h +%exclude %{_mandir}/man1/enc2xs.1* + +# Env +%exclude %{privlib}/Env.pm +%exclude %{_mandir}/man3/Env.3* + +# Exporter +%exclude %{privlib}/Exporter* +%exclude %{_mandir}/man3/Exporter* + +# ExtUtils-CBuilder +%exclude %{privlib}/ExtUtils/CBuilder/ +%exclude %{privlib}/ExtUtils/CBuilder.pm +%exclude %{_mandir}/man3/ExtUtils::CBuilder* + +# ExtUtils-Embed +%exclude %{privlib}/ExtUtils/Embed.pm +%exclude %{_mandir}/man3/ExtUtils::Embed* + +# ExtUtils-Install +%exclude %{privlib}/ExtUtils/Install.pm +%exclude %{privlib}/ExtUtils/Installed.pm +%exclude %{privlib}/ExtUtils/Packlist.pm +%exclude %{_mandir}/man3/ExtUtils::Install.3* +%exclude %{_mandir}/man3/ExtUtils::Installed.3* +%exclude %{_mandir}/man3/ExtUtils::Packlist.3* + +# ExtUtils-Manifest +%exclude %{privlib}/ExtUtils/Manifest.pm +%exclude %{privlib}/ExtUtils/MANIFEST.SKIP +%exclude %{_mandir}/man3/ExtUtils::Manifest.3* + +# ExtUtils-MakeMaker +%exclude %{_bindir}/instmodsh +%exclude %{privlib}/ExtUtils/Command/ +%exclude %{privlib}/ExtUtils/Liblist/ +%exclude %{privlib}/ExtUtils/Liblist.pm +%exclude %{privlib}/ExtUtils/MakeMaker/ +%exclude %{privlib}/ExtUtils/MakeMaker.pm +%exclude %{privlib}/ExtUtils/MM*.pm +%exclude %{privlib}/ExtUtils/MY.pm +%exclude %{privlib}/ExtUtils/Mkbootstrap.pm +%exclude %{privlib}/ExtUtils/Mksymlists.pm +%exclude %{privlib}/ExtUtils/testlib.pm +%exclude %{_mandir}/man1/instmodsh.1* +%exclude %{_mandir}/man3/ExtUtils::Command::MM* +%exclude %{_mandir}/man3/ExtUtils::Liblist.3* +%exclude %{_mandir}/man3/ExtUtils::MM* +%exclude %{_mandir}/man3/ExtUtils::MY.3* +%exclude %{_mandir}/man3/ExtUtils::MakeMaker* +%exclude %{_mandir}/man3/ExtUtils::Mkbootstrap.3* +%exclude %{_mandir}/man3/ExtUtils::Mksymlists.3* +%exclude %{_mandir}/man3/ExtUtils::testlib.3* + +# ExtUtils-ParseXS +%exclude %dir %{privlib}/ExtUtils/ParseXS/ +%exclude %dir %{privlib}/ExtUtils/Typemaps/ +%exclude %{privlib}/ExtUtils/ParseXS.pm +%exclude %{privlib}/ExtUtils/ParseXS.pod +%exclude %{privlib}/ExtUtils/ParseXS/Constants.pm +%exclude %{privlib}/ExtUtils/ParseXS/CountLines.pm +%exclude %{privlib}/ExtUtils/ParseXS/Utilities.pm +%exclude %{privlib}/ExtUtils/Typemaps.pm +%exclude %{privlib}/ExtUtils/Typemaps/Cmd.pm +%exclude %{privlib}/ExtUtils/Typemaps/InputMap.pm +%exclude %{privlib}/ExtUtils/Typemaps/OutputMap.pm +%exclude %{privlib}/ExtUtils/Typemaps/Type.pm +%exclude %{privlib}/ExtUtils/xsubpp +%exclude %{_bindir}/xsubpp +%exclude %{_mandir}/man1/xsubpp* +%exclude %{_mandir}/man3/ExtUtils::ParseXS.3* +%exclude %{_mandir}/man3/ExtUtils::ParseXS::Constants.3* +%exclude %{_mandir}/man3/ExtUtils::ParseXS::Utilities.3* +%exclude %{_mandir}/man3/ExtUtils::Typemaps.3* +%exclude %{_mandir}/man3/ExtUtils::Typemaps::Cmd.3* +%exclude %{_mandir}/man3/ExtUtils::Typemaps::InputMap.3* +%exclude %{_mandir}/man3/ExtUtils::Typemaps::OutputMap.3* +%exclude %{_mandir}/man3/ExtUtils::Typemaps::Type.3* + +# File-CheckTree +%exclude %{privlib}/File/CheckTree.pm +%exclude %{_mandir}/man3/File::CheckTree.3* + +# File-Fetch +%exclude %{privlib}/File/Fetch.pm +%exclude %{_mandir}/man3/File::Fetch.3* + +# File-Path +%exclude %{privlib}/File/Path.pm +%exclude %{_mandir}/man3/File::Path.3* + +# File-Temp +%exclude %{privlib}/File/Temp.pm +%exclude %{_mandir}/man3/File::Temp.3* + +# Filter +%exclude %{archlib}/auto/Filter/Util +%exclude %{archlib}/Filter/Util +%exclude %{privlib}/pod/perlfilter.pod +%exclude %{_mandir}/man1/perlfilter.* +%exclude %{_mandir}/man3/Filter::Util::* + +# Getopt-Long +%exclude %{privlib}/Getopt/Long.pm +%exclude %{_mandir}/man3/Getopt::Long.3* + +# IO-Compress +%exclude %{_bindir}/zipdetails +%exclude %{privlib}/IO/Compress/FAQ.pod +%exclude %{_mandir}/man1/zipdetails.* +%exclude %{_mandir}/man3/IO::Compress::FAQ.* +# Compress-Zlib +%exclude %{privlib}/Compress/Zlib.pm +%exclude %{_mandir}/man3/Compress::Zlib* +# IO-Compress-Base +%exclude %{privlib}/File/GlobMapper.pm +%exclude %{privlib}/IO/Compress/Base/ +%exclude %{privlib}/IO/Compress/Base.pm +%exclude %{privlib}/IO/Uncompress/AnyUncompress.pm +%exclude %{privlib}/IO/Uncompress/Base.pm +%exclude %{_mandir}/man3/File::GlobMapper.* +%exclude %{_mandir}/man3/IO::Compress::Base.* +%exclude %{_mandir}/man3/IO::Uncompress::AnyUncompress.* +%exclude %{_mandir}/man3/IO::Uncompress::Base.* +# IO-Compress-Zlib +%exclude %{privlib}/IO/Compress/Adapter/ +%exclude %{privlib}/IO/Compress/Deflate.pm +%exclude %{privlib}/IO/Compress/Gzip/ +%exclude %{privlib}/IO/Compress/Gzip.pm +%exclude %{privlib}/IO/Compress/RawDeflate.pm +%exclude %{privlib}/IO/Compress/Bzip2.pm +%exclude %{privlib}/IO/Compress/Zip/ +%exclude %{privlib}/IO/Compress/Zip.pm +%exclude %{privlib}/IO/Compress/Zlib/ +%exclude %{privlib}/IO/Uncompress/Adapter/ +%exclude %{privlib}/IO/Uncompress/AnyInflate.pm +%exclude %{privlib}/IO/Uncompress/Bunzip2.pm +%exclude %{privlib}/IO/Uncompress/Gunzip.pm +%exclude %{privlib}/IO/Uncompress/Inflate.pm +%exclude %{privlib}/IO/Uncompress/RawInflate.pm +%exclude %{privlib}/IO/Uncompress/Unzip.pm +%exclude %{_mandir}/man3/IO::Compress::Deflate* +%exclude %{_mandir}/man3/IO::Compress::Bzip2* +%exclude %{_mandir}/man3/IO::Compress::Gzip* +%exclude %{_mandir}/man3/IO::Compress::RawDeflate* +%exclude %{_mandir}/man3/IO::Compress::Zip* +%exclude %{_mandir}/man3/IO::Uncompress::AnyInflate* +%exclude %{_mandir}/man3/IO::Uncompress::Bunzip2* +%exclude %{_mandir}/man3/IO::Uncompress::Gunzip* +%exclude %{_mandir}/man3/IO::Uncompress::Inflate* +%exclude %{_mandir}/man3/IO::Uncompress::RawInflate* +%exclude %{_mandir}/man3/IO::Uncompress::Unzip* + +# IO-Zlib +%exclude %{privlib}/IO/Zlib.pm +%exclude %{_mandir}/man3/IO::Zlib.* + +# HTTP-Tiny +%exclude %{privlib}/HTTP/Tiny.pm +%exclude %{_mandir}/man3/HTTP::Tiny* + +# IPC-Cmd +%exclude %{privlib}/IPC/Cmd.pm +%exclude %{_mandir}/man3/IPC::Cmd.3* + +# JSON-PP +%exclude %{_bindir}/json_pp +%exclude %{privlib}/JSON/PP +%exclude %{privlib}/JSON/PP.pm +%exclude %{_mandir}/man1/json_pp.1* +%exclude %{_mandir}/man3/JSON::PP.3* +%exclude %{_mandir}/man3/JSON::PP::Boolean.3pm* + +# Locale-Codes +%exclude %{privlib}/Locale/Codes +%exclude %{privlib}/Locale/Codes.* +%exclude %{privlib}/Locale/Country.* +%exclude %{privlib}/Locale/Currency.* +%exclude %{privlib}/Locale/Language.* +%exclude %{privlib}/Locale/Script.* +%exclude %{_mandir}/man3/Locale::Codes::* +%exclude %{_mandir}/man3/Locale::Codes.* +%exclude %{_mandir}/man3/Locale::Country.* +%exclude %{_mandir}/man3/Locale::Currency.* +%exclude %{_mandir}/man3/Locale::Language.* +%exclude %{_mandir}/man3/Locale::Script.* + +# Locale-Maketext +%exclude %dir %{privlib}/Locale/Maketext +%exclude %{privlib}/Locale/Maketext.* +%exclude %{privlib}/Locale/Maketext/Cookbook.* +%exclude %{privlib}/Locale/Maketext/Guts.* +%exclude %{privlib}/Locale/Maketext/GutsLoader.* +%exclude %{privlib}/Locale/Maketext/TPJ13.* +%exclude %{_mandir}/man3/Locale::Maketext.* +%exclude %{_mandir}/man3/Locale::Maketext::Cookbook.* +%exclude %{_mandir}/man3/Locale::Maketext::Guts.* +%exclude %{_mandir}/man3/Locale::Maketext::GutsLoader.* +%exclude %{_mandir}/man3/Locale::Maketext::TPJ13.* + +# Locale-Maketext-Simple +%exclude %{privlib}/Locale/Maketext/Simple.pm +%exclude %{_mandir}/man3/Locale::Maketext::Simple.* + +# Log-Message +%exclude %{privlib}/Log/Message.pm +%exclude %{privlib}/Log/Message/Config.pm +%exclude %{privlib}/Log/Message/Handlers.pm +%exclude %{privlib}/Log/Message/Item.pm +%exclude %{_mandir}/man3/Log::Message.3* +%exclude %{_mandir}/man3/Log::Message::Config.3* +%exclude %{_mandir}/man3/Log::Message::Handlers.3* +%exclude %{_mandir}/man3/Log::Message::Item.3* + +# Log-Message-Simple +%exclude %{privlib}/Log/Message/Simple.pm +%exclude %{_mandir}/man3/Log::Message::Simple.3* + +# Module-Build +%exclude %{_bindir}/config_data +%exclude %{privlib}/inc/ +%exclude %{privlib}/Module/Build/ +%exclude %{privlib}/Module/Build.pm +%exclude %{_mandir}/man1/config_data.1* +%exclude %{_mandir}/man3/Module::Build* +%exclude %{_mandir}/man3/inc::latest.3* + +# Module-CoreList +%exclude %{_bindir}/corelist +%exclude %{privlib}/Module/CoreList.pm +%exclude %{_mandir}/man1/corelist* +%exclude %{_mandir}/man3/Module::CoreList* + +# Module-Load +%exclude %{privlib}/Module/Load.pm +%exclude %{_mandir}/man3/Module::Load.* + +# Module-Load-Conditional +%exclude %{privlib}/Module/Load/ +%exclude %{_mandir}/man3/Module::Load::Conditional* + +# Module-Loaded +%exclude %{privlib}/Module/Loaded.pm +%exclude %{_mandir}/man3/Module::Loaded* + +# Module-Metadata +%exclude %{privlib}/Module/Metadata.pm +%exclude %{_mandir}/man3/Module::Metadata.3pm* + +# Module-Pluggable +%exclude %{privlib}/Devel/InnerPackage.pm +%exclude %{privlib}/Module/Pluggable/ +%exclude %{privlib}/Module/Pluggable.pm +%exclude %{_mandir}/man3/Devel::InnerPackage* +%exclude %{_mandir}/man3/Module::Pluggable* + +# Object-Accessor +%exclude %{privlib}/Object/ +%exclude %{_mandir}/man3/Object::Accessor* + +# Package-Constants +%exclude %{privlib}/Package/ +%exclude %{_mandir}/man3/Package::Constants* + +# PathTools +%exclude %{archlib}/Cwd.pm +%exclude %{archlib}/File/Spec* +%exclude %{archlib}/auto/Cwd/ +%exclude %{_mandir}/man3/Cwd* +%exclude %{_mandir}/man3/File::Spec* + +# Params-Check +%exclude %{privlib}/Params/ +%exclude %{_mandir}/man3/Params::Check* + +# Perl-OSType +%exclude %{privlib}/Perl/OSType.pm +%exclude %{_mandir}/man3/Perl::OSType.3pm* + +# parent +%exclude %{privlib}/parent.pm +%exclude %{_mandir}/man3/parent.3* + +# Pod-Checker +%exclude %{_bindir}/podchecker +%exclude %{privlib}/Pod/Checker.pm +%exclude %{_mandir}/man1/podchecker.* +%exclude %{_mandir}/man3/Pod::Checker.* + +# Pod-Escapes +%exclude %{privlib}/Pod/Escapes.pm +%exclude %{_mandir}/man3/Pod::Escapes.* + +# Pod-LaTeX +%exclude %{_bindir}/pod2latex +%exclude %{privlib}/Pod/LaTeX.pm +%exclude %{_mandir}/man1/pod2latex.1* +%exclude %{_mandir}/man3/Pod::LaTeX.* + +# Pod-Parser +%exclude %{_bindir}/podselect +%exclude %{privlib}/Pod/Find.pm +%exclude %{privlib}/Pod/InputObjects.pm +%exclude %{privlib}/Pod/ParseUtils.pm +%exclude %{privlib}/Pod/Parser.pm +%exclude %{privlib}/Pod/PlainText.pm +%exclude %{privlib}/Pod/Select.pm +%exclude %{_mandir}/man1/podselect.1* +%exclude %{_mandir}/man3/Pod::Find.* +%exclude %{_mandir}/man3/Pod::InputObjects.* +%exclude %{_mandir}/man3/Pod::ParseUtils.* +%exclude %{_mandir}/man3/Pod::Parser.* +%exclude %{_mandir}/man3/Pod::PlainText.* +%exclude %{_mandir}/man3/Pod::Select.* + +# Pod-Perldoc +%exclude %{_bindir}/perldoc +%exclude %{privlib}/pod/perldoc.pod +%exclude %{privlib}/Pod/Perldoc.pm +%exclude %{privlib}/Pod/Perldoc/ +%exclude %{_mandir}/man1/perldoc.1* +%exclude %{_mandir}/man3/Pod::Perldoc* + +# Pod-Usage +%exclude %{_bindir}/pod2usage +%exclude %{privlib}/Pod/Usage.pm +%exclude %{_mandir}/man1/pod2usage.* +%exclude %{_mandir}/man3/Pod::Usage.* + +# podlators +%exclude %{_bindir}/pod2man +%exclude %{_bindir}/pod2text +%exclude %{privlib}/pod/perlpodstyle.pod +%exclude %{privlib}/Pod/Man.pm +%exclude %{privlib}/Pod/ParseLink.pm +%exclude %{privlib}/Pod/Text +%exclude %{privlib}/Pod/Text.pm +%exclude %{_mandir}/man1/pod2man.1* +%exclude %{_mandir}/man1/pod2text.1* +%exclude %{_mandir}/man1/perlpodstyle.1* +%exclude %{_mandir}/man3/Pod::Man* +%exclude %{_mandir}/man3/Pod::ParseLink* +%exclude %{_mandir}/man3/Pod::Text* + +# Pod-Simple +%exclude %{privlib}/Pod/Simple/ +%exclude %{privlib}/Pod/Simple.pm +%exclude %{privlib}/Pod/Simple.pod +%exclude %{_mandir}/man3/Pod::Simple* + +# Scalar-List-Utils +%exclude %{archlib}/List/ +%exclude %{archlib}/Scalar/ +%exclude %{archlib}/auto/List/ +%exclude %{_mandir}/man3/List::Util* +%exclude %{_mandir}/man3/Scalar::Util* + +# Storable +%exclude %{archlib}/Storable.pm +%exclude %{archlib}/auto/Storable/ +%exclude %{_mandir}/man3/Storable.* + +# Sys-Syslog +%exclude %{archlib}/Sys/Syslog.pm +%exclude %{archlib}/auto/Sys/Syslog/ +%exclude %{_mandir}/man3/Sys::Syslog.* + +# Term-UI +%exclude %{privlib}/Term/UI.pm +%exclude %{privlib}/Term/UI/ +%exclude %{_mandir}/man3/Term::UI* + +# Test-Harness +%exclude %{_bindir}/prove +%exclude %{privlib}/App/Prove* +%exclude %{privlib}/TAP* +%exclude %{privlib}/Test/Harness* +%exclude %{_mandir}/man1/prove.1* +%exclude %{_mandir}/man3/App::Prove* +%exclude %{_mandir}/man3/TAP* +%exclude %{_mandir}/man3/Test::Harness* + +# Test-Simple +%exclude %{privlib}/Test/More* +%exclude %{privlib}/Test/Builder* +%exclude %{privlib}/Test/Simple* +%exclude %{privlib}/Test/Tutorial* +%exclude %{_mandir}/man3/Test::More* +%exclude %{_mandir}/man3/Test::Builder* +%exclude %{_mandir}/man3/Test::Simple* +%exclude %{_mandir}/man3/Test::Tutorial* + +# Text-ParseWords +%exclude %{privlib}/Text/ParseWords.pm +%exclude %{_mandir}/man3/Text::ParseWords.* + +# Text-Soundex +%exclude %{archlib}/auto/Text/Soundex/ +%exclude %{archlib}/Text/Soundex.pm +%exclude %{_mandir}/man3/Text::Soundex.* + +# Thread-Queue +%exclude %{privlib}/Thread/Queue.pm +%exclude %{_mandir}/man3/Thread::Queue.* + +# Time-HiRes +%exclude %{archlib}/Time/HiRes.pm +%exclude %{archlib}/auto/Time/HiRes/ +%exclude %{_mandir}/man3/Time::HiRes.* + +# Time-Local +%exclude %{privlib}/Time/Local.pm +%exclude %{_mandir}/man3/Time::Local.* + +# Time-Piece +%exclude %{archlib}/Time/Piece.pm +%exclude %{archlib}/Time/Seconds.pm +%exclude %{archlib}/auto/Time/Piece/ +%exclude %{_mandir}/man3/Time::Piece.3* +%exclude %{_mandir}/man3/Time::Seconds.3* + +# Version-Requirements +%exclude %{privlib}/Version/Requirements.pm +%exclude %{_mandir}/man3/Version::Requirements* + +# Socket +%exclude %dir %{archlib}/auto/Socket +%exclude %{archlib}/auto/Socket/Socket.* +%exclude %{archlib}/Socket.pm +%exclude %{_mandir}/man3/Socket.3* + +# threads +%dir %exclude %{archlib}/auto/threads +%exclude %{archlib}/auto/threads/threads* +%exclude %{archlib}/threads.pm +%exclude %{_mandir}/man3/threads.3* + +# threads-shared +%exclude %{archlib}/auto/threads/shared* +%exclude %dir %{archlib}/threads +%exclude %{archlib}/threads/shared* +%exclude %{_mandir}/man3/threads::shared* + +# version +%exclude %{privlib}/version.pm +%exclude %{privlib}/version.pod +%exclude %{privlib}/version/ +%exclude %{_mandir}/man3/version.3* +%exclude %{_mandir}/man3/version::Internals.3* + +%files libs +%defattr(-,root,root) +%{archlib}/CORE/libperl.so +%dir %{archlib} +%dir %{perl_vendorarch} +%dir %{perl_vendorarch}/auto + +%files devel +%{_bindir}/h2xs +%{_mandir}/man1/h2xs* +%{_bindir}/libnetcfg +%{_mandir}/man1/libnetcfg* +%{_bindir}/perlivp +%{_mandir}/man1/perlivp* +%{archlib}/CORE/*.h +%{_mandir}/man1/perlxs* +%{tapsetdir}/%{libperl_stp} +%doc perl-example.stp + +%files macros +%attr(0644,root,root) %{_sysconfdir}/rpm/macros.perl + +%files tests +%{perl5_testdir}/ +%exclude %{perl5_testdir}/Test-Simple + +%if %{dual_life} || %{rebuild_from_scratch} +%files Archive-Extract +%{privlib}/Archive/Extract.pm +%{_mandir}/man3/Archive::Extract.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Archive-Tar +%{_bindir}/ptar +%{_bindir}/ptardiff +%{_bindir}/ptargrep +%{privlib}/Archive/Tar/ +%{privlib}/Archive/Tar.pm +%{_mandir}/man1/ptar.1* +%{_mandir}/man1/ptardiff.1* +%{_mandir}/man1/ptargrep.1* +%{_mandir}/man3/Archive::Tar* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files autodie +%{privlib}/autodie/ +%{privlib}/autodie.pm +%{privlib}/Fatal.pm +%{_mandir}/man3/autodie.3* +%{_mandir}/man3/autodie::* +%{_mandir}/man3/Fatal.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files B-Lint +%{privlib}/B/Lint* +%{_mandir}/man3/B::Lint* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Carp +%{privlib}/Carp +%{privlib}/Carp.* +%{_mandir}/man3/Carp.* + +%files CGI +%{privlib}/CGI/ +%{privlib}/CGI.pm +%{_mandir}/man3/CGI.3* +%{_mandir}/man3/CGI::*.3* + +%files Compress-Raw-Bzip2 +%dir %{archlib}/Compress +%dir %{archlib}/Compress/Raw +%{archlib}/Compress/Raw/Bzip2.pm +%dir %{archlib}/auto/Compress/ +%dir %{archlib}/auto/Compress/Raw/ +%{archlib}/auto/Compress/Raw/Bzip2/ +%{_mandir}/man3/Compress::Raw::Bzip2* + +%files Compress-Raw-Zlib +%dir %{archlib}/Compress +%dir %{archlib}/Compress/Raw +%{archlib}/Compress/Raw/Zlib.pm +%dir %{archlib}/auto/Compress/ +%dir %{archlib}/auto/Compress/Raw/ +%{archlib}/auto/Compress/Raw/Zlib/ +%{_mandir}/man3/Compress::Raw::Zlib* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files constant +%{privlib}/constant.pm +%{_mandir}/man3/constant.3* +%endif + +%files CPAN +%{_bindir}/cpan +%{privlib}/App/Cpan.pm +%{privlib}/CPAN/ +%{privlib}/CPAN.pm +%{_mandir}/man1/cpan.1* +%{_mandir}/man3/App::Cpan.* +%{_mandir}/man3/CPAN.* +%{_mandir}/man3/CPAN:* +%exclude %{privlib}/CPAN/Meta/ +%exclude %{privlib}/CPAN/Meta.pm +%exclude %{_mandir}/man3/CPAN::Meta* + +%if %{dual_life} || %{rebuild_from_scratch} +%files CPAN-Meta +%dir %{privlib}/CPAN/Meta +%{privlib}/CPAN/Meta.pm +%{privlib}/CPAN/Meta/Converter.pm +%{privlib}/CPAN/Meta/Feature.pm +%{privlib}/CPAN/Meta/History.pm +%{privlib}/CPAN/Meta/Prereqs.pm +%{privlib}/CPAN/Meta/Spec.pm +%{privlib}/CPAN/Meta/Validator.pm +%{_mandir}/man3/CPAN::Meta* +%exclude %{_mandir}/man3/CPAN::Meta::YAML* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files CPAN-Meta-Requirements +%{privlib}/CPAN/Meta/Requirements.pm +%{_mandir}/man3/CPAN::Meta::Requirements.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files CPAN-Meta-YAML +%{privlib}/CPAN/Meta/YAML.pm +%{_mandir}/man3/CPAN::Meta::YAML* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files CPANPLUS +%{_bindir}/cpan2dist +%{_bindir}/cpanp +%{_bindir}/cpanp-run-perl +%{privlib}/CPANPLUS/ +%{privlib}/CPANPLUS.pm +%exclude %{privlib}/CPANPLUS/Dist/Build/ +%{_mandir}/man1/cpan2dist.1* +%{_mandir}/man1/cpanp.1* +%{_mandir}/man3/CPANPLUS* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files CPANPLUS-Dist-Build +%{privlib}/CPANPLUS/Dist/Build/ +%{privlib}/CPANPLUS/Dist/Build.pm +%{_mandir}/man3/CPANPLUS::Dist::Build.3* +%{_mandir}/man3/CPANPLUS::Dist::Build::* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Data-Dumper +%dir %{archlib}/auto/Data +%dir %{archlib}/auto/Data/Dumper +%{archlib}/auto/Data/Dumper/Dumper.so +%dir %{archlib}/Data +%{archlib}/Data/Dumper.pm +%{_mandir}/man3/Data::Dumper.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files DB_File +%{archlib}/DB_File.pm +%dir %{archlib}/auto/DB_File +%{archlib}/auto/DB_File/DB_File.so +%{_mandir}/man3/DB_File* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Digest +%{privlib}/Digest.pm +%dir %{privlib}/Digest +%{privlib}/Digest/base.pm +%{privlib}/Digest/file.pm +%{_mandir}/man3/Digest.3* +%{_mandir}/man3/Digest::base.3* +%{_mandir}/man3/Digest::file.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Digest-MD5 +%{archlib}/Digest/MD5.pm +%{archlib}/auto/Digest/MD5/ +%{_mandir}/man3/Digest::MD5.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Digest-SHA +%{_bindir}/shasum +%dir %{archlib}/Digest/ +%{archlib}/Digest/SHA.pm +%{archlib}/auto/Digest/SHA/ +%{_mandir}/man1/shasum.1* +%{_mandir}/man3/Digest::SHA.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Encode +%{_bindir}/piconv +%{archlib}/encoding.pm +%{archlib}/Encode* +%{archlib}/auto/Encode* +%{privlib}/Encode +%exclude %{privlib}/Encode/*.e2x +%exclude %{privlib}/Encode/encode.h +%{_mandir}/man1/piconv.1* +%{_mandir}/man3/encoding.3* +%{_mandir}/man3/Encode*.3* + +%files Encode-devel +%{_bindir}/enc2xs +%{privlib}/Encode/*.e2x +%{privlib}/Encode/encode.h +%{_mandir}/man1/enc2xs.1* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Env +%{privlib}/Env.pm +%{_mandir}/man3/Env.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Exporter +%{privlib}/Exporter* +%{_mandir}/man3/Exporter* +%endif + +%files ExtUtils-CBuilder +%{privlib}/ExtUtils/CBuilder/ +%{privlib}/ExtUtils/CBuilder.pm +%{_mandir}/man3/ExtUtils::CBuilder* + +%files ExtUtils-Embed +%{privlib}/ExtUtils/Embed.pm +%{_mandir}/man3/ExtUtils::Embed* + +%files ExtUtils-Install +%{privlib}/ExtUtils/Install.pm +%{privlib}/ExtUtils/Installed.pm +%{privlib}/ExtUtils/Packlist.pm +%{_mandir}/man3/ExtUtils::Install.3* +%{_mandir}/man3/ExtUtils::Installed.3* +%{_mandir}/man3/ExtUtils::Packlist.3* + +%if %{dual_life} || %{rebuild_from_scratch} +%files ExtUtils-Manifest +%{privlib}/ExtUtils/Manifest.pm +%{privlib}/ExtUtils/MANIFEST.SKIP +%{_mandir}/man3/ExtUtils::Manifest.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files ExtUtils-MakeMaker +%{_bindir}/instmodsh +%{privlib}/ExtUtils/Command/ +%{privlib}/ExtUtils/Liblist/ +%{privlib}/ExtUtils/Liblist.pm +%{privlib}/ExtUtils/MakeMaker/ +%{privlib}/ExtUtils/MakeMaker.pm +%{privlib}/ExtUtils/MM*.pm +%{privlib}/ExtUtils/MY.pm +%{privlib}/ExtUtils/Mkbootstrap.pm +%{privlib}/ExtUtils/Mksymlists.pm +%{privlib}/ExtUtils/testlib.pm +%{_mandir}/man1/instmodsh.1* +%{_mandir}/man3/ExtUtils::Command::MM* +%{_mandir}/man3/ExtUtils::Liblist.3* +%{_mandir}/man3/ExtUtils::MM* +%{_mandir}/man3/ExtUtils::MY.3* +%{_mandir}/man3/ExtUtils::MakeMaker* +%{_mandir}/man3/ExtUtils::Mkbootstrap.3* +%{_mandir}/man3/ExtUtils::Mksymlists.3* +%{_mandir}/man3/ExtUtils::testlib.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files ExtUtils-ParseXS +%dir %{privlib}/ExtUtils/ParseXS/ +%dir %{privlib}/ExtUtils/Typemaps/ +%{privlib}/ExtUtils/ParseXS.pm +%{privlib}/ExtUtils/ParseXS.pod +%{privlib}/ExtUtils/ParseXS/Constants.pm +%{privlib}/ExtUtils/ParseXS/CountLines.pm +%{privlib}/ExtUtils/ParseXS/Utilities.pm +%{privlib}/ExtUtils/Typemaps.pm +%{privlib}/ExtUtils/Typemaps/Cmd.pm +%{privlib}/ExtUtils/Typemaps/InputMap.pm +%{privlib}/ExtUtils/Typemaps/OutputMap.pm +%{privlib}/ExtUtils/Typemaps/Type.pm +%{privlib}/ExtUtils/xsubpp +%{_bindir}/xsubpp +%{_mandir}/man1/xsubpp* +%{_mandir}/man3/ExtUtils::ParseXS.3* +%{_mandir}/man3/ExtUtils::ParseXS::Constants.3* +%{_mandir}/man3/ExtUtils::ParseXS::Utilities.3* +%{_mandir}/man3/ExtUtils::Typemaps.3* +%{_mandir}/man3/ExtUtils::Typemaps::Cmd.3* +%{_mandir}/man3/ExtUtils::Typemaps::InputMap.3* +%{_mandir}/man3/ExtUtils::Typemaps::OutputMap.3* +%{_mandir}/man3/ExtUtils::Typemaps::Type.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files File-CheckTree +%{privlib}/File/CheckTree.pm +%{_mandir}/man3/File::CheckTree.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files File-Fetch +%{privlib}/File/Fetch.pm +%{_mandir}/man3/File::Fetch.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files File-Path +%{privlib}/File/Path.pm +%{_mandir}/man3/File::Path.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files File-Temp +%{privlib}/File/Temp.pm +%{_mandir}/man3/File::Temp.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Filter +%{archlib}/auto/Filter/Util +%{archlib}/Filter/Util +%{privlib}/pod/perlfilter.pod +%{_mandir}/man1/perlfilter.* +%{_mandir}/man3/Filter::Util::* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Getopt-Long +%{privlib}/Getopt/Long.pm +%{_mandir}/man3/Getopt::Long.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files IO-Compress +# IO-Compress +%{_bindir}/zipdetails +%{privlib}/IO/Compress/FAQ.pod +%{_mandir}/man1/zipdetails.* +%{_mandir}/man3/IO::Compress::FAQ.* +# Compress-Zlib +%{privlib}/Compress/Zlib.pm +%{_mandir}/man3/Compress::Zlib* +#IO-Compress-Base +%{privlib}/File/GlobMapper.pm +%{privlib}/IO/Compress/Base/ +%{privlib}/IO/Compress/Base.pm +%{privlib}/IO/Uncompress/AnyUncompress.pm +%{privlib}/IO/Uncompress/Base.pm +%{_mandir}/man3/File::GlobMapper.* +%{_mandir}/man3/IO::Compress::Base.* +%{_mandir}/man3/IO::Uncompress::AnyUncompress.* +%{_mandir}/man3/IO::Uncompress::Base.* + +# IO-Compress-Zlib +%{privlib}/IO/Compress/Adapter/ +%{privlib}/IO/Compress/Deflate.pm +%{privlib}/IO/Compress/Bzip2.pm +%{privlib}/IO/Compress/Gzip/ +%{privlib}/IO/Compress/Gzip.pm +%{privlib}/IO/Compress/RawDeflate.pm +%{privlib}/IO/Compress/Zip/ +%{privlib}/IO/Compress/Zip.pm +%{privlib}/IO/Compress/Zlib/ +%{privlib}/IO/Uncompress/Adapter/ +%{privlib}/IO/Uncompress/AnyInflate.pm +%{privlib}/IO/Uncompress/Bunzip2.pm +%{privlib}/IO/Uncompress/Gunzip.pm +%{privlib}/IO/Uncompress/Inflate.pm +%{privlib}/IO/Uncompress/RawInflate.pm +%{privlib}/IO/Uncompress/Unzip.pm +%{_mandir}/man3/IO::Compress::Deflate* +%{_mandir}/man3/IO::Compress::Gzip* +%{_mandir}/man3/IO::Compress::Bzip2* +%{_mandir}/man3/IO::Compress::RawDeflate* +%{_mandir}/man3/IO::Compress::Zip* +%{_mandir}/man3/IO::Uncompress::AnyInflate* +%{_mandir}/man3/IO::Uncompress::Bunzip2* +%{_mandir}/man3/IO::Uncompress::Gunzip* +%{_mandir}/man3/IO::Uncompress::Inflate* +%{_mandir}/man3/IO::Uncompress::RawInflate* +%{_mandir}/man3/IO::Uncompress::Unzip* +%endif + +%files IO-Zlib +%{privlib}/IO/Zlib.pm +%{_mandir}/man3/IO::Zlib.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files HTTP-Tiny +%{privlib}/HTTP/Tiny.pm +%{_mandir}/man3/HTTP::Tiny* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files IPC-Cmd +%{privlib}/IPC/Cmd.pm +%{_mandir}/man3/IPC::Cmd.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files JSON-PP +%{_bindir}/json_pp +%{privlib}/JSON/PP +%{privlib}/JSON/PP.pm +%{_mandir}/man1/json_pp.1* +%{_mandir}/man3/JSON::PP.3* +%{_mandir}/man3/JSON::PP::Boolean.3pm* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Locale-Codes +%{privlib}/Locale/Codes +%{privlib}/Locale/Codes.* +%{privlib}/Locale/Country.* +%{privlib}/Locale/Currency.* +%{privlib}/Locale/Language.* +%{privlib}/Locale/Script.* +%{_mandir}/man3/Locale::Codes::* +%{_mandir}/man3/Locale::Codes.* +%{_mandir}/man3/Locale::Country.* +%{_mandir}/man3/Locale::Currency.* +%{_mandir}/man3/Locale::Language.* +%{_mandir}/man3/Locale::Script.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Locale-Maketext +%dir %{privlib}/Locale/Maketext +%{privlib}/Locale/Maketext.* +%{privlib}/Locale/Maketext/Cookbook.* +%{privlib}/Locale/Maketext/Guts.* +%{privlib}/Locale/Maketext/GutsLoader.* +%{privlib}/Locale/Maketext/TPJ13.* +%{_mandir}/man3/Locale::Maketext.* +%{_mandir}/man3/Locale::Maketext::Cookbook.* +%{_mandir}/man3/Locale::Maketext::Guts.* +%{_mandir}/man3/Locale::Maketext::GutsLoader.* +%{_mandir}/man3/Locale::Maketext::TPJ13.* +%endif + +%files Locale-Maketext-Simple +%{privlib}/Locale/Maketext/Simple.pm +%{_mandir}/man3/Locale::Maketext::Simple.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Log-Message +%{privlib}/Log/Message.pm +%{privlib}/Log/Message/Config.pm +%{privlib}/Log/Message/Handlers.pm +%{privlib}/Log/Message/Item.pm +%{_mandir}/man3/Log::Message.3* +%{_mandir}/man3/Log::Message::Config.3* +%{_mandir}/man3/Log::Message::Handlers.3* +%{_mandir}/man3/Log::Message::Item.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Log-Message-Simple +%{privlib}/Log/Message/Simple.pm +%{_mandir}/man3/Log::Message::Simple.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Module-Build +%{_bindir}/config_data +%{privlib}/inc/ +%{privlib}/Module/Build/ +%{privlib}/Module/Build.pm +%{_mandir}/man1/config_data.1* +%{_mandir}/man3/Module::Build* +%{_mandir}/man3/inc::latest.3* +%endif + +%files Module-CoreList +%{_bindir}/corelist +%{privlib}/Module/CoreList.pm +%{_mandir}/man1/corelist* +%{_mandir}/man3/Module::CoreList* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Module-Load +%{privlib}/Module/Load.pm +%{_mandir}/man3/Module::Load.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Module-Load-Conditional +%{privlib}/Module/Load/ +%{_mandir}/man3/Module::Load::Conditional* +%endif + +%files Module-Loaded +%dir %{privlib}/Module/ +%{privlib}/Module/Loaded.pm +%{_mandir}/man3/Module::Loaded* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Module-Metadata +%{privlib}/Module/Metadata.pm +%{_mandir}/man3/Module::Metadata.3pm* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Module-Pluggable +%{privlib}/Devel/InnerPackage.pm +%{privlib}/Module/Pluggable/ +%{privlib}/Module/Pluggable.pm +%{_mandir}/man3/Devel::InnerPackage* +%{_mandir}/man3/Module::Pluggable* +%endif + +%files Object-Accessor +%{privlib}/Object/ +%{_mandir}/man3/Object::Accessor* + +%files Package-Constants +%{privlib}/Package/ +%{_mandir}/man3/Package::Constants* + +%if %{dual_life} || %{rebuild_from_scratch} +%files PathTools +%{archlib}/Cwd.pm +%{archlib}/File/Spec* +%{archlib}/auto/Cwd/ +%{_mandir}/man3/Cwd* +%{_mandir}/man3/File::Spec* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Params-Check +%{privlib}/Params/ +%{_mandir}/man3/Params::Check* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Parse-CPAN-Meta +%dir %{privlib}/Parse/ +%dir %{privlib}/Parse/CPAN/ +%{privlib}/Parse/CPAN/Meta.pm +%{_mandir}/man3/Parse::CPAN::Meta.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files parent +%{privlib}/parent.pm +%{_mandir}/man3/parent.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Perl-OSType +%{privlib}/Perl/OSType.pm +%{_mandir}/man3/Perl::OSType.3pm* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Pod-Checker +%{_bindir}/podchecker +%{privlib}/Pod/Checker.pm +%{_mandir}/man1/podchecker.* +%{_mandir}/man3/Pod::Checker.* +%endif + +%files Pod-Escapes +%{privlib}/Pod/Escapes.pm +%{_mandir}/man3/Pod::Escapes.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Pod-LaTeX +%{_bindir}/pod2latex +%{privlib}/Pod/LaTeX.pm +%{_mandir}/man1/pod2latex.1* +%{_mandir}/man3/Pod::LaTeX.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Pod-Parser +%{_bindir}/pod2usage +%{_bindir}/podchecker +%{_bindir}/podselect +%{privlib}/Pod/Checker.pm +%{privlib}/Pod/Find.pm +%{privlib}/Pod/InputObjects.pm +%{privlib}/Pod/ParseUtils.pm +%{privlib}/Pod/Parser.pm +%{privlib}/Pod/PlainText.pm +%{privlib}/Pod/Select.pm +%{privlib}/Pod/Usage.pm +%{_mandir}/man1/pod2usage.1* +%{_mandir}/man1/podchecker.1* +%{_mandir}/man1/podselect.1* +%{_mandir}/man3/Pod::Checker.* +%{_mandir}/man3/Pod::Find.* +%{_mandir}/man3/Pod::InputObjects.* +%{_mandir}/man3/Pod::ParseUtils.* +%{_mandir}/man3/Pod::Parser.* +%{_mandir}/man3/Pod::PlainText.* +%{_mandir}/man3/Pod::Select.* +%{_mandir}/man3/Pod::Usage.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Pod-Perldoc +%{_bindir}/perldoc +%{privlib}/pod/perldoc.pod +%{privlib}/Pod/Perldoc.pm +%{privlib}/Pod/Perldoc/ +%{_mandir}/man1/perldoc.1* +%{_mandir}/man3/Pod::Perldoc* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Pod-Usage +%{_bindir}/pod2usage +%{privlib}/Pod/Usage.pm +%{_mandir}/man1/pod2usage.* +%{_mandir}/man3/Pod::Usage.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files podlators +%{_bindir}/pod2man +%{_bindir}/pod2text +%{privlib}/pod/perlpodstyle.pod +%{privlib}/Pod/Man.pm +%{privlib}/Pod/ParseLink.pm +%{privlib}/Pod/Text +%{privlib}/Pod/Text.pm +%{_mandir}/man1/pod2man.1* +%{_mandir}/man1/pod2text.1* +%{_mandir}/man1/perlpodstyle.1* +%{_mandir}/man3/Pod::Man* +%{_mandir}/man3/Pod::ParseLink* +%{_mandir}/man3/Pod::Text* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Pod-Simple +%{privlib}/Pod/Simple/ +%{privlib}/Pod/Simple.pm +%{privlib}/Pod/Simple.pod +%{_mandir}/man3/Pod::Simple* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Scalar-List-Utils +%{archlib}/List/ +%{archlib}/Scalar/ +%{archlib}/auto/List/ +%{_mandir}/man3/List::Util* +%{_mandir}/man3/Scalar::Util* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Sys-Syslog +%{archlib}/Sys/Syslog.pm +%{archlib}/auto/Sys/Syslog/ +%{_mandir}/man3/Sys::Syslog.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Socket +%dir %{archlib}/auto/Socket +%{archlib}/auto/Socket/Socket.* +%{archlib}/Socket.pm +%{_mandir}/man3/Socket.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Storable +%{archlib}/Storable.pm +%{archlib}/auto/Storable/ +%{_mandir}/man3/Storable.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Term-UI +%{privlib}/Term/UI/ +%{privlib}/Term/UI.pm +%{_mandir}/man3/Term::UI* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Test-Harness +%{_bindir}/prove +%{privlib}/App/Prove* +%{privlib}/TAP* +%{privlib}/Test/Harness* +%{_mandir}/man1/prove.1* +%{_mandir}/man3/App::Prove* +%{_mandir}/man3/TAP* +%{_mandir}/man3/Test::Harness* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Test-Simple +%{privlib}/Test/More* +%{privlib}/Test/Builder* +%{privlib}/Test/Simple* +%{privlib}/Test/Tutorial* +%{_mandir}/man3/Test::More* +%{_mandir}/man3/Test::Builder* +%{_mandir}/man3/Test::Simple* +%{_mandir}/man3/Test::Tutorial* + +%files Test-Simple-tests +%dir %{perl5_testdir} +%{perl5_testdir}/Test-Simple +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Text-ParseWords +%{privlib}/Text/ParseWords.pm +%{_mandir}/man3/Text::ParseWords.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Text-Soundex +%{archlib}/auto/Text/Soundex/ +%{archlib}/Text/Soundex.pm +%{_mandir}/man3/Text::Soundex.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Thread-Queue +%{privlib}/Thread/Queue.pm +%{_mandir}/man3/Thread::Queue.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Time-HiRes +%{archlib}/Time/HiRes.pm +%{archlib}/auto/Time/HiRes/ +%{_mandir}/man3/Time::HiRes.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Time-Local +%{privlib}/Time/Local.pm +%{_mandir}/man3/Time::Local.* +%endif + +%files Time-Piece +%{archlib}/Time/Piece.pm +%{archlib}/Time/Seconds.pm +%{archlib}/auto/Time/Piece/ +%{_mandir}/man3/Time::Piece.3* +%{_mandir}/man3/Time::Seconds.3* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Version-Requirements +%{privlib}/Version/Requirements.pm +%{_mandir}/man3/Version::Requirements* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files threads +%dir %{archlib}/auto/threads +%{archlib}/auto/threads/threads* +%{archlib}/threads.pm +%{_mandir}/man3/threads.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files threads-shared +%{archlib}/auto/threads/shared* +%dir %{archlib}/threads +%{archlib}/threads/shared* +%{_mandir}/man3/threads::shared* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files version +%{privlib}/version.pm +%{privlib}/version.pod +%{privlib}/version/ +%{_mandir}/man3/version.3* +%{_mandir}/man3/version::Internals.3* +%endif + +%files core +# Nothing. Nada. Zilch. Zarro. Uh uh. Nope. Sorry. + +# Old changelog entries are preserved in CVS. +%changelog +* Mon Feb 27 2017 Jitka Plesnikova - 4:5.16.3-292 +- Removed perl-Perl4-CoreLibs because it was added as separate package to + RHEL (bug #1366724) + +* Wed Aug 17 2016 Jitka Plesnikova - 4:5.16.3-291 +- Backported and sub-packaged libraries historically supplied with Perl 4 + into perl-Perl4-CoreLibs + +* Tue Aug 16 2016 Jitka Plesnikova - 4:5.16.3-290 +- Removed deprecated files from provides (bug #1365991) + +* Mon Jun 13 2016 Petr Pisar - 4:5.16.3-289 +- Fix duplicating PerlIO::encoding when spawning threads (bug #1344749) + +* Wed Mar 02 2016 Jitka Plesnikova - 4:5.16.3-288 +- Fix CRLF conversion in ASCII FTP upload (bug #1263734) +- Don't leak the temp utf8 copy of namepv (bug #1063330) + +* Wed Mar 02 2016 Petr Šabata - 4:5.16.3-287 +- Make File::Glob work with threads again (bug #1223045) + +* Thu Jul 02 2015 Petr Pisar - 4:5.16.3-286 +- Remove CPU-speed-sensitive test in Benchmark test (bug #1238567) +- Rebuild with corrected binutils to fix systemtap support (bug #1238472) + +* Mon Dec 01 2014 Petr Pisar - 4:5.16.3-285 +- Use stronger algorithm needed for FIPS in t/op/taint.t (bug #1084796) + +* Fri Aug 08 2014 Petr Pisar - 4:5.16.3-284 +- Use a macro to cover all 64-bit PowerPC architectures (bug #1061792) +- Declare dependencies for cpan tool (bug #1122368) +- Use stronger algorithm needed for FIPS in t/op/crypt.t (bug #1084796) +- Make *DBM_File desctructors thread-safe (bug #1107542) + +* Fri Jan 24 2014 Daniel Mach - 4:5.16.3-283 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 4:5.16.3-282 +- Mass rebuild 2013-12-27 + +* Mon Dec 02 2013 Petr Pisar - 4:5.16.3-281 +- Document Math::BigInt::CalcEmu requires Math::BigInt (bug #959096) + +* Wed Jun 26 2013 Petr Pisar - 4:5.16.3-280 +- Edit local patch level before compilation + +* Fri Jun 14 2013 Petr Pisar - 4:5.16.3-279 +- Do not distribute File::Spec::VMS (bug #973713) +- Remove bundled CPANPLUS-Dist-Build (bug #973041) + +* Wed Jun 12 2013 Petr Pisar - 4:5.16.3-278 +- Update SystemTap scripts to recognize new phase__change marker and new probe + arguments (bug #971094) +- Update h2ph(1) documentation (bug #948538) +- Update pod2html(1) documentation (bug #948538) +- Do not double-own archlib directory (bug #894195) + +* Tue Jun 11 2013 Petr Pisar - 4:5.16.3-277 +- Move CPANPLUS-Dist-Build files from perl-CPANPLUS +- Move CPAN-Meta-Requirements files from CPAN-Meta +- Add perl-Scalar-List-Utils to perl-core dependencies + +* Thu Jun 06 2013 Petr Pisar - 4:5.16.3-276 +- Require $Config{libs} providers (bug #905482) + +* Thu May 30 2013 Petr Pisar - 4:5.16.3-275 +- Correct typo in perl-Storable file list (bug #966865) +- Remove bundled Storable (bug #966865) + +* Wed May 29 2013 Petr Pisar - 4:5.16.3-274 +- Sub-package Storable (bug #966865) + +* Mon May 13 2013 Petr Pisar - 4:5.16.3-273 +- Use lib64 directories on aarch64 architecture (bug #961900) + +* Fri May 10 2013 Petr Pisar - 4:5.16.3-272 +- Make regular expression engine safe in a signal handler (bug #849703) +- Remove bundled ExtUtils-ParseXS, and Time-HiRes + +* Fri Apr 26 2013 Petr Pisar - 4:5.16.3-271 +- Sub-package Time-HiRes (bug #957048) +- Remove bundled Getopt-Long, Locale-Maketext, and Sys-Syslog + +* Wed Apr 10 2013 Petr Pisar - 4:5.16.3-270 +- Fix leaking tied hashes (bug #859910) +- Fix dead lock in PerlIO after fork from thread (bug #947444) +- Add proper conflicts to perl-Getopt-Long, perl-Locale-Maketext, and + perl-Sys-Syslog + +* Tue Apr 09 2013 Petr Pisar - 4:5.16.3-269 +- Sub-package Sys-Syslog (bug #950057) + +* Fri Apr 05 2013 Petr Pisar - 4:5.16.3-268 +- Sub-package Getopt-Long (bug #948855) +- Sub-package Locale-Maketext (bug #948974) + +* Fri Apr 05 2013 Petr Pisar - 4:5.16.3-267 +- Remove bundled constant, DB_File, Digest-MD5, Env, Exporter, File-Path, + File-Temp, Module-Load, Log-Message-Simple, Pod-Simple, Test-Harness, + Text-ParseWords + +* Mon Mar 25 2013 Petr Pisar - 4:5.16.3-266 +- Filter provides from *.pl files (bug #924938) + +* Fri Mar 22 2013 Petr Pisar - 4:5.16.3-265 +- Conflict perl-autodie with older perl (bug #911226) +- Sub-package Env (bug #924619) +- Sub-package Exporter (bug #924645) +- Sub-package File-Path (bug #924782) +- Sub-package File-Temp (bug #924822) + +* Thu Mar 21 2013 Petr Pisar - 4:5.16.3-264 +- Sub-package constant (bug #924169) +- Sub-package DB_File (bug #924351) + +* Tue Mar 19 2013 Petr Pisar - 4:5.16.3-263 +- Correct perl-Digest-MD5 dependencies +- Remove bundled Archive-Extract, File-Fetch, HTTP-Tiny, + Module-Load-Conditional, Time-Local + +* Fri Mar 15 2013 Petr Pisar - 4:5.16.3-262 +- Correct dependencies of perl-HTTP-Tiny +- Sub-package Time-Local (bug #922054) + +* Thu Mar 14 2013 Petr Pisar - 4:5.16.3-261 +- 5.16.3 bump (see + for release notes) +- Remove bundled autodie, B-Lint, CPANPLUS, Encode, File-CheckTree, IPC-Cmd, + Params-Check, Text-Soundex, Thread-Queue + +* Tue Mar 05 2013 Petr Pisar - 4:5.16.2-260 +- Fix CVE-2013-1667 (DoS in rehashing code) (bug #918008) + +* Mon Feb 18 2013 Petr Pisar - 4:5.16.2-259 +- Sub-package autodie (bug #911226) +- Add NAME headings to CPAN modules (bug #908113) + +* Thu Feb 14 2013 Petr Pisar - 4:5.16.2-258 +- Fix perl-Encode-devel dependency declaration + +* Thu Feb 14 2013 Petr Pisar - 4:5.16.2-257 +- Sub-package Thread-Queue (bug #911062) + +* Wed Feb 13 2013 Petr Pisar - 4:5.16.2-256 +- Sub-package File-CheckTree (bug #909144) +- Sub-package Text-ParseWords +- Sub-package Encode (bug #859149) + +* Fri Feb 08 2013 Petr Pisar - 4:5.16.2-255 +- Remove bundled Log-Message +- Remove bundled Term-UI + +* Thu Feb 07 2013 Petr Pisar - 4:5.16.2-254 +- Correct perl-podlators dependencies +- Obsolete perl-ExtUtils-Typemaps by perl-ExtUtils-ParseXS (bug #891952) + +* Tue Feb 05 2013 Petr Pisar - 4:5.16.2-253 +- Sub-package Pod-Checker and Pod-Usage (bugs #907546, #907550) + +* Mon Feb 04 2013 Petr Pisar - 4:5.16.2-252 +- Remove bundled PathTools + +* Wed Jan 30 2013 Petr Pisar - 4:5.16.2-251 +- Sub-package B-Lint (bug #906015) + +* Wed Jan 30 2013 Petr Pisar - 4:5.16.2-250 +- Sub-package Text-Soundex (bug #905889) +- Fix conflict declaration at perl-Pod-LaTeX (bug #904085) +- Remove bundled Module-Pluggable (bug #903624) + +* Tue Jan 29 2013 Petr Pisar - 4:5.16.2-249 +- Run-require POD convertors by Module-Build and ExtUtils-MakeMaker to + generate documentation when building other packages + +* Fri Jan 25 2013 Petr Pisar - 4:5.16.2-248 +- Sub-package Pod-LaTeX (bug #904085) + +* Wed Jan 16 2013 Petr Pisar - 4:5.16.2-247 +- Remove bundled Pod-Parser + +* Fri Jan 11 2013 Petr Pisar - 4:5.16.2-246 +- Fix CVE-2012-6329 (misparsing of maketext strings) (bug #884354) + +* Thu Jan 10 2013 Petr Pisar - 4:5.16.2-245 +- Do not package App::Cpan(3pm) to perl-Test-Harness (bug #893768) + +* Tue Dec 18 2012 Petr Pisar - 4:5.16.2-244 +- Remove bundled Archive-Tar +- Remove bundled CPAN-Meta-YAML +- Remove bundled Module-Metadata + +* Tue Dec 18 2012 Petr Pisar - 4:5.16.2-243 +- Remove bundled Filter modules + +* Mon Nov 05 2012 Jitka Plesnikova - 4:5.16.2-242 +- 5.16.2 bump (see + http://search.cpan.org/dist/perl-5.16.1/pod/perldelta.pod for release + notes) + +* Wed Oct 31 2012 Petr Pisar - 4:5.16.1-241 +- Remove bundled podlators (bug #856516) + +* Wed Oct 17 2012 Jitka Plesnikova - 4:5.16.1-240 +- Do not crash when vivifying $| (bug #865296) + +* Mon Sep 24 2012 Petr Pisar - 4:5.16.1-239 +- Conflict perl-podlators with perl before sub-packaging (bug #856516) + +* Fri Sep 21 2012 Petr Pisar - 4:5.16.1-238 +- Do not leak with attribute on my variable (bug #858966) +- Allow operator after numeric keyword argument (bug #859328) +- Extend stack in File::Glob::glob (bug #859332) + +* Thu Sep 20 2012 Petr Pisar - 4:5.16.1-237 +- Put perl-podlators into perl-core list (bug #856516) + +* Tue Sep 18 2012 Petr Pisar - 4:5.16.1-236 +- Remove bundled perl-ExtUtils-Manifest +- perl-PathTools uses Carp + +* Fri Sep 14 2012 Petr Pisar - 4:5.16.1-235 +- Override the Pod::Simple::parse_file to set output to STDOUT by default + (bug #826872) + +* Wed Sep 12 2012 Petr Pisar - 4:5.16.1-234 +- Sub-package perl-podlators (bug #856516) + +* Tue Sep 11 2012 Petr Pisar - 4:5.16.1-233 +- Do not access freed memory when cloning thread (bug #825749) +- Match non-breakable space with /[\h]/ in ASCII mode (bug #844919) +- Clear $@ before `do' I/O error (bug #834226) +- Do not truncate syscall() return value to 32 bits (bug #838551) + +* Wed Sep 05 2012 Petr Pisar - 4:5.16.1-232 +- Move App::Cpan from perl-Test-Harness to perl-CPAN (bug #854577) + +* Fri Aug 24 2012 Petr Pisar - 4:5.16.1-231 +- Remove perl-devel dependency from perl-Test-Harness and perl-Test-Simple + +* Mon Aug 13 2012 Marcela Mašláňová - 4:5.16.0-230 +- define perl_compat by macro for rebuilds +- sub-packages depend on compat rather than on nvr + +* Thu Aug 9 2012 Marcela Mašláňová - 4:5.16.0-229 +- apply conditionals for dual life patches + +* Thu Aug 09 2012 Jitka Plesnikova 4:5.16.1-228 +- 5.16.1 bump (see + http://search.cpan.org/dist/perl-5.16.1/pod/perldelta.pod for release + notes) +- Fixed reopening by scalar handle (bug #834221) +- Fixed tr/// multiple transliteration (bug #831679) +- Fixed heap-overflow in gv_stashpv (bug #826516) + +* Fri Jul 20 2012 Fedora Release Engineering - 4:5.16.0-227 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jul 13 2012 Paul Howarth 4:5.16.0-226 +- Move the rest of ExtUtils-ParseXS into its sub-package, so that the main + perl package doesn't need to pull in perl-devel (bug #839953) + +* Mon Jul 02 2012 Jitka Plesnikova 4:5.16.0-225 +- Fix broken atof (bug #835452) + +* Wed Jun 27 2012 Petr Pisar - 4:5.16.0-224 +- perl-Pod-Perldoc must require groff-base because Pod::Perldoc::ToMan executes + roff + +* Mon Jun 25 2012 Petr Pisar - 4:5.16.0-223 +- Test::Build requires Data::Dumper +- Sub-package perl-Pod-Parser + +* Thu Jun 07 2012 Petr Pisar - 4:5.16.0-222 +- Remove MODULE_COMPAT_5.14.* Provides + +* Wed Jun 06 2012 Petr Pisar - 4:5.16.0-221 +- Perl 5.16 rebuild + +* Wed Jun 06 2012 Petr Pisar - 4:5.16.0-220 +- perl_bootstrap macro is distributed in perl-srpm-macros now + +* Fri Jun 01 2012 Petr Pisar - 4:5.16.0-219 +- Own zipdetails and IO::Compress::FAQ by perl-IO-Compress + +* Fri Jun 1 2012 Jitka Plesnikova - 4:5.16.0-218 +- Fix find2perl to translate ? glob properly (bug #825701) + +* Thu May 31 2012 Petr Pisar - 4:5.16.0-218 +- Shorten perl-Module-Build version to 2 digits to follow upstream + +* Fri May 25 2012 Marcela Mašláňová - 4:5.16.0-217 +- upload the stable 5.16.0 + +* Wed May 16 2012 Marcela Mašláňová - 4:5.16.0-RC2-217 +- clean patches, not needed with new version +- regen by podcheck list of failed pods. cn, jp, ko pods failed. I can't decide + whether it's a real problem or false positives. + +* Mon Apr 30 2012 Petr Pisar - 4:5.14.2-216 +- Enable usesitecustomize + +* Thu Apr 19 2012 Petr Pisar - 4:5.14.2-215 +- Rebuild perl against Berkeley database version 5 (bug #768846) + +* Fri Apr 13 2012 Petr Pisar - 4:5.14.2-214 +- perl-Data-Dumper requires Scalar::Util (bug #811239) + +* Tue Apr 10 2012 Petr Pisar - 4:5.14.2-213 +- Sub-package Data::Dumper (bug #811239) + +* Tue Feb 21 2012 Petr Pisar - 4:5.14.2-212 +- Sub-package Filter (bug #790349) + +* Mon Feb 06 2012 Petr Pisar - 4:5.14.2-211 +- Fix searching for Unicode::Collate::Locale data (bug #756118) +- Run safe signal handlers before returning from sigsuspend() and pause() + (bug #771228) +- Correct perl-Scalar-List-Utils files list +- Stop !$^V from leaking (bug #787613) + +* Tue Jan 10 2012 Paul Howarth - 4:5.14.2-210 +- Rebuild again now that perl dependency generator is fixed (#772632, #772699) + +* Fri Jan 06 2012 Iain Arnell -4:5.14.2-209 +- perl-ExtUtils-MakeMaker sub-package requires ExtUtils::Install + +* Fri Jan 6 2012 Paul Howarth - 4:5.14.2-208 +- Rebuild for gcc 4.7 + +* Tue Dec 20 2011 Petr Pisar - 4:5.14.2-207 +- Fix interrupted reading. Thanks to Šimon Lukašík for reporting this issue + and thanks to Marcela Mašláňová for finding fix. (bug #767931) + +* Wed Dec 14 2011 Petr Pisar - 4:5.14.2-206 +- Fix leak with non-matching named captures (bug #767597) + +* Tue Nov 29 2011 Petr Pisar - 4:5.14.2-205 +- Sub-package ExtUtils::Install +- Sub-package ExtUtils::Manifest +- Do not provide private perl(ExtUtils::MakeMaker::_version) + +* Thu Nov 24 2011 Ville Skyttä - 4:5.14.2-204 +- Add $RPM_LD_FLAGS to lddlflags. + +* Wed Nov 23 2011 Petr Pisar - 4:5.14.2-203 +- Sub-package Socket + +* Mon Nov 21 2011 Petr Pisar - 4:5.14.2-202 +- Sub-package Pod::Perldoc + +* Fri Nov 18 2011 Petr Pisar - 4:5.14.2-201 +- Increase epoch of perl-Module-CoreList to overcome version regression in + upstream (bug #754641) + +* Thu Nov 3 2011 Marcela Mašláňová - 4:5.14.2-200 +- perl(DBIx::Simple) is not needed in spec requirement in CPANPLUS. It's generated + automatically. + +* Wed Nov 02 2011 Petr Pisar - 4:5.14.2-199 +- Provide perl(DB) by perl + +* Mon Oct 24 2011 Petr Pisar - 4:5.14.2-198 +- Do not warn about missing site directories (bug #732799) + +* Thu Oct 20 2011 Marcela Mašláňová - 4:5.14.2-197 +- cleaned spec (thanks to Grigory Batalov) +- Module-Metadata sub-package contained perl_privlib instead of privlib +- %%files parent section was repeated twice + +* Fri Oct 14 2011 Petr Pisar - 4:5.14.2-196 +- Filter false perl(DynaLoader) provide from perl-ExtUtils-MakeMaker + (bug #736714) +- Change Perl_repeatcpy() prototype to allow repeat count above 2^31 + (bug #720610) +- Do not own site directories located in /usr/local (bug #732799) + +* Tue Oct 04 2011 Petr Pisar - 4:5.14.2-195 +- Fix CVE-2011-3597 (code injection in Digest) (bug #743010) +- Sub-package Digest and thus Digest::MD5 module (bug #743247) + +* Tue Oct 04 2011 Iain Arnell 4:5.14.2-194 +- add provide for perl(:MODULE_COMPAT_5.14.2) + +* Mon Oct 03 2011 Petr Pisar - 4:5.14.2-193 +- 5.14.2 bump (see + https://metacpan.org/module/FLORA/perl-5.14.2/pod/perldelta.pod for release + notes). +- Fixes panics when processing regular expression with \b class and /aa + modifier (bug #731062) +- Fixes CVE-2011-2728 (File::Glob bsd_glob() crash with certain glob flags) + (bug #742987) + +* Mon Oct 03 2011 Petr Pisar - 4:5.14.1-192 +- Enable GDBM support again to build against new gdbm 1.9.1 + +* Fri Sep 30 2011 Petr Pisar - 4:5.14.1-191 +- Disable NDBM support temporarily too as it's provided by gdbm package + +* Wed Sep 21 2011 Petr Pisar - 4:5.14.1-190 +- Disable GDBM support temporarily to build new GDBM + +* Thu Sep 15 2011 Petr Pisar - 4:5.14.1-189 +- Correct perl-CGI list of Provides +- Make tests optional +- Correct perl-ExtUtils-ParseXS Provides +- Correct perl-Locale-Codes Provides +- Correct perl-Module-CoreList version +- Automate perl-Test-Simple-tests Requires version + +* Tue Sep 13 2011 Petr Pisar - 4:5.14.1-188 +- Make gdbm support optional to bootstrap with new gdbm +- Split Carp into standalone sub-package to dual-live with newer versions + (bug #736768) + +* Tue Aug 30 2011 Petr Pisar - 4:5.14.1-187 +- Split Locale::Codes into standalone sub-package to dual-live with newer + versions (bug #717863) + +* Sun Aug 14 2011 Iain Arnell 4:5.14.1-186 +- perl needs to own vendorarch/auto directory + +* Fri Aug 05 2011 Petr Sabata - 4:5.14.1-185 +- Move xsubpp to ExtUtils::ParseXS (#728393) + +* Fri Jul 29 2011 Iain Arnell 4:5.14.1-184 +- fix Compress-Raw-Bzip2 pacakging +- ensure that we never bundle bzip2 or zlib + +* Tue Jul 26 2011 Marcela Mašláňová - 4:5.14.1-183 +- remove from provides MODULE_COMPAT 5.12.* + +* Fri Jul 22 2011 Paul Howarth - 4:5.14.1-182 +- Have perl-Module-Build explicitly require perl(CPAN::Meta) >= 2.110420, + needed for creation of MYMETA files by Build.PL; the dual-life version of + the package already has this dependency + +* Tue Jul 19 2011 Petr Sabata - 4:5.14.1-181 +- Temporarily provide 5.12.* MODULE_COMPAT + +* Sat Jul 16 2011 Iain Arnell 4:5.14.1-180 +- fix escaping of the __provides_exclude_from macro + +* Wed Jul 13 2011 Iain Arnell 4:5.14.1-179 +- Parse-CPAN-Meta explicitly requires CPAN::Meta::YAML and JSON::PP +- Exclude CPAN::Meta* from CPAN sub-package +- Don't try to normalize CPAN-Meta, JSON-PP, and Parse-CPAN-Meta versions; + their dual-life packages aren't and have much higher numbers already + +* Mon Jun 27 2011 Marcela Mašláňová - 4:5.14.1-178 +- update macros -> add %%perl_bootstrap 1 and example for readability +- add into Module::Build dependency on perl-devel (contains macros.perl) +- create new sub-package macros, because we need macros in minimal buildroot + +* Thu Jun 23 2011 Marcela Mašláňová - 4:5.14.1-175 +- remove from macros BSD, because there exists BSD::Resources + +* Tue Jun 21 2011 Marcela Mašláňová - 4:5.14.1-174 +- remove old MODULE_COMPATs + +* Mon Jun 20 2011 Iain Arnell 4:5.14.1-173 +- move ptargrep to Archive-Tar sub-package +- fix version numbers in last two changelog entries + +* Mon Jun 20 2011 Paul Howarth - 4:5.14.1-172 +- add provide for perl(:MODULE_COMPAT_5.14.1) + +* Mon Jun 20 2011 Marcela Mašláňová - 4:5.14.1-171 +- update to 5.14.1 - no new modules, just serious bugfixes and doc +- switch off fork test, which is failing only on koji + +* Thu Jun 16 2011 Marcela Mašláňová - 4:5.14.0-170 +- try to update to latest ExtUtils::MakeMaker, no luck -> rebuild with current + version, fix bug RT#67618 in modules + +* Wed Jun 15 2011 Marcela Mašláňová - 4:5.14.0-169 +- filter even Mac:: requires, polish filter again for correct installation +- add sub-package Compress-Raw-Bzip2, solve Bzip2 conflicts after install +- and add IO::Uncompress::Bunzip2 correctly into IO-Compress + +* Mon Jun 13 2011 Marcela Mašláňová - 4:5.14.0-167 +- Perl 5.14 mass rebuild, bump release, remove releases in subpackages + +* Thu Jun 09 2011 Marcela Mašláňová - 4:5.14.0-165 +- Perl 5.14 mass rebuild + +* Thu Jun 09 2011 Marcela Mašláňová - 4:5.14.0-163 +- Perl 5.14 mass rebuild + +* Thu Jun 9 2011 Marcela Mašláňová - 4:5.14.0-162 +- add new sub-packages, remove BR in them + +* Wed Jun 1 2011 Marcela Mašláňová - 4:5.14.0-161 +- arm can't do parallel builds +- add require EE::MM into IPC::Cmd 711486 + +* Mon May 16 2011 Marcela Mašláňová - 4:5.14.0-161 +- test build of released 5.14.0 +- remove Class::ISA from sub-packages +- patches 8+ are part of new release +- remove vendorarch/auto/Compress/Zlib + +* Wed Apr 13 2011 Marcela Mašláňová - 4:5.12.3-160 +- add provides UNIVERSAL and DB back into perl + +* Thu Apr 07 2011 Petr Pisar - 4:5.12.3-159 +- Remove rpath-make patch because we use --enable-new-dtags linker option + +* Fri Apr 1 2011 Marcela Mašláňová - 4:5.12.3-158 +- 692900 - lc launders tainted flag, RT #87336 + +* Fri Apr 1 2011 Robin Lee - 4:5.12.3-157 +- Cwd.so go to the PathTools sub-package + +* Tue Mar 15 2011 Marcela Mašláňová - 4:5.12.3-156 +- sub-package Path-Tools + +* Sat Feb 19 2011 Iain Arnell 4:5.12.3-154 +- sub-package Scalar-List-Utils + +* Tue Feb 08 2011 Fedora Release Engineering - 4:5.12.3-153 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Jan 27 2011 Petr Pisar - 4:5.12.3-152 +- Document ExtUtils::ParseXS upgrade in local patch tracking + +* Wed Jan 26 2011 Tom Callaway - 4:5.12.3-151 +- update ExtUtils::ParseXS to 2.2206 (current) to fix Wx build + +* Wed Jan 26 2011 Petr Pisar - 4:5.12.3-150 +- Make %%global perl_default_filter lazy +- Do not hard-code tapsetdir path + +* Tue Jan 25 2011 Lukas Berk - 4:5.12.3-149 +- added systemtap tapset to make use of systemtap-sdt-devel +- added an example systemtap script + +* Mon Jan 24 2011 Marcela Mašláňová - 4:5.12.3-148 +- stable update 5.12.3 +- add COMPAT + +* Thu Dec 9 2010 Marcela Mašláňová - 4:5.12.2-146 +- 463773 revert change. txt files are needed for example by UCD::Unicode, + PDF::API2,... + +* Thu Dec 9 2010 Marcela Mašláňová - 4:5.12.2-145 +- required systemtap-sdt-devel on request in 661553 + +* Mon Nov 29 2010 Marcela Mašláňová - 4:5.12.2-144 +- create sub-package for CGI 3.49 + +* Tue Nov 09 2010 Petr Pisar - 4:5.12.2-143 +- Sub-package perl-Class-ISA (bug #651317) + +* Mon Nov 08 2010 Petr Pisar - 4:5.12.2-142 +- Make perl(ExtUtils::ParseXS) version 4 digits long (bug #650882) + +* Tue Oct 19 2010 Marcela Mašláňová - 4:5.12.2-141 +- 643447 fix redefinition of constant C in h2ph (visible in git send mail, + XML::Twig test suite) +- remove ifdef for s390 + +* Thu Oct 07 2010 Petr Pisar - 4:5.12.2-140 +- Package Test-Simple tests to dual-live with standalone package (bug #640752) + +* Wed Oct 6 2010 Marcela Mašláňová - 4:5.12.2-139 +- remove removal of NDBM + +* Tue Oct 05 2010 Petr Pisar - 4:5.12.2-138 +- Consolidate Requires filtering +- Consolidate libperl.so* Provides + +* Fri Oct 1 2010 Marcela Mašláňová - 4:5.12.2-137 +- filter useless requires, provide libperl.so + +* Fri Oct 01 2010 Petr Pisar - 4:5.12.2-136 +- Reformat perl-threads description +- Fix threads directories ownership + +* Thu Sep 30 2010 Marcela Mašláňová - 4:5.12.2-135 +- sub-package threads + +* Thu Sep 23 2010 Marcela Mašláňová - 4:5.12.2-134 +- add vendor path, clean paths in Configure in spec file +- create sub-package threads-shared + +* Tue Sep 7 2010 Petr Pisar - 4:5.12.2-133 +- Do not leak when destroying thread (RT #77352, RHBZ #630667) + +* Tue Sep 7 2010 Petr Sabata - 5:5.12.2-132 +- Fixing release number for modules + +* Tue Sep 7 2010 Petr Sabata - 4:5.12.2-1 +- Update to 5.12.2 +- Removed one hardcoded occurence of perl version in build process +- Added correct path to dtrace binary +- BuildRequires: systemtap-sdt-devel + +* Tue Sep 7 2010 Marcela Mašláňová - 4:5.12.1-131 +- run Configure with -Dusedtrace for systemtap support + +* Wed Aug 18 2010 Petr Pisar - 4:5.12.1-130 +- Run tests in parallel +- Add "-Wl,--enable-new-dtags" to linker to allow to override perl's rpath by + LD_LIBRARY_PATH used in tests. Otherwise tested perl would link to old + in-system libperl.so. +- Normalize spec file indentation + +* Mon Jul 26 2010 Marcela Mašláňová - 4:5.12.1-129 +- 617956 move perlxs* docs files into perl-devel + +* Thu Jul 15 2010 Marcela Mašláňová - 4:5.12.1-128 +- 614662 wrong perl-suidperl version in obsolete + +* Sun Jul 11 2010 Dan Horák - 4:5.12.1-127 +- add temporary compat provides needed on s390(x) + +* Fri Jul 09 2010 Petr Pisar - 4:5.12.1-126 +- Add Digest::SHA requirement to perl-CPAN and perl-CPANPLUS (bug #612563) + +* Thu Jul 8 2010 Marcela Mašláňová - 4:5.12.1-125 +- 607505 add another dir into Module::Build (thanks to Paul Howarth) + +* Mon Jun 28 2010 Ralf Corsépius - 4:5.12.1-124 +- Address perl-Compress-Raw directory ownership (BZ 607881). + +* Thu Jun 10 2010 Marcela Mašláňová - 4:5.12.1-123 +- remove patch with debugging symbols, which should be now ok without it +- update to 5.12.1 +- MODULE_COMPAT + +* Tue Apr 27 2010 Marcela Mašláňová - 4:5.12.0-122 +- packages in buildroot needs MODULE_COMPAT 5.10.1, add it back for rebuild + +* Sun Apr 25 2010 Marcela Mašláňová - 4:5.12.0-121 +- rebuild with tests in test buildroot + +* Fri Apr 23 2010 Marcela Mašláňová - 4:5.12.0-120-test +- MODULE_COMPAT 5.12.0 +- remove BR man +- clean configure +- fix provides/requires in IO-Compress + +* Wed Apr 14 2010 Marcela Mašláňová - 4:5.12.0-119.1 +- rebuild 5.12.0 without MODULE_COMPAT + +* Wed Apr 14 2010 Marcela Mašláňová - 4:5.12.0-119 +- initial 5.12.0 build + +* Tue Apr 6 2010 Marcela Mašláňová - 4:5.10.1-118 +- 463773 remove useless txt files from installation +- 575842 remove PERL_USE_SAFE_PUTENV, use perl putenv + +* Tue Mar 16 2010 Chris Weyl - 4:5.10.1-117 +- package tests in their own subpackage + +* Mon Mar 15 2010 Marcela Mašláňová - 4:5.10.1-116 +- add noarch into correct sub-packages +- move Provides/Obsoletes into correct modules from main perl + +* Thu Mar 11 2010 Paul Howarth - 4:5.10.1-115 +- restore missing version macros for Compress::Raw::Zlib, IO::Compress::Base + and IO::Compress::Zlib + +* Thu Mar 11 2010 Marcela Mašláňová - 4:5.10.1-114 +- clean spec a little more +- rebuild with new gdbm + +* Fri Mar 5 2010 Marcela Mašláňová - 4:5.10.1-112 +- fix license according to advice from legal +- clean unused patches + +* Wed Feb 24 2010 Chris Weyl - 4:5.10.1-111 +- update subpackage tests macros to handle packages with an epoch properly + +* Fri Feb 05 2010 Chris Weyl - 4:5.10.1-110 +- add initial EXPERIMENTAL tests subpackage rpm macros to macros.perl + +* Tue Dec 22 2009 Marcela Mašláňová - 4:5.10.1-109 +- 547656 CVE-2009-3626 perl: regexp matcher crash on invalid UTF-8 characters +- 549306 version::Internals should be packaged in perl-version subpackage +- Parse-CPAN-Meta updated and separate package is dead + +* Mon Dec 21 2009 Chris Weyl - 4:5.10.1-107 +- subpackage parent and Parse-CPAN-Meta; add them to core's dep list + +* Fri Dec 18 2009 Ralf Corsépius - 4:5.10.1-106 +- exclude "parent". + +* Fri Dec 18 2009 Ralf Corsépius - 4:5.10.1-105 +- exclude Parse-CPAN-Meta. + +* Mon Dec 7 2009 Stepan Kasal - 4:5.10.1-104 +- do not pack Bzip2 manpages either (#544582) + +* Mon Dec 7 2009 Stepan Kasal - 4:5.10.1-103 +- do not pack Bzip2 modules (#544582) +- hack: cheat about Compress::Raw::Zlib version (#544582) + +* Thu Dec 3 2009 Stepan Kasal - 4:5.10.1-102 +- switch off check for ppc64 and s390x +- remove the hack for "make test," it is no longer needed + +* Thu Dec 3 2009 Stepan Kasal - 4:5.10.1-101 +- be more careful with the libperl.so compatibility symlink (#543936) + +* Wed Dec 2 2009 Stepan Kasal - 4:5.10.1-100 +- new upstream version +- release number must be high, because of stale version numbers of some + of the subpackages +- drop upstreamed patches +- update the versions of bundled modules +- shorten the paths in @INC +- build without DEBUGGING +- implement compatibility measures for the above two changes, for a short + transition period +- provide perl(:MODULE_COMPAT_5.10.0), for that transition period only + +* Tue Dec 1 2009 Stepan Kasal - 4:5.10.0-87 +- fix patch-update-Compress-Raw-Zlib.patch (did not patch Zlib.pm) +- update Compress::Raw::Zlib to 2.023 +- update IO::Compress::Base, and IO::Compress::Zlib to 2.015 (#542645) + +* Mon Nov 30 2009 Marcela Mašláňová - 4:5.10.0-86 +- 542645 update IO-Compress-Base + +* Tue Nov 24 2009 Stepan Kasal - 4:5.10.0-85 +- back out perl-5.10.0-spamassassin.patch (#528572) + +* Thu Oct 01 2009 Chris Weyl - 4:5.10.0-84 +- add /perl(UNIVERSAL)/d; /perl(DB)/d to perl_default_filter auto-provides + filtering + +* Thu Oct 1 2009 Stepan Kasal - 4:5.10.0-83 +- update Storable to 2.21 + +* Mon Aug 31 2009 Chris Weyl - 4:5.10.0-82 +- update our Test-Simple update to 0.92 (patch by Iain Arnell), #519417 +- update Module-Pluggable to 3.9 + +* Thu Aug 27 2009 Chris Weyl - 4:5.10.0-81 +- fix macros.perl *sigh* + +* Mon Aug 24 2009 Stepan Kasal - 4:5.10.0-80 +- Remove -DDEBUGGING=-g, we are not ready yet. + +* Fri Aug 21 2009 Chris Weyl - 4:5.10.0-79 +- add helper filtering macros to -devel, for perl-* package invocation + (#502402) + +* Fri Jul 31 2009 Stepan Kasal - 4:5.10.0-78 +- Add configure option -DDEBUGGING=-g (#156113) + +* Tue Jul 28 2009 arcela Mašláňová - 4:5.10.0-77 +- 510127 spam assassin suffer from tainted bug + +* Mon Jul 27 2009 Marcela Mašláňová - 4:5.10.0-76 +- 494773 much better swap logic to support reentrancy and fix assert failure (rt #60508) + +* Sat Jul 25 2009 Fedora Release Engineering - 4:5.10.0-75 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Jul 10 2009 Stepan Kasal - 4:5.10.0-74 +- fix generated .ph files so that they no longer cause warnings (#509676) +- remove PREREQ_FATAL from Makefile.PL's processed by miniperl +- update to latest Scalar-List-Utils (#507378) +- perl-skip-prereq.patch: skip more prereq declarations in Makefile.PL files + +* Tue Jul 7 2009 Stepan Kasal - 4:5.10.0-73 +- re-enable tests + +* Tue Jul 7 2009 Stepan Kasal - 4:5.10.0-72 +- move -DPERL_USE_SAFE_PUTENV to ccflags (#508496) + +* Mon Jun 8 2009 Marcela Mašláňová - 4:5.10.0-71 +- #504386 update of Compress::Raw::Zlib 2.020 + +* Thu Jun 4 2009 Marcela Mašláňová - 4:5.10.0-70 +- update File::Spec (PathTools) to 3.30 + +* Wed Jun 3 2009 Stepan Kasal - 4:5.10.0-69 +- fix #221113, $! wrongly set when EOF is reached + +* Fri Apr 10 2009 Marcela Mašláňová - 4:5.10.0-68 +- do not use quotes in patchlevel.h; it breaks installation from cpan (#495183) + +* Tue Apr 7 2009 Stepan Kasal - 4:5.10.0-67 +- update CGI to 3.43, dropping upstreamed perl-CGI-escape.patch + +* Tue Apr 7 2009 Stepan Kasal - 4:5.10.0-66 +- fix CGI::escape for all strings (#472571) +- perl-CGI-t-util-58.patch: Do not distort lib/CGI/t/util-58.t + http://rt.perl.org/rt3/Ticket/Display.html?id=64502 + +* Fri Mar 27 2009 Stepan Kasal - 4:5.10.0-65 +- Move the gargantuan Changes* collection to -devel (#492605) + +* Tue Mar 24 2009 Stepan Kasal - 4:5.10.0-64 +- update module autodie + +* Mon Mar 23 2009 Stepan Kasal - 4:5.10.0-63 +- update Digest::SHA (fixes 489221) + +* Wed Mar 11 2009 Tom "spot" Callaway - 4:5.10.0-62 +- drop 26_fix_pod2man_upgrade (don't need it) +- fix typo in %%define ExtUtils_CBuilder_version + +* Wed Mar 11 2009 Tom "spot" Callaway - 4:5.10.0-61 +- apply Change 34507: Fix memory leak in single-char character class optimization +- Reorder @INC, based on b9ba2fadb18b54e35e5de54f945111a56cbcb249 +- fix Archive::Extract to fix test failure caused by tar >= 1.21 +- Merge useful Debian patches + +* Tue Mar 10 2009 Stepan Kasal - 4:5.10.0-60 +- remove compatibility obsolete sitelib directories +- use a better BuildRoot +- drop a redundant mkdir in %%install +- call patchlevel.h only once; rm patchlevel.bak +- update modules Sys::Syslog, Module::Load::Conditional, Module::CoreList, + Test::Harness, Test::Simple, CGI.pm (dropping the upstreamed patch), + File::Path (that includes our perl-5.10.0-CVE-2008-2827.patch), + constant, Pod::Simple, Archive::Tar, Archive::Extract, File::Fetch, + File::Temp, IPC::Cmd, Time::HiRes, Module::Build, ExtUtils::CBuilder +- standardize the patches for updating embedded modules +- work around a bug in Module::Build tests bu setting TMPDIR to a directory + inside the source tree + +* Sun Mar 08 2009 Robert Scheck - 4:5.10.0-59 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Mon Feb 16 2009 Tom "spot" Callaway - 4:5.10.0-58 +- add /usr/lib/perl5/site_perl to otherlibs (bz 484053) + +* Mon Feb 16 2009 Dennis Gilmore - 4:5.10.0-57 +- build sparc64 without _smp_mflags + +* Sat Feb 07 2009 Dennis Gilmore - 4:5.10.0-56 +- limit sparc builds to -j12 + +* Tue Feb 3 2009 Marcela Mašláňová - 4:5.10.0-55 +- update IPC::Cmd to v 0.42 + +* Mon Jan 19 2009 Marcela Mašláňová - 4:5.10.0-54 +- 455410 http://rt.perl.org/rt3/Public/Bug/Display.html?id=54934 + Attempt to free unreferenced scalar fiddling with the symbol table + Keep the refcount of the globs generated by PerlIO::via balanced. + +* Mon Dec 22 2008 Marcela Mašláňová - 4:5.10.0-53 +- add missing XHTML.pm into Pod::Simple + +* Fri Dec 12 2008 Marcela Mašláňová - 4:5.10.0-52 +- 295021 CVE-2007-4829 perl-Archive-Tar directory traversal flaws +- add another source for binary files, which test untaring links + +* Fri Nov 28 2008 Tom "spot" Callaway - 4:5.10.0-51 +- to fix Fedora bz 473223, which is really perl bug #54186 (http://rt.perl.org/rt3//Public/Bug/Display.html?id=54186) + we apply Changes 33640, 33881, 33896, 33897 + +* Mon Nov 24 2008 Marcela Mašláňová - 4:5.10.0-50 +- change summary according to RFC fix summary discussion at fedora-devel :) + +* Thu Oct 23 2008 Tom "spot" Callaway - 4:5.10.0-49 +- update File::Temp to 0.20 + +* Sun Oct 12 2008 Lubomir Rintel - 4:5.10.0-48 +- Include fix for rt#52740 to fix a crash when using Devel::Symdump and + Compress::Zlib together + +* Tue Oct 07 2008 Marcela Mašláňová 4:5.10.0-47.fc10 +- rt#33242, rhbz#459918. Segfault after reblessing objects in Storable. +- rhbz#465728 upgrade Simple::Pod to 3.07 + +* Wed Oct 1 2008 Stepan Kasal - 4:5.10.0-46 +- also preserve the timestamp of AUTHORS; move the fix to the recode + function, which is where the stamps go wrong + +* Wed Oct 1 2008 Tom "spot" Callaway 4:5.10.0-45 +- give Changes*.gz the same datetime to avoid multilib conflict + +* Wed Sep 17 2008 Marcela Maslanova 4:5.10.0-44.fc10 +- remove Tar.pm from Archive-Extract +- fix version of Test::Simple in spec +- update Test::Simple +- update Archive::Tar to 1.38 + +* Tue Sep 16 2008 Marcela Maslanova 4:5.10.0-43.fc10 +- 462444 update Test::Simple to 0.80 + +* Thu Aug 14 2008 Stepan Kasal - 4:5.10.0-42.fc10 +- move libnet to the right directory, along Net/Config.pm + +* Wed Aug 13 2008 Stepan Kasal - 4:5.10.0-41.fc10 +- do not create directory .../%%{version}/auto + +* Tue Aug 5 2008 Marcela Maslanova 4:5.10.0-40.fc10 +- 457867 remove required IPC::Run from CPANPLUS - needed only by win32 +- 457771 add path + +* Fri Aug 1 2008 Stepan Kasal 4:5.10.0-39.fc10 +- CGI.pm bug in exists() on tied param hash (#457085) +- move the enc2xs templates (../Encode/*.e2x) to -devel, (#456534) + +* Mon Jul 21 2008 Marcela Maslanova 4:5.10.0-38 +- 455933 update to CGI-3.38 +- fix fuzz problems (patch6) +- 217833 pos() function handle unicode characters correct + +* Thu Jul 10 2008 Tom "spot" Callaway 4:5.10.0-36 +- rebuild for new db4 4.7 + +* Wed Jul 9 2008 Stepan Kasal 4:5.10.0-35 +- remove db4 require, it is handled automatically + +* Thu Jul 3 2008 Stepan Kasal 4:5.10.0-34 +- 453646 use -DPERL_USE_SAFE_PUTENV. Without fail some modules f.e. readline. + +* Tue Jul 1 2008 Marcela Maslanova 4:5.10.0-33 +- 451078 update Test::Harness to 3.12 for more testing. Removed verbose +test, new Test::Harness has possibly verbose output, but updated package +has a lot of features f.e. TAP::Harness. Carefully watched all new bugs +related to tests! + +* Fri Jun 27 2008 Stepan Kasal 4:5.10.0-32 +- bump the release number, so that it is not smaller than in F-9 + +* Tue Jun 24 2008 Marcela Maslanova 4:5.10.0-28 +- CVE-2008-2827 perl: insecure use of chmod in rmtree + +* Wed Jun 11 2008 Marcela Maslanova 4:5.10.0-27 +- 447371 wrong access permission rt49003 + +* Tue Jun 10 2008 Stepan Kasal 4:5.10.0-26 +- make config parameter list consistent for 32bit and 64bit platforms, + add config option -Dinc_version_list=none (#448735) +- use perl_archname consistently +- cleanup of usage of *_lib macros in %%install + +* Fri Jun 6 2008 Marcela Maslanova 4:5.10.0-25 +- 449577 rebuild for FTBFS + +* Mon May 26 2008 Marcela Maslanova 4:5.10.0-24 +- 448392 upstream fix for assertion + +* Thu May 22 2008 Tom "spot" Callaway 4:5.10.0-23 +- sparc64 breaks with the rpath hack patch applied + +* Mon May 19 2008 Marcela Maslanova +- 447142 upgrade CGI to 3.37 (this actually happened in -21 in rawhide.) + +* Sat May 17 2008 Tom "spot" Callaway 4:5.10.0-21 +- sparc64 fails two tests under mysterious circumstances. we need to get the + rest of the tree moving, so we temporarily disable the tests on that arch. + +* Tue Mar 18 2008 Tom "spot" Callaway 4:5.10.0-20 +- create the vendor_perl/%%{perl_version}/%%{perl_archname}/auto directory + in %%{_libdir} so we own it properly + +* Tue Mar 18 2008 Tom "spot" Callaway 4:5.10.0-19 +- fix CPANPLUS-Dist-Build Provides/Obsoletes (bz 437615) +- bump version on Module-CoreList subpackage + +* Tue Mar 18 2008 Tom "spot" Callaway 4:5.10.0-18 +- forgot to create the auto directory for multilib vendor_perl dirs + +* Tue Mar 18 2008 Tom "spot" Callaway 4:5.10.0-17 +- own multilib vendor_perl directories +- mark Module::CoreList patch in patchlevel.h + +* Tue Mar 18 2008 Marcela Maslanova 4:5.10.0-16 +- 437817: RFE: Upgrade Module::CoreList to 2.14 + +* Wed Mar 12 2008 Marcela Maslanova 4:5.10.0-15 +- xsubpp now lives in perl-devel instead of perl. + +* Sat Mar 8 2008 Tom "spot" Callaway 4:5.10.0-14 +- back out Archive::Extract patch, causing odd test failure + +* Sat Mar 8 2008 Tom "spot" Callaway 4:5.10.0-13 +- add missing lzma test file + +* Fri Mar 7 2008 Tom "spot" Callaway 4:5.10.0-12 +- conditionalize multilib patch report in patchlevel.h +- Update Archive::Extract to 0.26 +- Update Module::Load::Conditional to 0.24 + +* Fri Mar 7 2008 Tom "spot" Callaway 4:5.10.0-11 +- only do it once, and do it for all our patches + +* Fri Mar 7 2008 Tom "spot" Callaway 4:5.10.0-10 +- note 32891 in patchlevel.h + +* Fri Mar 7 2008 Tom "spot" Callaway 4:5.10.0-9 +- get rid of bad conflicts on perl-File-Temp + +* Fri Mar 7 2008 Tom "spot" Callaway 4:5.10.0-8 +- use /usr/local for sitelib/sitearch dirs +- patch 32891 for significant performance improvement + +* Fri Feb 22 2008 Stepan Kasal - 4:5.10.0-7 +- Add perl-File-Temp provides/obsoletes/conflicts (#433836), + reported by Bill McGonigle +- escape the macros in Jan 30 entry + +* Tue Feb 19 2008 Fedora Release Engineering - 4:5.10.0-6 +- Autorebuild for GCC 4.3 + +* Wed Jan 30 2008 Tom "spot" Callaway - 4:5.10.0-5 +- disable some futime tests in t/io/fs.t because they started failing on x86_64 + in the Fedora builders, and no one can figure out why. :/ + +* Wed Jan 30 2008 Tom "spot" Callaway - 4:5.10.0-4 +- create %%{_prefix}/lib/perl5/vendor_perl/%%{perl_version}/auto and own it + in base perl (resolves bugzilla 214580) + +* Thu Jan 10 2008 Tom "spot" Callaway - 4:5.10.0-3 +- Update Sys::Syslog to 0.24, to fix test failures + +* Wed Jan 9 2008 Tom "spot" Callaway - 4:5.10.0-2 +- add some BR for tests + +* Tue Jan 8 2008 Tom "spot" Callaway - 4:5.10.0-1 +- 5.10.0 final +- clear out all the unnecessary patches (down to 8 patches!) +- get rid of super perl debugging mode +- add new subpackages + +* Thu Nov 29 2007 Robin Norwood - 4:5.10.0_RC2-0.1 +- first attempt at building 5.10.0 + +