commit 00a8196cff389ec8675d7bb5c19785cbd534b5ed Author: Adam Samalik Date: Fri May 5 22:13:53 2023 +0200 import sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6061e74 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/perl-5.30.1-study_chunk-avoid-mutating-regexp-program-within-GOS.patch +/perl-5.30.1.tar.xz diff --git a/Pod-Html-license-clarification b/Pod-Html-license-clarification new file mode 100644 index 0000000..bd567f1 --- /dev/null +++ b/Pod-Html-license-clarification @@ -0,0 +1,41 @@ +Date: Sun, 15 Mar 2015 21:22:10 -0600 +Subject: Re: Pod::Html license +From: Tom Christiansen +To: Petr Šabata +Cc: Tom Christiansen , marcgreen@cpan.org, + jplesnik@redhat.com +MIME-Version: 1.0 +Content-Transfer-Encoding: 8bit +Content-Type: text/plain; charset=utf-8 + +Yes, it was supposed to be licensed just like the rest of Perl. + +Sent from my Sprint phone + +Petr Šabata wrote: + +>Marc, Tom, +> +>I'm reviewing licensing of our perl package in Fedora and +>noticed Pod::HTML and its pod2html script are licensed under +>the Artistic license (only). +> +>This is an issue for us as this license isn't considered free by +>FSF [0]. Unless the license of this core component changes, we +>will have to drop it from the tarball and remove support for it +>from all the modules we ship that use it, such as Module::Build +>or Module::Install. +> +>What I've seen in the past is authors originally claiming their +>module was released under Artistic while what they actually meant +>was the common `the same as perl itself', i.e. `GPL+/Aristic' [1], +>an FSF free license. Is it possible this is also the case +>of Pod::Html? +> +>Thanks, +>Petr +> +>(also CC'ing Jitka, the primary package maintainer in Fedora) +> +>[0] https://www.gnu.org/licenses/license-list.html#ArtisticLicense +>[1] https://www.gnu.org/licenses/license-list.html#PerlLicense diff --git a/gendep.macros b/gendep.macros new file mode 100644 index 0000000..fc24c8f --- /dev/null +++ b/gendep.macros @@ -0,0 +1,2076 @@ +%global gendep_perl \ +%{nil} +%global gendep_perl_Archive_Tar \ +Requires: perl(:VERSION) >= 5.5.0 \ +Requires: perl(Archive::Tar) \ +Requires: perl(Archive::Tar::Constant) \ +Requires: perl(Archive::Tar::File) \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Cwd) \ +Requires: perl(Data::Dumper) \ +Requires: perl(Exporter) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Find) \ +Requires: perl(File::Path) \ +Requires: perl(File::Spec) \ +Requires: perl(File::Spec::Unix) \ +Requires: perl(Getopt::Long) \ +Requires: perl(Getopt::Std) \ +Requires: perl(IO::File) \ +Requires: perl(IO::Handle) \ +Requires: perl(IO::Zlib) \ +Requires: perl(Pod::Usage) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Provides: perl(Archive::Tar) = 2.32 \ +Provides: perl(Archive::Tar::Constant) = 2.32 \ +Provides: perl(Archive::Tar::File) = 2.32 \ +%{nil} +%global gendep_perl_Attribute_Handlers \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Attribute::Handlers) = 1.01 \ +%{nil} +%global gendep_perl_CPAN \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(App::Cpan) \ +Requires: perl(CPAN) >= 1.80 \ +Requires: perl(CPAN::Author) \ +Requires: perl(CPAN::Bundle) \ +Requires: perl(CPAN::CacheMgr) \ +Requires: perl(CPAN::Complete) \ +Requires: perl(CPAN::Debug) \ +Requires: perl(CPAN::DeferredCode) \ +Requires: perl(CPAN::Distribution) \ +Requires: perl(CPAN::Distroprefs) \ +Requires: perl(CPAN::Distrostatus) \ +Requires: perl(CPAN::Exception::RecursiveDependency) \ +Requires: perl(CPAN::Exception::yaml_not_installed) \ +Requires: perl(CPAN::Exception::yaml_process_error) \ +Requires: perl(CPAN::FTP) \ +Requires: perl(CPAN::FTP::netrc) \ +Requires: perl(CPAN::HTTP::Credentials) \ +Requires: perl(CPAN::HandleConfig) \ +Requires: perl(CPAN::Index) >= 1.93 \ +Requires: perl(CPAN::InfoObj) \ +Requires: perl(CPAN::LWP::UserAgent) \ +Requires: perl(CPAN::Mirrors) \ +Requires: perl(CPAN::Module) \ +Requires: perl(CPAN::Prompt) \ +Requires: perl(CPAN::Queue) \ +Requires: perl(CPAN::Shell) \ +Requires: perl(CPAN::Tarzip) \ +Requires: perl(CPAN::URL) \ +Requires: perl(CPAN::Version) \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Cwd) \ +Requires: perl(DirHandle) \ +Requires: perl(Errno) \ +Requires: perl(Exporter) \ +Requires: perl(ExtUtils::MakeMaker) \ +Requires: perl(Fcntl) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Copy) \ +Requires: perl(File::Find) \ +Requires: perl(File::Path) \ +Requires: perl(File::Spec) \ +Requires: perl(File::Spec::Functions) \ +Requires: perl(FileHandle) \ +Requires: perl(Getopt::Std) \ +Requires: perl(HTTP::Tiny) >= 0.005 \ +Requires: perl(Net::Ping) \ +Requires: perl(Safe) \ +Requires: perl(Sys::Hostname) \ +Requires: perl(Text::ParseWords) \ +Requires: perl(Text::Wrap) \ +Requires: perl(autouse) \ +Requires: perl(constant) \ +Requires: perl(if) \ +Requires: perl(overload) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Provides: perl(App::Cpan) = 1.672 \ +Provides: perl(CPAN) = 2.22 \ +Provides: perl(CPAN::Author) = 5.5002 \ +Provides: perl(CPAN::Bundle) = 5.5003 \ +Provides: perl(CPAN::CacheMgr) = 5.5002 \ +Provides: perl(CPAN::Complete) = 5.5001 \ +Provides: perl(CPAN::Debug) = 5.5001 \ +Provides: perl(CPAN::DeferredCode) = 5.50 \ +Provides: perl(CPAN::Distribution) = 2.22 \ +Provides: perl(CPAN::Distroprefs) = 6.0001 \ +Provides: perl(CPAN::Distroprefs::Iterator) \ +Provides: perl(CPAN::Distroprefs::Pref) \ +Provides: perl(CPAN::Distroprefs::Result) \ +Provides: perl(CPAN::Distroprefs::Result::Error) \ +Provides: perl(CPAN::Distroprefs::Result::Fatal) \ +Provides: perl(CPAN::Distroprefs::Result::Success) \ +Provides: perl(CPAN::Distroprefs::Result::Warning) \ +Provides: perl(CPAN::Distrostatus) = 5.5 \ +Provides: perl(CPAN::Eval) \ +Provides: perl(CPAN::Exception::RecursiveDependency) = 5.5001 \ +Provides: perl(CPAN::Exception::RecursiveDependency::na) \ +Provides: perl(CPAN::Exception::blocked_urllist) = 1.001 \ +Provides: perl(CPAN::Exception::yaml_not_installed) = 5.5 \ +Provides: perl(CPAN::Exception::yaml_process_error) = 5.5 \ +Provides: perl(CPAN::FTP) = 5.5011 \ +Provides: perl(CPAN::FTP::netrc) = 1.01 \ +Provides: perl(CPAN::FirstTime) = 5.5311 \ +Provides: perl(CPAN::HTTP::Client) = 1.9601 \ +Provides: perl(CPAN::HTTP::Credentials) = 1.9601 \ +Provides: perl(CPAN::HandleConfig) = 5.5008 \ +Provides: perl(CPAN::Index) = 2.12 \ +Provides: perl(CPAN::InfoObj) = 5.5 \ +Provides: perl(CPAN::Kwalify) = 5.50 \ +Provides: perl(CPAN::LWP::UserAgent) = 1.9601 \ +Provides: perl(CPAN::Mirrored::By) \ +Provides: perl(CPAN::Mirrors) = 2.21 \ +Provides: perl(CPAN::Module) = 5.5003 \ +Provides: perl(CPAN::Nox) = 5.5001 \ +Provides: perl(CPAN::Plugin) = 0.97 \ +Provides: perl(CPAN::Plugin::Specfile) = 0.02 \ +Provides: perl(CPAN::Prompt) = 5.5 \ +Provides: perl(CPAN::Queue) = 5.5002 \ +Provides: perl(CPAN::Queue::Item) \ +Provides: perl(CPAN::Shell) = 5.5008 \ +Provides: perl(CPAN::Tarzip) = 5.5012 \ +Provides: perl(CPAN::URL) = 5.5 \ +Provides: perl(CPAN::Version) = 5.5003 \ +%{nil} +%global gendep_perl_CPAN_Meta \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(:VERSION) >= 5.8.1 \ +Requires: perl(CPAN::Meta::Converter) >= 2.141170 \ +Requires: perl(CPAN::Meta::Feature) \ +Requires: perl(CPAN::Meta::Prereqs) \ +Requires: perl(CPAN::Meta::Requirements) >= 2.121 \ +Requires: perl(CPAN::Meta::Validator) \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(Parse::CPAN::Meta) >= 1.4400 \ +Requires: perl(Parse::CPAN::Meta) >= 1.4414 \ +Requires: perl(Scalar::Util) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(CPAN::Meta) = 2.150010 \ +Provides: perl(CPAN::Meta::Converter) = 2.150010 \ +Provides: perl(CPAN::Meta::Feature) = 2.150010 \ +Provides: perl(CPAN::Meta::History) = 2.150010 \ +Provides: perl(CPAN::Meta::Merge) = 2.150010 \ +Provides: perl(CPAN::Meta::Prereqs) = 2.150010 \ +Provides: perl(CPAN::Meta::Spec) = 2.150010 \ +Provides: perl(CPAN::Meta::Validator) = 2.150010 \ +Provides: perl(Parse::CPAN::Meta) = 2.150010 \ +%{nil} +%global gendep_perl_CPAN_Meta_Requirements \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(CPAN::Meta::Requirements) = 2.140000 \ +%{nil} +%global gendep_perl_CPAN_Meta_YAML \ +Requires: perl(:VERSION) >= 5.8.1 \ +Requires: perl(B) \ +Requires: perl(Exporter) \ +Requires: perl(Scalar::Util) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(CPAN::Meta::YAML) = 0.018 \ +%{nil} +%global gendep_perl_Carp \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Carp) = 1.50 \ +Provides: perl(Carp::Heavy) = 1.50 \ +Provides: perl(Carp::Heavy) = 1.50 \ +%{nil} +%global gendep_perl_Compress_Raw_Bzip2 \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(bytes) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Compress::Raw::Bzip2) = 2.084 \ +%{nil} +%global gendep_perl_Compress_Raw_Bzip2_debuginfo \ +%{nil} +%global gendep_perl_Compress_Raw_Zlib \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(bytes) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Compress::Raw::Zlib) = 2.084 \ +%{nil} +%global gendep_perl_Compress_Raw_Zlib_debuginfo \ +%{nil} +%global gendep_perl_Config_Perl_V \ +Requires: perl(Config) \ +Requires: perl(Exporter) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Provides: perl(Config::Perl::V) = 0.32 \ +%{nil} +%global gendep_perl_DB_File \ +Requires: perl(:VERSION) >= 5.8.3 \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(File::Spec) \ +Requires: perl(Tie::Hash) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(DB_File) = 1.843 \ +Provides: perl(DB_File::BTREEINFO) \ +Provides: perl(DB_File::HASHINFO) \ +Provides: perl(DB_File::RECNOINFO) \ +%{nil} +%global gendep_perl_DB_File_debuginfo \ +%{nil} +%global gendep_perl_Data_Dumper \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(constant) \ +Provides: perl(Data::Dumper) = 2.174 \ +%{nil} +%global gendep_perl_Data_Dumper_debuginfo \ +%{nil} +%global gendep_perl_Devel_PPPort \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(Devel::PPPort) = 3.52 \ +%{nil} +%global gendep_perl_Devel_Peek \ +Requires: perl(Exporter) \ +Requires: perl(XSLoader) \ +Provides: perl(Devel::Peek) = 1.28 \ +%{nil} +%global gendep_perl_Devel_Peek_debuginfo \ +%{nil} +%global gendep_perl_Devel_SelfStubber \ +Requires: perl(File::Spec) \ +Requires: perl(SelfLoader) \ +Provides: perl(Devel::SelfStubber) = 1.06 \ +%{nil} +%global gendep_perl_Digest \ +Requires: perl(Carp) \ +Requires: perl(Digest) \ +Requires: perl(Exporter) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(Digest) = 1.17 \ +Provides: perl(Digest::base) = 1.16 \ +Provides: perl(Digest::file) = 1.16 \ +%{nil} +%global gendep_perl_Digest_MD5 \ +Requires: perl(Exporter) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(Digest::MD5) = 2.55 \ +%{nil} +%global gendep_perl_Digest_MD5_debuginfo \ +%{nil} +%global gendep_perl_Digest_SHA \ +Requires: perl(:VERSION) >= 5.3.0 \ +Requires: perl(Digest::SHA) \ +Requires: perl(Exporter) \ +Requires: perl(Fcntl) \ +Requires: perl(Getopt::Long) \ +Requires: perl(integer) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Provides: perl(Digest::SHA) = 6.02 \ +%{nil} +%global gendep_perl_Digest_SHA_debuginfo \ +%{nil} +%global gendep_perl_Encode \ +Requires: perl(:VERSION) >= 5.8.0 \ +Requires: perl(:VERSION) >= 5.8.1 \ +Requires: perl(Carp) \ +Requires: perl(Encode) \ +Requires: perl(Encode::Alias) \ +Requires: perl(Encode::CJKConstants) \ +Requires: perl(Encode::CN::HZ) \ +Requires: perl(Encode::Config) \ +Requires: perl(Encode::Encoding) \ +Requires: perl(Encode::Guess) \ +Requires: perl(Encode::JP::JIS7) \ +Requires: perl(Encode::KR::2022_KR) \ +Requires: perl(Encode::MIME::Header) \ +Requires: perl(Encode::MIME::Name) \ +Requires: perl(Encode::Unicode) \ +Requires: perl(Exporter) >= 5.57 \ +Requires: perl(File::Basename) \ +Requires: perl(Getopt::Long) \ +Requires: perl(Getopt::Std) \ +Requires: perl(MIME::Base64) \ +Requires: perl(Storable) \ +Requires: perl(XSLoader) \ +Requires: perl(bytes) \ +Requires: perl(constant) \ +Requires: perl(overload) \ +Requires: perl(parent) \ +Requires: perl(re) \ +Requires: perl(strict) \ +Requires: perl(utf8) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Provides: perl(Encode) = 3.01 \ +Provides: perl(Encode::Alias) = 2.24 \ +Provides: perl(Encode::Byte) = 2.4 \ +Provides: perl(Encode::CJKConstants) = 2.2 \ +Provides: perl(Encode::CN) = 2.3 \ +Provides: perl(Encode::CN::HZ) = 2.10 \ +Provides: perl(Encode::Config) = 2.5 \ +Provides: perl(Encode::EBCDIC) = 2.2 \ +Provides: perl(Encode::Encoder) = 2.3 \ +Provides: perl(Encode::Encoding) = 2.8 \ +Provides: perl(Encode::GSM0338) = 2.7 \ +Provides: perl(Encode::Guess) = 2.7 \ +Provides: perl(Encode::Internal) \ +Provides: perl(Encode::JP) = 2.4 \ +Provides: perl(Encode::JP::H2Z) = 2.2 \ +Provides: perl(Encode::JP::JIS7) = 2.8 \ +Provides: perl(Encode::KR) = 2.3 \ +Provides: perl(Encode::KR::2022_KR) = 2.4 \ +Provides: perl(Encode::MIME::Header) = 2.28 \ +Provides: perl(Encode::MIME::Header::ISO_2022_JP) = 1.9 \ +Provides: perl(Encode::MIME::Name) = 1.3 \ +Provides: perl(Encode::Symbol) = 2.2 \ +Provides: perl(Encode::TW) = 2.3 \ +Provides: perl(Encode::UTF_EBCDIC) \ +Provides: perl(Encode::Unicode) = 2.18 \ +Provides: perl(Encode::Unicode::UTF7) = 2.10 \ +Provides: perl(Encode::XS) \ +Provides: perl(Encode::utf8) \ +%{nil} +%global gendep_perl_Encode_debuginfo \ +%{nil} +%global gendep_perl_Encode_devel \ +Requires: perl(Config) \ +Requires: perl(File::Find) \ +Requires: perl(Getopt::Std) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +%{nil} +%global gendep_perl_Env \ +Requires: perl(Config) \ +Requires: perl(Tie::Array) \ +Provides: perl(Env) = 1.04 \ +Provides: perl(Env::Array) \ +Provides: perl(Env::Array::VMS) \ +%{nil} +%global gendep_perl_Errno \ +Requires: perl(Config) \ +Requires: perl(Exporter) \ +Requires: perl(strict) \ +Provides: perl(Errno) = 1.30 \ +%{nil} +%global gendep_perl_Exporter \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Exporter) \ +Requires: perl(strict) \ +Provides: perl(Exporter) = 5.73 \ +Provides: perl(Exporter::Heavy) \ +%{nil} +%global gendep_perl_ExtUtils_CBuilder \ +Requires: perl(Config) \ +Requires: perl(Cwd) \ +Requires: perl(ExtUtils::CBuilder::Base) \ +Requires: perl(ExtUtils::CBuilder::Platform::Unix) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Path) \ +Requires: perl(File::Spec) \ +Requires: perl(File::Spec::Functions) \ +Requires: perl(File::Temp) \ +Requires: perl(IO::File) \ +Requires: perl(IPC::Cmd) \ +Requires: perl(Perl::OSType) \ +Requires: perl(Text::ParseWords) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Provides: perl(ExtUtils::CBuilder) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Base) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Platform::Unix) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Platform::VMS) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Platform::Windows) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Platform::Windows::BCC) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Platform::Windows::GCC) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Platform::Windows::MSVC) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Platform::aix) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Platform::android) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Platform::cygwin) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Platform::darwin) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Platform::dec_osf) = 0.280231 \ +Provides: perl(ExtUtils::CBuilder::Platform::linux) = 0.280206 \ +Provides: perl(ExtUtils::CBuilder::Platform::os2) = 0.280231 \ +%{nil} +%global gendep_perl_ExtUtils_Command \ +Requires: perl(:VERSION) >= 5.5.30 \ +Requires: perl(Exporter) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(ExtUtils::Command) = 7.34 \ +%{nil} +%global gendep_perl_ExtUtils_Embed \ +Requires: perl(Config) \ +Requires: perl(Exporter) \ +Requires: perl(File::Spec) \ +Requires: perl(strict) \ +Provides: perl(ExtUtils::Embed) = 1.35 \ +%{nil} +%global gendep_perl_ExtUtils_Install \ +Requires: perl(:VERSION) >= 5.5.30 \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Cwd) \ +Requires: perl(Exporter) \ +Requires: perl(ExtUtils::MakeMaker) \ +Requires: perl(ExtUtils::Packlist) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Copy) \ +Requires: perl(File::Find) \ +Requires: perl(File::Path) \ +Requires: perl(File::Spec) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(ExtUtils::Install) = 2.14 \ +Provides: perl(ExtUtils::Install::Warn) \ +Provides: perl(ExtUtils::Installed) = 2.14 \ +Provides: perl(ExtUtils::Packlist) = 2.14 \ +%{nil} +%global gendep_perl_ExtUtils_MM_Utils \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(ExtUtils::MM::Utils) = 7.11 \ +%{nil} +%global gendep_perl_ExtUtils_MakeMaker \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(:VERSION) >= 5.6.1 \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Cwd) \ +Requires: perl(Encode) \ +Requires: perl(Encode::Alias) \ +Requires: perl(Exporter) \ +Requires: perl(ExtUtils::Installed) \ +Requires: perl(ExtUtils::Liblist) \ +Requires: perl(ExtUtils::Liblist::Kid) \ +Requires: perl(ExtUtils::MM) \ +Requires: perl(ExtUtils::MM_Any) \ +Requires: perl(ExtUtils::MM_Unix) \ +Requires: perl(ExtUtils::MM_Win32) \ +Requires: perl(ExtUtils::MY) \ +Requires: perl(ExtUtils::MakeMaker) \ +Requires: perl(ExtUtils::MakeMaker::Config) \ +Requires: perl(ExtUtils::MakeMaker::version) \ +Requires: perl(ExtUtils::Packlist) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Path) \ +Requires: perl(File::Spec) \ +Requires: perl(IO::File) \ +Requires: perl(base) \ +Requires: perl(lib) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Provides: perl(ExtUtils::Command::MM) = 7.34 \ +Provides: perl(ExtUtils::Liblist) = 7.34 \ +Provides: perl(ExtUtils::Liblist::Kid) = 7.34 \ +Provides: perl(ExtUtils::MM) = 7.34 \ +Provides: perl(ExtUtils::MM_AIX) = 7.34 \ +Provides: perl(ExtUtils::MM_Any) = 7.34 \ +Provides: perl(ExtUtils::MM_BeOS) = 7.34 \ +Provides: perl(ExtUtils::MM_Cygwin) = 7.34 \ +Provides: perl(ExtUtils::MM_DOS) = 7.34 \ +Provides: perl(ExtUtils::MM_Darwin) = 7.34 \ +Provides: perl(ExtUtils::MM_MacOS) = 7.34 \ +Provides: perl(ExtUtils::MM_NW5) = 7.34 \ +Provides: perl(ExtUtils::MM_OS2) = 7.34 \ +Provides: perl(ExtUtils::MM_QNX) = 7.34 \ +Provides: perl(ExtUtils::MM_UWIN) = 7.34 \ +Provides: perl(ExtUtils::MM_Unix) = 7.34 \ +Provides: perl(ExtUtils::MM_VMS) = 7.34 \ +Provides: perl(ExtUtils::MM_VOS) = 7.34 \ +Provides: perl(ExtUtils::MM_Win32) = 7.34 \ +Provides: perl(ExtUtils::MM_Win95) = 7.34 \ +Provides: perl(ExtUtils::MY) = 7.34 \ +Provides: perl(ExtUtils::MakeMaker) = 7.34 \ +Provides: perl(ExtUtils::MakeMaker::Config) = 7.34 \ +Provides: perl(ExtUtils::MakeMaker::Locale) = 7.34 \ +Provides: perl(ExtUtils::MakeMaker::version) = 7.34 \ +Provides: perl(ExtUtils::Mkbootstrap) = 7.34 \ +Provides: perl(ExtUtils::Mksymlists) = 7.34 \ +Provides: perl(ExtUtils::testlib) = 7.34 \ +Provides: perl(MM) \ +Provides: perl(MY) \ +%{nil} +%global gendep_perl_ExtUtils_Manifest \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Exporter) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Copy) \ +Requires: perl(File::Find) \ +Requires: perl(File::Spec) >= 0.8 \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(ExtUtils::Manifest) = 1.72 \ +%{nil} +%global gendep_perl_ExtUtils_Miniperl \ +Requires: perl(Exporter) \ +Requires: perl(ExtUtils::Embed) >= 1.31 \ +Requires: perl(strict) \ +Provides: perl(ExtUtils::Miniperl) = 1.09 \ +%{nil} +%global gendep_perl_ExtUtils_ParseXS \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(:VERSION) >= 5.6.1 \ +Requires: perl(Config) \ +Requires: perl(Cwd) \ +Requires: perl(Exporter) \ +Requires: perl(ExtUtils::ParseXS) \ +Requires: perl(ExtUtils::ParseXS::Constants) \ +Requires: perl(ExtUtils::ParseXS::Utilities) \ +Requires: perl(ExtUtils::Typemaps) \ +Requires: perl(ExtUtils::Typemaps::InputMap) \ +Requires: perl(ExtUtils::Typemaps::OutputMap) \ +Requires: perl(ExtUtils::Typemaps::Type) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Spec) \ +Requires: perl(Getopt::Long) \ +Requires: perl(Symbol) \ +Requires: perl(re) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(ExtUtils::ParseXS) = 3.40 \ +Provides: perl(ExtUtils::ParseXS::Constants) = 3.40 \ +Provides: perl(ExtUtils::ParseXS::CountLines) = 3.40 \ +Provides: perl(ExtUtils::ParseXS::Eval) = 3.40 \ +Provides: perl(ExtUtils::ParseXS::Utilities) = 3.40 \ +Provides: perl(ExtUtils::Typemaps) = 3.38 \ +Provides: perl(ExtUtils::Typemaps::Cmd) = 3.38 \ +Provides: perl(ExtUtils::Typemaps::InputMap) = 3.38 \ +Provides: perl(ExtUtils::Typemaps::OutputMap) = 3.38 \ +Provides: perl(ExtUtils::Typemaps::Type) = 3.38 \ +%{nil} +%global gendep_perl_File_Fetch \ +Requires: perl(Carp) \ +Requires: perl(Cwd) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Copy) \ +Requires: perl(File::Path) \ +Requires: perl(File::Spec) \ +Requires: perl(File::Spec::Unix) \ +Requires: perl(File::Temp) \ +Requires: perl(FileHandle) \ +Requires: perl(IPC::Cmd) \ +Requires: perl(Locale::Maketext::Simple) \ +Requires: perl(Module::Load::Conditional) \ +Requires: perl(Params::Check) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(File::Fetch) = 0.56 \ +%{nil} +%global gendep_perl_File_Path \ +Requires: perl(:VERSION) >= 5.5.0 \ +Requires: perl(Cwd) \ +Requires: perl(Exporter) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Spec) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(File::Path) = 2.16 \ +%{nil} +%global gendep_perl_File_Temp \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(Cwd) \ +Requires: perl(Errno) \ +Requires: perl(Exporter) >= 5.57 \ +Requires: perl(Fcntl) >= 1.03 \ +Requires: perl(File::Path) >= 2.06 \ +Requires: perl(File::Spec) >= 0.8 \ +Requires: perl(IO::Handle) \ +Requires: perl(IO::Seekable) \ +Requires: perl(Scalar::Util) \ +Requires: perl(Symbol) \ +Requires: perl(constant) \ +Requires: perl(overload) \ +Requires: perl(parent) >= 0.221 \ +Requires: perl(strict) \ +Provides: perl(File::Temp) = 0.2309 \ +%{nil} +%global gendep_perl_Filter \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Exporter) \ +Requires: perl(XSLoader) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Filter::Util::Call) = 1.59 \ +%{nil} +%global gendep_perl_Filter_Simple \ +Requires: perl(Carp) \ +Requires: perl(Filter::Util::Call) \ +Requires: perl(Text::Balanced) \ +Provides: perl(Filter::Simple) = 0.95 \ +%{nil} +%global gendep_perl_Filter_debuginfo \ +%{nil} +%global gendep_perl_Getopt_Long \ +Requires: perl(:VERSION) >= 5.4.0 \ +Requires: perl(Exporter) \ +Requires: perl(constant) \ +Requires: perl(overload) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Provides: perl(Getopt::Long) = 2.50 \ +Provides: perl(Getopt::Long::CallBack) \ +Provides: perl(Getopt::Long::Parser) \ +%{nil} +%global gendep_perl_HTTP_Tiny \ +Requires: perl(Errno) \ +Requires: perl(IO::Socket) \ +Requires: perl(Socket) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(HTTP::Tiny) = 0.076 \ +%{nil} +%global gendep_perl_IO \ +Requires: perl(:VERSION) >= 5.8.0 \ +Requires: perl(Carp) \ +Requires: perl(Errno) \ +Requires: perl(Exporter) \ +Requires: perl(Fcntl) \ +Requires: perl(File::Spec) \ +Requires: perl(File::stat) \ +Requires: perl(IO) \ +Requires: perl(IO::File) \ +Requires: perl(IO::Handle) \ +Requires: perl(IO::Seekable) \ +Requires: perl(IO::Socket) \ +Requires: perl(IO::Socket::INET) \ +Requires: perl(IO::Socket::UNIX) \ +Requires: perl(SelectSaver) \ +Requires: perl(Socket) >= 1.3 \ +Requires: perl(Symbol) \ +Requires: perl(Tie::Hash) \ +Requires: perl(XSLoader) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Requires: perl(warnings::register) \ +Provides: perl(IO) = 1.40 \ +Provides: perl(IO::Dir) = 1.40 \ +Provides: perl(IO::File) = 1.40 \ +Provides: perl(IO::Handle) = 1.40 \ +Provides: perl(IO::Pipe) = 1.40 \ +Provides: perl(IO::Pipe::End) \ +Provides: perl(IO::Poll) = 1.40 \ +Provides: perl(IO::Seekable) = 1.40 \ +Provides: perl(IO::Select) = 1.40 \ +Provides: perl(IO::Socket) = 1.40 \ +Provides: perl(IO::Socket::INET) = 1.40 \ +Provides: perl(IO::Socket::UNIX) = 1.40 \ +%{nil} +%global gendep_perl_IO_Compress \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(Compress::Raw::Bzip2) >= 2.084 \ +Requires: perl(Compress::Raw::Zlib) >= 2.084 \ +Requires: perl(Config) \ +Requires: perl(Encode) \ +Requires: perl(Exporter) \ +Requires: perl(Fcntl) \ +Requires: perl(File::GlobMapper) \ +Requires: perl(File::Spec) \ +Requires: perl(IO::Compress::Adapter::Bzip2) >= 2.084 \ +Requires: perl(IO::Compress::Adapter::Deflate) >= 2.084 \ +Requires: perl(IO::Compress::Adapter::Identity) >= 2.084 \ +Requires: perl(IO::Compress::Base) >= 2.084 \ +Requires: perl(IO::Compress::Base::Common) >= 2.084 \ +Requires: perl(IO::Compress::Gzip) >= 2.084 \ +Requires: perl(IO::Compress::Gzip::Constants) >= 2.084 \ +Requires: perl(IO::Compress::RawDeflate) >= 2.084 \ +Requires: perl(IO::Compress::Zip::Constants) >= 2.084 \ +Requires: perl(IO::Compress::Zlib::Constants) >= 2.084 \ +Requires: perl(IO::Compress::Zlib::Extra) >= 2.084 \ +Requires: perl(IO::File) \ +Requires: perl(IO::Handle) \ +Requires: perl(IO::Uncompress::Adapter::Bunzip2) >= 2.084 \ +Requires: perl(IO::Uncompress::Adapter::Identity) >= 2.084 \ +Requires: perl(IO::Uncompress::Adapter::Inflate) >= 2.084 \ +Requires: perl(IO::Uncompress::Base) >= 2.084 \ +Requires: perl(IO::Uncompress::Gunzip) >= 2.084 \ +Requires: perl(IO::Uncompress::Inflate) >= 2.084 \ +Requires: perl(IO::Uncompress::RawInflate) >= 2.084 \ +Requires: perl(IO::Uncompress::Unzip) >= 2.084 \ +Requires: perl(List::Util) \ +Requires: perl(POSIX) \ +Requires: perl(Scalar::Util) \ +Requires: perl(Symbol) \ +Requires: perl(bytes) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(utf8) \ +Requires: perl(warnings) \ +Provides: perl(Compress::Zlib) = 2.084 \ +Provides: perl(File::GlobMapper) = 1.001 \ +Provides: perl(IO::Compress::Adapter::Bzip2) = 2.084 \ +Provides: perl(IO::Compress::Adapter::Deflate) = 2.084 \ +Provides: perl(IO::Compress::Adapter::Identity) = 2.084 \ +Provides: perl(IO::Compress::Base) = 2.084 \ +Provides: perl(IO::Compress::Base::Common) = 2.084 \ +Provides: perl(IO::Compress::Bzip2) = 2.084 \ +Provides: perl(IO::Compress::Deflate) = 2.084 \ +Provides: perl(IO::Compress::Gzip) = 2.084 \ +Provides: perl(IO::Compress::Gzip::Constants) = 2.084 \ +Provides: perl(IO::Compress::RawDeflate) = 2.084 \ +Provides: perl(IO::Compress::Zip) = 2.084 \ +Provides: perl(IO::Compress::Zip::Constants) = 2.084 \ +Provides: perl(IO::Compress::Zlib::Constants) = 2.084 \ +Provides: perl(IO::Compress::Zlib::Extra) = 2.084 \ +Provides: perl(IO::Uncompress::Adapter::Bunzip2) = 2.084 \ +Provides: perl(IO::Uncompress::Adapter::Identity) = 2.084 \ +Provides: perl(IO::Uncompress::Adapter::Inflate) = 2.084 \ +Provides: perl(IO::Uncompress::AnyInflate) = 2.084 \ +Provides: perl(IO::Uncompress::AnyUncompress) = 2.084 \ +Provides: perl(IO::Uncompress::Base) = 2.084 \ +Provides: perl(IO::Uncompress::Bunzip2) \ +Provides: perl(IO::Uncompress::Bunzip2) = 2.084 \ +Provides: perl(IO::Uncompress::Gunzip) = 2.084 \ +Provides: perl(IO::Uncompress::Inflate) = 2.084 \ +Provides: perl(IO::Uncompress::RawInflate) = 2.084 \ +Provides: perl(IO::Uncompress::Unzip) = 2.084 \ +Provides: perl(U64) \ +Provides: perl(Zlib::OldDeflate) \ +Provides: perl(Zlib::OldInflate) \ +%{nil} +%global gendep_perl_IO_Socket_IP \ +Requires: perl(Carp) \ +Requires: perl(Errno) \ +Requires: perl(IO::Socket) \ +Requires: perl(IO::Socket::IP) \ +Requires: perl(POSIX) \ +Requires: perl(Socket) >= 1.97 \ +Requires: perl(base) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(IO::Socket::IP) = 0.39 \ +%{nil} +%global gendep_perl_IO_Zlib \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(Fcntl) \ +Requires: perl(Symbol) \ +Requires: perl(Tie::Handle) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(IO::Zlib) = 1.10 \ +%{nil} +%global gendep_perl_IO_debuginfo \ +%{nil} +%global gendep_perl_IPC_Cmd \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(File::Spec) \ +Requires: perl(Locale::Maketext::Simple) \ +Requires: perl(Module::Load::Conditional) \ +Requires: perl(Params::Check) \ +Requires: perl(Symbol) \ +Requires: perl(Text::ParseWords) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(IPC::Cmd) = 1.02 \ +%{nil} +%global gendep_perl_IPC_SysV \ +Requires: perl(Carp) \ +Requires: perl(Class::Struct) \ +Requires: perl(Config) \ +Requires: perl(Exporter) \ +Requires: perl(IPC::SysV) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(IPC::Msg) = 2.07 \ +Provides: perl(IPC::Msg::stat) \ +Provides: perl(IPC::Semaphore) = 2.07 \ +Provides: perl(IPC::Semaphore::stat) \ +Provides: perl(IPC::SharedMem) = 2.07 \ +Provides: perl(IPC::SharedMem::stat) \ +Provides: perl(IPC::SysV) = 2.07 \ +%{nil} +%global gendep_perl_IPC_SysV_debuginfo \ +%{nil} +%global gendep_perl_JSON_PP \ +Requires: perl(:VERSION) >= 5.5.0 \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(Getopt::Long) \ +Requires: perl(JSON::PP) \ +Requires: perl(JSON::PP::Boolean) \ +Requires: perl(bytes) \ +Requires: perl(constant) \ +Requires: perl(overload) \ +Requires: perl(strict) \ +Provides: perl(JSON::PP) = 4.02 \ +Provides: perl(JSON::PP::Boolean) = 4.02 \ +Provides: perl(JSON::PP::IncrParser) = 1.01 \ +%{nil} +%global gendep_perl_Locale_Maketext \ +Requires: perl(Carp) \ +Requires: perl(I18N::LangTags) \ +Requires: perl(I18N::LangTags::Detect) \ +Requires: perl(Locale::Maketext) \ +Requires: perl(integer) \ +Requires: perl(strict) \ +Provides: perl(Locale::Maketext) = 1.29 \ +Provides: perl(Locale::Maketext::Guts) = 1.20 \ +Provides: perl(Locale::Maketext::GutsLoader) = 1.20 \ +%{nil} +%global gendep_perl_Locale_Maketext_Simple \ +Requires: perl(:VERSION) >= 5.5.0 \ +Requires: perl(Locale::Maketext) \ +Requires: perl(base) \ +Requires: perl(strict) \ +Provides: perl(Locale::Maketext::Simple) = 0.21 \ +%{nil} +%global gendep_perl_MIME_Base64 \ +Requires: perl(Exporter) \ +Requires: perl(MIME::Base64) \ +Requires: perl(XSLoader) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(MIME::Base64) = 3.15 \ +Provides: perl(MIME::QuotedPrint) = 3.13 \ +%{nil} +%global gendep_perl_MIME_Base64_debuginfo \ +%{nil} +%global gendep_perl_Math_BigInt \ +Requires: perl(:VERSION) >= 5.6.1 \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(Math::BigInt) \ +Requires: perl(Math::BigInt::Lib) \ +Requires: perl(constant) \ +Requires: perl(integer) \ +Requires: perl(overload) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Math::BigFloat) = 1.999816 \ +Provides: perl(Math::BigInt) = 1.999816 \ +Provides: perl(Math::BigInt::Calc) = 1.999816 \ +Provides: perl(Math::BigInt::Lib) = 1.999816 \ +%{nil} +%global gendep_perl_Math_BigInt_FastCalc \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Math::BigInt::Calc) >= 1.999801 \ +Requires: perl(XSLoader) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Math::BigInt::FastCalc) = 0.5008 \ +%{nil} +%global gendep_perl_Math_BigInt_FastCalc_debuginfo \ +%{nil} +%global gendep_perl_Math_BigRat \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(Math::BigFloat) >= 1.999718 \ +Requires: perl(overload) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Math::BigRat) = 0.2614 \ +%{nil} +%global gendep_perl_Math_Complex \ +Requires: perl(Config) \ +Requires: perl(Exporter) \ +Requires: perl(Math::Complex) >= 1.59 \ +Requires: perl(Scalar::Util) \ +Requires: perl(overload) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Math::Complex) = 1.59 \ +Provides: perl(Math::Trig) = 1.23 \ +%{nil} +%global gendep_perl_Memoize \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Exporter) \ +Requires: perl(NDBM_File) \ +Requires: perl(SDBM_File) \ +Requires: perl(Storable) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(Memoize) = 1.03 \ +Provides: perl(Memoize::AnyDBM_File) = 1.03 \ +Provides: perl(Memoize::Expire) = 1.03 \ +Provides: perl(Memoize::ExpireFile) = 1.03 \ +Provides: perl(Memoize::ExpireTest) = 1.03 \ +Provides: perl(Memoize::NDBM_File) = 1.03 \ +Provides: perl(Memoize::SDBM_File) = 1.03 \ +Provides: perl(Memoize::Storable) = 1.03 \ +%{nil} +%global gendep_perl_Module_CoreList \ +Requires: perl(Module::CoreList) \ +Requires: perl(strict) \ +Requires: perl(version) \ +Requires: perl(warnings) \ +Provides: perl(Module::CoreList) = 5.20190522 \ +Provides: perl(Module::CoreList::Utils) = 5.20190522 \ +%{nil} +%global gendep_perl_Module_CoreList_tools \ +Requires: perl(Getopt::Long) \ +Requires: perl(List::Util) \ +Requires: perl(Module::CoreList) \ +Requires: perl(Pod::Usage) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +%{nil} +%global gendep_perl_Module_Load \ +Requires: perl(File::Spec) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Module::Load) = 0.34 \ +%{nil} +%global gendep_perl_Module_Load_Conditional \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(File::Spec) \ +Requires: perl(FileHandle) \ +Requires: perl(Locale::Maketext::Simple) \ +Requires: perl(Module::Load) \ +Requires: perl(Module::Metadata) \ +Requires: perl(Params::Check) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(version) \ +Provides: perl(Module::Load::Conditional) = 0.68 \ +%{nil} +%global gendep_perl_Module_Loaded \ +Requires: perl(Carp) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(Module::Loaded) = 0.08 \ +%{nil} +%global gendep_perl_Module_Metadata \ +Requires: perl(Carp) \ +Requires: perl(File::Find) \ +Requires: perl(File::Spec) \ +Requires: perl(strict) \ +Requires: perl(version) >= 0.87 \ +Requires: perl(warnings) \ +Provides: perl(Module::Metadata) = 1.000036 \ +%{nil} +%global gendep_perl_Net_Ping \ +Requires: perl(:VERSION) >= 5.2.0 \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(Fcntl) \ +Requires: perl(FileHandle) \ +Requires: perl(POSIX) \ +Requires: perl(Socket) \ +Requires: perl(Time::HiRes) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Provides: perl(Net::Ping) = 2.71 \ +%{nil} +%global gendep_perl_Params_Check \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(Locale::Maketext::Simple) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(Params::Check) = 0.38 \ +%{nil} +%global gendep_perl_PathTools \ +Requires: perl(Cwd) \ +Requires: perl(Exporter) \ +Requires: perl(File::Spec) \ +Requires: perl(File::Spec::Unix) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Provides: perl(Cwd) = 3.78 \ +Provides: perl(File::Spec) = 3.78 \ +Provides: perl(File::Spec::AmigaOS) = 3.78 \ +Provides: perl(File::Spec::Cygwin) = 3.78 \ +Provides: perl(File::Spec::Epoc) = 3.78 \ +Provides: perl(File::Spec::Functions) = 3.78 \ +Provides: perl(File::Spec::Mac) = 3.78 \ +Provides: perl(File::Spec::OS2) = 3.78 \ +Provides: perl(File::Spec::Unix) = 3.78 \ +Provides: perl(File::Spec::Win32) = 3.78 \ +%{nil} +%global gendep_perl_PathTools_debuginfo \ +%{nil} +%global gendep_perl_Perl_OSType \ +Requires: perl(Exporter) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Perl::OSType) = 1.010 \ +%{nil} +%global gendep_perl_PerlIO_via_QuotedPrint \ +Requires: perl(MIME::QuotedPrint) \ +Requires: perl(strict) \ +Provides: perl(PerlIO::via::QuotedPrint) = 0.08 \ +%{nil} +%global gendep_perl_Pod_Checker \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(Getopt::Long) \ +Requires: perl(Pod::Checker) \ +Requires: perl(Pod::Simple::Methody) \ +Requires: perl(Pod::Usage) \ +Requires: perl(base) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Pod::Checker) = 1.73 \ +%{nil} +%global gendep_perl_Pod_Escapes \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Exporter) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Provides: perl(Pod::Escapes) = 1.07 \ +%{nil} +%global gendep_perl_Pod_Html \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Cwd) \ +Requires: perl(Exporter) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Spec) \ +Requires: perl(File::Spec::Unix) \ +Requires: perl(Getopt::Long) \ +Requires: perl(Pod::Html) \ +Requires: perl(Pod::Simple::Search) \ +Requires: perl(Pod::Simple::SimpleTree) \ +Requires: perl(Pod::Simple::XHTML) \ +Requires: perl(locale) \ +Requires: perl(parent) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Pod::Html) = 1.24 \ +Provides: perl(Pod::Simple::XHTML::LocalPodLinks) \ +%{nil} +%global gendep_perl_Pod_Parser \ +Requires: perl(:VERSION) >= 5.5.0 \ +Requires: perl(Carp) \ +Requires: perl(Cwd) \ +Requires: perl(Exporter) \ +Requires: perl(File::Find) \ +Requires: perl(File::Spec) \ +Requires: perl(Getopt::Long) \ +Requires: perl(Pod::InputObjects) \ +Requires: perl(Pod::Parser) >= 1.04 \ +Requires: perl(Pod::Select) \ +Requires: perl(Pod::Usage) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(Pod::Cache) \ +Provides: perl(Pod::Cache::Item) \ +Provides: perl(Pod::Find) = 1.63 \ +Provides: perl(Pod::Hyperlink) \ +Provides: perl(Pod::InputObjects) = 1.63 \ +Provides: perl(Pod::InputSource) \ +Provides: perl(Pod::InteriorSequence) \ +Provides: perl(Pod::List) \ +Provides: perl(Pod::Paragraph) \ +Provides: perl(Pod::ParseTree) \ +Provides: perl(Pod::ParseUtils) = 1.63 \ +Provides: perl(Pod::Parser) = 1.63 \ +Provides: perl(Pod::PlainText) = 2.07 \ +Provides: perl(Pod::Select) = 1.63 \ +%{nil} +%global gendep_perl_Pod_Perldoc \ +Requires: perl(:VERSION) >= 5.0.0 \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Encode) \ +Requires: perl(Fcntl) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Spec::Functions) \ +Requires: perl(IO::Select) \ +Requires: perl(Pod::Man) >= 2.18 \ +Requires: perl(Pod::Perldoc) \ +Requires: perl(Pod::Perldoc::BaseTo) \ +Requires: perl(Pod::Perldoc::GetOptsOO) \ +Requires: perl(Pod::Simple::RTF) \ +Requires: perl(Pod::Simple::XMLOutStream) \ +Requires: perl(Pod::Text) \ +Requires: perl(Pod::Text::Color) \ +Requires: perl(Pod::Text::Termcap) \ +Requires: perl(parent) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Provides: perl(Pod::Perldoc) = 3.2801 \ +Provides: perl(Pod::Perldoc::BaseTo) = 3.28 \ +Provides: perl(Pod::Perldoc::GetOptsOO) = 3.28 \ +Provides: perl(Pod::Perldoc::ToANSI) = 3.28 \ +Provides: perl(Pod::Perldoc::ToChecker) = 3.28 \ +Provides: perl(Pod::Perldoc::ToMan) = 3.28 \ +Provides: perl(Pod::Perldoc::ToNroff) = 3.28 \ +Provides: perl(Pod::Perldoc::ToPod) = 3.28 \ +Provides: perl(Pod::Perldoc::ToRtf) = 3.28 \ +Provides: perl(Pod::Perldoc::ToTerm) = 3.28 \ +Provides: perl(Pod::Perldoc::ToText) = 3.28 \ +Provides: perl(Pod::Perldoc::ToTk) = 3.28 \ +Provides: perl(Pod::Perldoc::ToXml) = 3.28 \ +%{nil} +%global gendep_perl_Pod_Simple \ +Requires: perl(:VERSION) >= 5.0.0 \ +Requires: perl(:VERSION) >= 5.5.0 \ +Requires: perl(:VERSION) >= 5.8.0 \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Cwd) \ +Requires: perl(Encode) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Spec) \ +Requires: perl(Getopt::Long) \ +Requires: perl(Pod::Escapes) >= 1.04 \ +Requires: perl(Pod::Simple) \ +Requires: perl(Pod::Simple::BlackBox) \ +Requires: perl(Pod::Simple::HTML) \ +Requires: perl(Pod::Simple::LinkSection) \ +Requires: perl(Pod::Simple::Methody) \ +Requires: perl(Pod::Simple::PullParser) \ +Requires: perl(Pod::Simple::PullParserEndToken) \ +Requires: perl(Pod::Simple::PullParserStartToken) \ +Requires: perl(Pod::Simple::PullParserTextToken) \ +Requires: perl(Pod::Simple::PullParserToken) \ +Requires: perl(Pod::Simple::Search) \ +Requires: perl(Symbol) \ +Requires: perl(Text::Wrap) >= 98.112902 \ +Requires: perl(integer) \ +Requires: perl(overload) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(Pod::Simple) = 3.35 \ +Provides: perl(Pod::Simple::BlackBox) = 3.35 \ +Provides: perl(Pod::Simple::Checker) = 3.35 \ +Provides: perl(Pod::Simple::Debug) = 3.35 \ +Provides: perl(Pod::Simple::DumpAsText) = 3.35 \ +Provides: perl(Pod::Simple::DumpAsXML) = 3.35 \ +Provides: perl(Pod::Simple::HTML) = 3.35 \ +Provides: perl(Pod::Simple::HTMLBatch) = 3.35 \ +Provides: perl(Pod::Simple::HTMLLegacy) = 5.01 \ +Provides: perl(Pod::Simple::LinkSection) = 3.35 \ +Provides: perl(Pod::Simple::Methody) = 3.35 \ +Provides: perl(Pod::Simple::Progress) = 3.35 \ +Provides: perl(Pod::Simple::PullParser) = 3.35 \ +Provides: perl(Pod::Simple::PullParserEndToken) = 3.35 \ +Provides: perl(Pod::Simple::PullParserStartToken) = 3.35 \ +Provides: perl(Pod::Simple::PullParserTextToken) = 3.35 \ +Provides: perl(Pod::Simple::PullParserToken) = 3.35 \ +Provides: perl(Pod::Simple::RTF) = 3.35 \ +Provides: perl(Pod::Simple::Search) = 3.35 \ +Provides: perl(Pod::Simple::SimpleTree) = 3.35 \ +Provides: perl(Pod::Simple::Text) = 3.35 \ +Provides: perl(Pod::Simple::TextContent) = 3.35 \ +Provides: perl(Pod::Simple::TiedOutFH) = 3.35 \ +Provides: perl(Pod::Simple::Transcode) = 3.35 \ +Provides: perl(Pod::Simple::TranscodeDumb) = 3.35 \ +Provides: perl(Pod::Simple::TranscodeSmart) = 3.35 \ +Provides: perl(Pod::Simple::XHTML) = 3.35 \ +Provides: perl(Pod::Simple::XMLOutStream) = 3.35 \ +%{nil} +%global gendep_perl_Pod_Usage \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Exporter) \ +Requires: perl(File::Spec) \ +Requires: perl(Getopt::Long) \ +Requires: perl(Pod::Usage) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(Pod::Usage) = 1.69 \ +%{nil} +%global gendep_perl_Scalar_List_Utils \ +Requires: perl(Exporter) \ +Requires: perl(List::Util) \ +Requires: perl(XSLoader) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(List::Util) = 1.50 \ +Provides: perl(List::Util::XS) = 1.50 \ +Provides: perl(Scalar::Util) = 1.50 \ +Provides: perl(Sub::Util) = 1.50 \ +%{nil} +%global gendep_perl_Scalar_List_Utils_debuginfo \ +%{nil} +%global gendep_perl_SelfLoader \ +Requires: perl(:VERSION) >= 5.8.0 \ +Requires: perl(Exporter) \ +Requires: perl(IO::Handle) \ +Requires: perl(strict) \ +Provides: perl(SelfLoader) = 1.25 \ +%{nil} +%global gendep_perl_Socket \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(XSLoader) \ +Requires: perl(strict) \ +Requires: perl(warnings::register) \ +Provides: perl(Socket) = 2.027 \ +%{nil} +%global gendep_perl_Socket_debuginfo \ +%{nil} +%global gendep_perl_Storable \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(XSLoader) \ +Provides: perl(Storable) = 3.15 \ +%{nil} +%global gendep_perl_Storable_debuginfo \ +%{nil} +%global gendep_perl_Sys_Syslog \ +Requires: perl(:VERSION) >= 5.5.0 \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Exporter) \ +Requires: perl(File::Basename) \ +Requires: perl(POSIX) \ +Requires: perl(Socket) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Requires: perl(warnings::register) \ +Provides: perl(Sys::Syslog) = 0.35 \ +%{nil} +%global gendep_perl_Sys_Syslog_debuginfo \ +%{nil} +%global gendep_perl_Term_ANSIColor \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Exporter) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Term::ANSIColor) = 4.06 \ +%{nil} +%global gendep_perl_Term_Cap \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(Term::Cap) = 1.17 \ +%{nil} +%global gendep_perl_Test \ +Requires: perl(:VERSION) >= 5.4.0 \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(strict) \ +Provides: perl(Test) = 1.31 \ +%{nil} +%global gendep_perl_Test_Harness \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(App::Prove) \ +Requires: perl(App::Prove::State) \ +Requires: perl(App::Prove::State::Result) \ +Requires: perl(App::Prove::State::Result::Test) \ +Requires: perl(Benchmark) \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Exporter) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Find) \ +Requires: perl(File::Path) \ +Requires: perl(File::Spec) \ +Requires: perl(Getopt::Long) \ +Requires: perl(IO::Handle) \ +Requires: perl(IO::Select) \ +Requires: perl(POSIX) \ +Requires: perl(TAP::Base) \ +Requires: perl(TAP::Formatter::Base) \ +Requires: perl(TAP::Formatter::Console::Session) \ +Requires: perl(TAP::Formatter::File::Session) \ +Requires: perl(TAP::Formatter::Session) \ +Requires: perl(TAP::Harness) \ +Requires: perl(TAP::Harness::Env) \ +Requires: perl(TAP::Object) \ +Requires: perl(TAP::Parser::Aggregator) \ +Requires: perl(TAP::Parser::Grammar) \ +Requires: perl(TAP::Parser::Iterator) \ +Requires: perl(TAP::Parser::Iterator::Array) \ +Requires: perl(TAP::Parser::Iterator::Process) \ +Requires: perl(TAP::Parser::Iterator::Stream) \ +Requires: perl(TAP::Parser::IteratorFactory) \ +Requires: perl(TAP::Parser::Result) \ +Requires: perl(TAP::Parser::Result::Bailout) \ +Requires: perl(TAP::Parser::Result::Comment) \ +Requires: perl(TAP::Parser::Result::Plan) \ +Requires: perl(TAP::Parser::Result::Pragma) \ +Requires: perl(TAP::Parser::Result::Test) \ +Requires: perl(TAP::Parser::Result::Unknown) \ +Requires: perl(TAP::Parser::Result::Version) \ +Requires: perl(TAP::Parser::Result::YAML) \ +Requires: perl(TAP::Parser::ResultFactory) \ +Requires: perl(TAP::Parser::Scheduler::Job) \ +Requires: perl(TAP::Parser::Scheduler::Spinner) \ +Requires: perl(TAP::Parser::Source) \ +Requires: perl(TAP::Parser::SourceHandler) \ +Requires: perl(TAP::Parser::SourceHandler::Executable) \ +Requires: perl(TAP::Parser::SourceHandler::File) \ +Requires: perl(TAP::Parser::SourceHandler::Handle) \ +Requires: perl(TAP::Parser::SourceHandler::Perl) \ +Requires: perl(TAP::Parser::SourceHandler::RawTAP) \ +Requires: perl(TAP::Parser::YAMLish::Reader) \ +Requires: perl(TAP::Parser::YAMLish::Writer) \ +Requires: perl(Text::ParseWords) \ +Requires: perl(base) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(App::Prove) = 3.42 \ +Provides: perl(App::Prove::State) = 3.42 \ +Provides: perl(App::Prove::State::Result) = 3.42 \ +Provides: perl(App::Prove::State::Result::Test) = 3.42 \ +Provides: perl(TAP::Base) = 3.42 \ +Provides: perl(TAP::Formatter::Base) = 3.42 \ +Provides: perl(TAP::Formatter::Color) = 3.42 \ +Provides: perl(TAP::Formatter::Console) = 3.42 \ +Provides: perl(TAP::Formatter::Console::ParallelSession) = 3.42 \ +Provides: perl(TAP::Formatter::Console::Session) = 3.42 \ +Provides: perl(TAP::Formatter::File) = 3.42 \ +Provides: perl(TAP::Formatter::File::Session) = 3.42 \ +Provides: perl(TAP::Formatter::Session) = 3.42 \ +Provides: perl(TAP::Harness) = 3.42 \ +Provides: perl(TAP::Harness::Env) = 3.42 \ +Provides: perl(TAP::Object) = 3.42 \ +Provides: perl(TAP::Parser) = 3.42 \ +Provides: perl(TAP::Parser::Aggregator) = 3.42 \ +Provides: perl(TAP::Parser::Grammar) = 3.42 \ +Provides: perl(TAP::Parser::Iterator) = 3.42 \ +Provides: perl(TAP::Parser::Iterator::Array) = 3.42 \ +Provides: perl(TAP::Parser::Iterator::Process) = 3.42 \ +Provides: perl(TAP::Parser::Iterator::Stream) = 3.42 \ +Provides: perl(TAP::Parser::IteratorFactory) = 3.42 \ +Provides: perl(TAP::Parser::Multiplexer) = 3.42 \ +Provides: perl(TAP::Parser::Result) = 3.42 \ +Provides: perl(TAP::Parser::Result::Bailout) = 3.42 \ +Provides: perl(TAP::Parser::Result::Comment) = 3.42 \ +Provides: perl(TAP::Parser::Result::Plan) = 3.42 \ +Provides: perl(TAP::Parser::Result::Pragma) = 3.42 \ +Provides: perl(TAP::Parser::Result::Test) = 3.42 \ +Provides: perl(TAP::Parser::Result::Unknown) = 3.42 \ +Provides: perl(TAP::Parser::Result::Version) = 3.42 \ +Provides: perl(TAP::Parser::Result::YAML) = 3.42 \ +Provides: perl(TAP::Parser::ResultFactory) = 3.42 \ +Provides: perl(TAP::Parser::Scheduler) = 3.42 \ +Provides: perl(TAP::Parser::Scheduler::Job) = 3.42 \ +Provides: perl(TAP::Parser::Scheduler::Spinner) = 3.42 \ +Provides: perl(TAP::Parser::Source) = 3.42 \ +Provides: perl(TAP::Parser::SourceHandler) = 3.42 \ +Provides: perl(TAP::Parser::SourceHandler::Executable) = 3.42 \ +Provides: perl(TAP::Parser::SourceHandler::File) = 3.42 \ +Provides: perl(TAP::Parser::SourceHandler::Handle) = 3.42 \ +Provides: perl(TAP::Parser::SourceHandler::Perl) = 3.42 \ +Provides: perl(TAP::Parser::SourceHandler::RawTAP) = 3.42 \ +Provides: perl(TAP::Parser::YAMLish::Reader) = 3.42 \ +Provides: perl(TAP::Parser::YAMLish::Writer) = 3.42 \ +Provides: perl(Test::Harness) = 3.42 \ +%{nil} +%global gendep_perl_Test_Simple \ +Requires: perl(:VERSION) >= 5.5.0 \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Exporter) \ +Requires: perl(File::Spec) \ +Requires: perl(File::Temp) \ +Requires: perl(IO::Handle) \ +Requires: perl(List::Util) \ +Requires: perl(POSIX) \ +Requires: perl(Scalar::Util) \ +Requires: perl(Storable) \ +Requires: perl(Symbol) \ +Requires: perl(Test2::API) \ +Requires: perl(Test2::API::Context) \ +Requires: perl(Test2::API::Instance) \ +Requires: perl(Test2::API::Stack) \ +Requires: perl(Test2::Event::Bail) \ +Requires: perl(Test2::Event::Diag) \ +Requires: perl(Test2::Event::Exception) \ +Requires: perl(Test2::Event::Note) \ +Requires: perl(Test2::Event::Ok) \ +Requires: perl(Test2::Event::Plan) \ +Requires: perl(Test2::Event::Skip) \ +Requires: perl(Test2::Event::Subtest) \ +Requires: perl(Test2::Event::Waiting) \ +Requires: perl(Test2::EventFacet::About) \ +Requires: perl(Test2::EventFacet::Amnesty) \ +Requires: perl(Test2::EventFacet::Assert) \ +Requires: perl(Test2::EventFacet::Control) \ +Requires: perl(Test2::EventFacet::Error) \ +Requires: perl(Test2::EventFacet::Hub) \ +Requires: perl(Test2::EventFacet::Info) \ +Requires: perl(Test2::EventFacet::Meta) \ +Requires: perl(Test2::EventFacet::Parent) \ +Requires: perl(Test2::EventFacet::Plan) \ +Requires: perl(Test2::EventFacet::Trace) \ +Requires: perl(Test2::Hub) \ +Requires: perl(Test2::Hub::Interceptor) \ +Requires: perl(Test2::Hub::Interceptor::Terminator) \ +Requires: perl(Test2::Hub::Subtest) \ +Requires: perl(Test2::Util) \ +Requires: perl(Test2::Util::ExternalMeta) \ +Requires: perl(Test2::Util::Facets2Legacy) \ +Requires: perl(Test2::Util::HashBase) \ +Requires: perl(Test2::Util::Trace) \ +Requires: perl(Test::Builder) \ +Requires: perl(Test::Builder::Formatter) \ +Requires: perl(Test::Builder::Module) \ +Requires: perl(Test::Builder::Tester) \ +Requires: perl(Test::Builder::TodoDiag) \ +Requires: perl(Test::More) \ +Requires: perl(Test::Tester::Capture) \ +Requires: perl(Test::Tester::CaptureRunner) \ +Requires: perl(Test::Tester::Delegate) \ +Requires: perl(base) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Provides: perl(Test2) = 1.302162 \ +Provides: perl(Test2::API) = 1.302162 \ +Provides: perl(Test2::API::Breakage) = 1.302162 \ +Provides: perl(Test2::API::Context) = 1.302162 \ +Provides: perl(Test2::API::Instance) = 1.302162 \ +Provides: perl(Test2::API::Stack) = 1.302162 \ +Provides: perl(Test2::Event) = 1.302162 \ +Provides: perl(Test2::Event::Bail) = 1.302162 \ +Provides: perl(Test2::Event::Diag) = 1.302162 \ +Provides: perl(Test2::Event::Encoding) = 1.302162 \ +Provides: perl(Test2::Event::Exception) = 1.302162 \ +Provides: perl(Test2::Event::Fail) = 1.302162 \ +Provides: perl(Test2::Event::Generic) = 1.302162 \ +Provides: perl(Test2::Event::Note) = 1.302162 \ +Provides: perl(Test2::Event::Ok) = 1.302162 \ +Provides: perl(Test2::Event::Pass) = 1.302162 \ +Provides: perl(Test2::Event::Plan) = 1.302162 \ +Provides: perl(Test2::Event::Skip) = 1.302162 \ +Provides: perl(Test2::Event::Subtest) = 1.302162 \ +Provides: perl(Test2::Event::TAP::Version) = 1.302162 \ +Provides: perl(Test2::Event::V2) = 1.302162 \ +Provides: perl(Test2::Event::Waiting) = 1.302162 \ +Provides: perl(Test2::EventFacet) = 1.302162 \ +Provides: perl(Test2::EventFacet::About) = 1.302162 \ +Provides: perl(Test2::EventFacet::Amnesty) = 1.302162 \ +Provides: perl(Test2::EventFacet::Assert) = 1.302162 \ +Provides: perl(Test2::EventFacet::Control) = 1.302162 \ +Provides: perl(Test2::EventFacet::Error) = 1.302162 \ +Provides: perl(Test2::EventFacet::Hub) = 1.302162 \ +Provides: perl(Test2::EventFacet::Info) = 1.302162 \ +Provides: perl(Test2::EventFacet::Info::Table) \ +Provides: perl(Test2::EventFacet::Meta) = 1.302162 \ +Provides: perl(Test2::EventFacet::Parent) = 1.302162 \ +Provides: perl(Test2::EventFacet::Plan) = 1.302162 \ +Provides: perl(Test2::EventFacet::Render) = 1.302162 \ +Provides: perl(Test2::EventFacet::Trace) = 1.302162 \ +Provides: perl(Test2::Formatter) = 1.302162 \ +Provides: perl(Test2::Formatter::TAP) = 1.302162 \ +Provides: perl(Test2::Hub) = 1.302162 \ +Provides: perl(Test2::Hub::Interceptor) = 1.302162 \ +Provides: perl(Test2::Hub::Interceptor::Terminator) = 1.302162 \ +Provides: perl(Test2::Hub::Subtest) = 1.302162 \ +Provides: perl(Test2::IPC) = 1.302162 \ +Provides: perl(Test2::IPC::Driver) = 1.302162 \ +Provides: perl(Test2::IPC::Driver::Files) = 1.302162 \ +Provides: perl(Test2::Tools::Tiny) = 1.302162 \ +Provides: perl(Test2::Util) = 1.302162 \ +Provides: perl(Test2::Util::ExternalMeta) = 1.302162 \ +Provides: perl(Test2::Util::Facets2Legacy) = 1.302162 \ +Provides: perl(Test2::Util::HashBase) = 1.302162 \ +Provides: perl(Test2::Util::Trace) = 1.302162 \ +Provides: perl(Test::Builder) = 1.302162 \ +Provides: perl(Test::Builder::Formatter) = 1.302162 \ +Provides: perl(Test::Builder::IO::Scalar) = 2.114 \ +Provides: perl(Test::Builder::Module) = 1.302162 \ +Provides: perl(Test::Builder::Tester) = 1.302162 \ +Provides: perl(Test::Builder::Tester::Color) = 1.302162 \ +Provides: perl(Test::Builder::Tester::Tie) \ +Provides: perl(Test::Builder::TodoDiag) = 1.302162 \ +Provides: perl(Test::More) = 1.302162 \ +Provides: perl(Test::Simple) = 1.302162 \ +Provides: perl(Test::Tester) = 1.302162 \ +Provides: perl(Test::Tester::Capture) = 1.302162 \ +Provides: perl(Test::Tester::CaptureRunner) = 1.302162 \ +Provides: perl(Test::Tester::Delegate) = 1.302162 \ +Provides: perl(Test::use::ok) = 1.302162 \ +Provides: perl(ok) = 1.302162 \ +%{nil} +%global gendep_perl_Text_Balanced \ +Requires: perl(:VERSION) >= 5.5.0 \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(SelfLoader) \ +Requires: perl(overload) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Provides: perl(Text::Balanced) = 2.03 \ +Provides: perl(Text::Balanced::ErrorMsg) \ +Provides: perl(Text::Balanced::Extractor) \ +%{nil} +%global gendep_perl_Text_ParseWords \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Exporter) \ +Requires: perl(strict) \ +Provides: perl(Text::ParseWords) = 3.30 \ +%{nil} +%global gendep_perl_Text_Tabs_Wrap \ +Requires: perl(:VERSION) >= 5.10.0 \ +Requires: perl(Exporter) \ +Requires: perl(Text::Tabs) \ +Requires: perl(re) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings::register) \ +Provides: perl(Text::Tabs) = 2013.0523 \ +Provides: perl(Text::Wrap) = 2013.0523 \ +%{nil} +%global gendep_perl_Thread_Queue \ +Requires: perl(Scalar::Util) >= 1.10 \ +Requires: perl(strict) \ +Requires: perl(threads::shared) >= 1.21 \ +Requires: perl(warnings) \ +Provides: perl(Thread::Queue) = 3.13 \ +%{nil} +%global gendep_perl_Time_HiRes \ +Requires: perl(Exporter) \ +Requires: perl(XSLoader) \ +Requires: perl(strict) \ +Provides: perl(Time::HiRes) = 1.9760 \ +%{nil} +%global gendep_perl_Time_HiRes_debuginfo \ +%{nil} +%global gendep_perl_Time_Local \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(constant) \ +Requires: perl(parent) \ +Requires: perl(strict) \ +Provides: perl(Time::Local) = 1.28 \ +%{nil} +%global gendep_perl_Time_Piece \ +Requires: perl(Carp) \ +Requires: perl(Exporter) >= 5.57 \ +Requires: perl(Scalar::Util) \ +Requires: perl(Time::Local) \ +Requires: perl(Time::Seconds) \ +Requires: perl(XSLoader) \ +Requires: perl(constant) \ +Requires: perl(integer) \ +Requires: perl(overload) \ +Requires: perl(strict) \ +Provides: perl(Time::Piece) = 1.33 \ +Provides: perl(Time::Seconds) = 1.33 \ +%{nil} +%global gendep_perl_Time_Piece_debuginfo \ +%{nil} +%global gendep_perl_Unicode_Collate \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(File::Spec) \ +Requires: perl(Unicode::Collate) \ +Requires: perl(XSLoader) \ +Requires: perl(base) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Unicode::Collate) = 1.27 \ +Provides: perl(Unicode::Collate::CJK::Big5) = 1.27 \ +Provides: perl(Unicode::Collate::CJK::GB2312) = 1.27 \ +Provides: perl(Unicode::Collate::CJK::JISX0208) = 1.27 \ +Provides: perl(Unicode::Collate::CJK::Korean) = 1.27 \ +Provides: perl(Unicode::Collate::CJK::Pinyin) = 1.27 \ +Provides: perl(Unicode::Collate::CJK::Stroke) = 1.27 \ +Provides: perl(Unicode::Collate::CJK::Zhuyin) = 1.27 \ +Provides: perl(Unicode::Collate::Locale) = 1.27 \ +%{nil} +%global gendep_perl_Unicode_Collate_debuginfo \ +%{nil} +%global gendep_perl_Unicode_Normalize \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(Exporter) \ +Requires: perl(XSLoader) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Unicode::Normalize) = 1.26 \ +%{nil} +%global gendep_perl_Unicode_Normalize_debuginfo \ +%{nil} +%global gendep_perl_autodie \ +Requires: perl(:VERSION) >= 5.8.0 \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(Exporter) >= 5.57 \ +Requires: perl(Fatal) \ +Requires: perl(Scalar::Util) \ +Requires: perl(Tie::RefHash) \ +Requires: perl(autodie::Scope::Guard) \ +Requires: perl(autodie::Scope::GuardStack) \ +Requires: perl(autodie::Util) \ +Requires: perl(autodie::exception) \ +Requires: perl(constant) \ +Requires: perl(lib) \ +Requires: perl(overload) \ +Requires: perl(parent) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Fatal) = 2.29 \ +Provides: perl(autodie) = 2.29 \ +Provides: perl(autodie::Scope::Guard) = 2.29 \ +Provides: perl(autodie::Scope::GuardStack) = 2.29 \ +Provides: perl(autodie::Util) = 2.29 \ +Provides: perl(autodie::exception) = 2.29002 \ +Provides: perl(autodie::exception::system) = 2.29 \ +Provides: perl(autodie::hints) = 2.29001 \ +Provides: perl(autodie::skip) = 2.29 \ +%{nil} +%global gendep_perl_bignum \ +Requires: perl(:VERSION) >= 5.10.0 \ +Requires: perl(Exporter) \ +Requires: perl(Math::BigFloat) \ +Requires: perl(Math::BigInt) \ +Requires: perl(bigint) \ +Requires: perl(constant) \ +Requires: perl(overload) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Math::BigFloat::Trace) = 0.51 \ +Provides: perl(Math::BigInt::Trace) = 0.51 \ +Provides: perl(bigint) = 0.51 \ +Provides: perl(bignum) = 0.51 \ +Provides: perl(bigrat) = 0.51 \ +%{nil} +%global gendep_perl_constant \ +Requires: perl(:VERSION) >= 5.8.0 \ +Requires: perl(strict) \ +Requires: perl(warnings::register) \ +Provides: perl(constant) = 1.33 \ +%{nil} +%global gendep_perl_debuginfo \ +%{nil} +%global gendep_perl_debugsource \ +%{nil} +%global gendep_perl_devel \ +Requires: perl(Config) \ +Requires: perl(ExtUtils::Constant) \ +Requires: perl(ExtUtils::Installed) \ +Requires: perl(File::Compare) \ +Requires: perl(File::Path) \ +Requires: perl(File::Spec) \ +Requires: perl(Getopt::Long) \ +Requires: perl(Text::Wrap) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +%{nil} +%global gendep_perl_encoding \ +Requires: perl(Config) \ +Requires: perl(Encode) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(encoding) = 2.22 \ +%{nil} +%global gendep_perl_experimental \ +Requires: perl(Carp) \ +Requires: perl(strict) \ +Requires: perl(version) \ +Requires: perl(warnings) \ +Provides: perl(experimental) = 0.020 \ +%{nil} +%global gendep_perl_interpreter \ +Requires: perl(:VERSION) >= 5.0.0 \ +Requires: perl(:VERSION) >= 5.10.1 \ +Requires: perl(:VERSION) >= 5.3.0 \ +Requires: perl(:VERSION) >= 5.5.0 \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(:VERSION) >= 5.7.0 \ +Requires: perl(:VERSION) >= 5.7.3 \ +Requires: perl(:VERSION) >= 5.8.0 \ +Requires: perl(:VERSION) >= 5.9.1 \ +Requires: perl(:VERSION) >= 5.9.4 \ +Requires: perl(B) \ +Requires: perl(B::Concise) \ +Requires: perl(B::Op_private) \ +Requires: perl(B::Terse) \ +Requires: perl(Carp) \ +Requires: perl(Class::Struct) \ +Requires: perl(Config) \ +Requires: perl(Cwd) \ +Requires: perl(Exporter) \ +Requires: perl(ExtUtils::Constant::Base) \ +Requires: perl(ExtUtils::Constant::Utils) \ +Requires: perl(ExtUtils::Constant::XS) \ +Requires: perl(Fcntl) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Path) \ +Requires: perl(File::Spec) \ +Requires: perl(File::Spec::Functions) \ +Requires: perl(I18N::LangTags) \ +Requires: perl(IO::File) \ +Requires: perl(IPC::Open3) \ +Requires: perl(Opcode) >= 1.01 \ +Requires: perl(POSIX) \ +Requires: perl(Scalar::Util) >= 1.10 \ +Requires: perl(Symbol) \ +Requires: perl(Text::Tabs) \ +Requires: perl(Text::Wrap) \ +Requires: perl(Tie::Handle) \ +Requires: perl(Tie::Hash) \ +Requires: perl(Tie::StdHandle) \ +Requires: perl(Time::tm) \ +Requires: perl(Unicode::Normalize) \ +Requires: perl(XSLoader) \ +Requires: perl(_charnames) \ +Requires: perl(bytes) \ +Requires: perl(charnames) \ +Requires: perl(constant) \ +Requires: perl(feature) \ +Requires: perl(if) \ +Requires: perl(integer) \ +Requires: perl(overload) \ +Requires: perl(parent) \ +Requires: perl(re) \ +Requires: perl(strict) \ +Requires: perl(subs) \ +Requires: perl(threads) \ +Requires: perl(threads::shared) \ +Requires: perl(unicore::Name) \ +Requires: perl(utf8) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Requires: perl(warnings::register) \ +Provides: perl(AnyDBM_File) = 1.01 \ +Provides: perl(AutoLoader) = 5.74 \ +Provides: perl(AutoSplit) = 1.06 \ +Provides: perl(B) = 1.76 \ +Provides: perl(B::Concise) = 1.004 \ +Provides: perl(B::Deparse) = 1.49 \ +Provides: perl(B::OBJECT) \ +Provides: perl(B::Op_private) = 5.030000 \ +Provides: perl(B::Showlex) = 1.05 \ +Provides: perl(B::Terse) = 1.09 \ +Provides: perl(B::Xref) = 1.07 \ +Provides: perl(Benchmark) = 1.22 \ +Provides: perl(Class::Struct) = 0.65 \ +Provides: perl(Class::Struct::Tie_ISA) \ +Provides: perl(Config) = 5.030000 \ +Provides: perl(Config::Extensions) = 0.03 \ +Provides: perl(DB) = 1.08 \ +Provides: perl(DBM_Filter) = 0.06 \ +Provides: perl(DBM_Filter::compress) = 0.03 \ +Provides: perl(DBM_Filter::encode) = 0.03 \ +Provides: perl(DBM_Filter::int32) = 0.03 \ +Provides: perl(DBM_Filter::null) = 0.03 \ +Provides: perl(DBM_Filter::utf8) = 0.03 \ +Provides: perl(DirHandle) = 1.05 \ +Provides: perl(Dumpvalue) = 1.19 \ +Provides: perl(DynaLoader) = 1.45 \ +Provides: perl(EVERY::LAST) \ +Provides: perl(English) = 1.10 \ +Provides: perl(ExtUtils::Constant) = 0.25 \ +Provides: perl(ExtUtils::Constant::Base) = 0.06 \ +Provides: perl(ExtUtils::Constant::ProxySubs) = 0.09 \ +Provides: perl(ExtUtils::Constant::Utils) = 0.04 \ +Provides: perl(ExtUtils::Constant::XS) = 0.03 \ +Provides: perl(Fcntl) = 1.13 \ +Provides: perl(File::Basename) = 2.85 \ +Provides: perl(File::Compare) = 1.1006 \ +Provides: perl(File::Copy) = 2.34 \ +Provides: perl(File::DosGlob) = 1.12 \ +Provides: perl(File::Find) = 1.36 \ +Provides: perl(File::Glob) = 1.32 \ +Provides: perl(File::stat) = 1.08 \ +Provides: perl(FileCache) = 1.10 \ +Provides: perl(FileHandle) = 2.03 \ +Provides: perl(FindBin) = 1.51 \ +Provides: perl(GDBM_File) = 1.18 \ +Provides: perl(Getopt::Std) = 1.12 \ +Provides: perl(Hash::Util) = 0.22 \ +Provides: perl(Hash::Util::FieldHash) = 1.20 \ +Provides: perl(I18N::Collate) = 1.02 \ +Provides: perl(I18N::LangTags) = 0.43 \ +Provides: perl(I18N::LangTags::Detect) = 1.07 \ +Provides: perl(I18N::LangTags::List) = 0.40 \ +Provides: perl(I18N::Langinfo) = 0.18 \ +Provides: perl(IPC::Open2) = 1.04 \ +Provides: perl(IPC::Open3) = 1.20 \ +Provides: perl(NDBM_File) = 1.15 \ +Provides: perl(NEXT) = 0.67 \ +Provides: perl(NEXT::ACTUAL) \ +Provides: perl(NEXT::ACTUAL::DISTINCT) \ +Provides: perl(NEXT::ACTUAL::UNSEEN) \ +Provides: perl(NEXT::DISTINCT) \ +Provides: perl(NEXT::DISTINCT::ACTUAL) \ +Provides: perl(NEXT::UNSEEN) \ +Provides: perl(NEXT::UNSEEN::ACTUAL) \ +Provides: perl(Net::hostent) = 1.02 \ +Provides: perl(Net::netent) = 1.01 \ +Provides: perl(Net::protoent) = 1.01 \ +Provides: perl(Net::servent) = 1.02 \ +Provides: perl(O) = 1.03 \ +Provides: perl(ODBM_File) = 1.16 \ +Provides: perl(Opcode) = 1.43 \ +Provides: perl(POSIX) = 1.88 \ +Provides: perl(POSIX::SigAction) \ +Provides: perl(POSIX::SigRt) \ +Provides: perl(POSIX::SigSet) \ +Provides: perl(PerlIO) = 1.10 \ +Provides: perl(PerlIO::encoding) = 0.27 \ +Provides: perl(PerlIO::mmap) = 0.016 \ +Provides: perl(PerlIO::scalar) = 0.30 \ +Provides: perl(PerlIO::via) = 0.17 \ +Provides: perl(Pod::Functions) = 1.13 \ +Provides: perl(SDBM_File) = 1.15 \ +Provides: perl(Safe) = 2.40 \ +Provides: perl(Search::Dict) = 1.07 \ +Provides: perl(SelectSaver) = 1.02 \ +Provides: perl(Symbol) = 1.08 \ +Provides: perl(Sys::Hostname) = 1.22 \ +Provides: perl(Term::Complete) = 1.403 \ +Provides: perl(Term::ReadLine) = 1.17 \ +Provides: perl(Term::ReadLine::Stub) \ +Provides: perl(Term::ReadLine::TermCap) \ +Provides: perl(Term::ReadLine::Tk) \ +Provides: perl(Text::Abbrev) = 1.02 \ +Provides: perl(Thread) = 3.04 \ +Provides: perl(Thread::Semaphore) = 2.13 \ +Provides: perl(Tie::Array) = 1.07 \ +Provides: perl(Tie::ExtraHash) \ +Provides: perl(Tie::File) = 1.02 \ +Provides: perl(Tie::File::Cache) \ +Provides: perl(Tie::File::Heap) \ +Provides: perl(Tie::Handle) = 4.2 \ +Provides: perl(Tie::Hash) \ +Provides: perl(Tie::Hash) = 1.05 \ +Provides: perl(Tie::Hash::NamedCapture) = 0.10 \ +Provides: perl(Tie::Memoize) = 1.1 \ +Provides: perl(Tie::RefHash) = 1.39 \ +Provides: perl(Tie::RefHash::Nestable) \ +Provides: perl(Tie::Scalar) = 1.04 \ +Provides: perl(Tie::StdArray) \ +Provides: perl(Tie::StdHandle) = 4.6 \ +Provides: perl(Tie::StdHash) \ +Provides: perl(Tie::StdScalar) \ +Provides: perl(Tie::SubstrHash) = 1.00 \ +Provides: perl(Time::gmtime) = 1.04 \ +Provides: perl(Time::localtime) = 1.03 \ +Provides: perl(Time::tm) = 1.00 \ +Provides: perl(UNIVERSAL) = 1.13 \ +Provides: perl(Unicode::UCD) = 0.72 \ +Provides: perl(User::grent) = 1.03 \ +Provides: perl(User::pwent) = 1.01 \ +Provides: perl(_charnames) = 1.45 \ +Provides: perl(attributes) = 0.33 \ +Provides: perl(autouse) = 1.11 \ +Provides: perl(base) = 2.27 \ +Provides: perl(blib) = 1.07 \ +Provides: perl(bytes) = 1.07 \ +Provides: perl(bytes_heavy.pl) \ +Provides: perl(charnames) = 1.45 \ +Provides: perl(deprecate) = 0.04 \ +Provides: perl(diagnostics) = 1.36 \ +Provides: perl(dumpvar.pl) \ +Provides: perl(encoding::warnings) = 0.13 \ +Provides: perl(feature) = 1.54 \ +Provides: perl(fields) = 2.24 \ +Provides: perl(filetest) = 1.03 \ +Provides: perl(if) = 0.0608 \ +Provides: perl(less) = 0.03 \ +Provides: perl(lib) = 0.65 \ +Provides: perl(locale) = 1.09 \ +Provides: perl(mro) = 1.22 \ +Provides: perl(ops) = 1.02 \ +Provides: perl(overload) = 1.30 \ +Provides: perl(overload::numbers) \ +Provides: perl(overloading) = 0.02 \ +Provides: perl(perl5db.pl) \ +Provides: perl(sigtrap) = 1.09 \ +Provides: perl(sort) = 2.04 \ +Provides: perl(subs) = 1.03 \ +Provides: perl(vars) = 1.05 \ +Provides: perl(vmsish) = 1.04 \ +Provides: perl(warnings::register) = 1.04 \ +%{nil} +%global gendep_perl_interpreter_debuginfo \ +%{nil} +%global gendep_perl_libnet \ +Requires: perl(:VERSION) >= 5.8.1 \ +Requires: perl(Carp) \ +Requires: perl(Errno) \ +Requires: perl(Exporter) \ +Requires: perl(Fcntl) \ +Requires: perl(FileHandle) \ +Requires: perl(IO::Select) \ +Requires: perl(IO::Socket) \ +Requires: perl(Net::Cmd) \ +Requires: perl(Net::Config) \ +Requires: perl(Net::FTP::I) \ +Requires: perl(Net::FTP::dataconn) \ +Requires: perl(Socket) \ +Requires: perl(Symbol) \ +Requires: perl(Time::Local) \ +Requires: perl(constant) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(Net::Cmd) = 3.11 \ +Provides: perl(Net::Config) = 3.11 \ +Provides: perl(Net::Domain) = 3.11 \ +Provides: perl(Net::FTP) = 3.11 \ +Provides: perl(Net::FTP::A) = 3.11 \ +Provides: perl(Net::FTP::E) = 3.11 \ +Provides: perl(Net::FTP::I) = 3.11 \ +Provides: perl(Net::FTP::L) = 3.11 \ +Provides: perl(Net::FTP::_SSL_SingleSessionCache) \ +Provides: perl(Net::FTP::dataconn) = 3.11 \ +Provides: perl(Net::NNTP) = 3.11 \ +Provides: perl(Net::NNTP::_SSL) \ +Provides: perl(Net::Netrc) = 3.11 \ +Provides: perl(Net::POP3) = 3.11 \ +Provides: perl(Net::POP3::_SSL) \ +Provides: perl(Net::SMTP) = 3.11 \ +Provides: perl(Net::SMTP::_SSL) \ +Provides: perl(Net::Time) = 3.11 \ +%{nil} +%global gendep_perl_libnetcfg \ +Requires: perl(ExtUtils::MakeMaker) \ +Requires: perl(File::Spec) \ +Requires: perl(Getopt::Std) \ +Requires: perl(IO::File) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +%{nil} +%global gendep_perl_libs \ +Requires: perl(integer) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(:MODULE_COMPAT_5.30.0) \ +Provides: perl(:VERSION) = 5.30.0 \ +Provides: perl(:WITH_64BIT) \ +Provides: perl(:WITH_ITHREADS) \ +Provides: perl(:WITH_LARGEFILES) \ +Provides: perl(:WITH_PERLIO) \ +Provides: perl(:WITH_THREADS) \ +Provides: perl(XSLoader) = 0.30 \ +Provides: perl(integer) = 1.01 \ +Provides: perl(re) = 0.37 \ +Provides: perl(strict) = 1.11 \ +Provides: perl(unicore::Name) \ +Provides: perl(utf8) = 1.22 \ +Provides: perl(utf8_heavy.pl) \ +Provides: perl(warnings) = 1.44 \ +%{nil} +%global gendep_perl_libs_debuginfo \ +%{nil} +%global gendep_perl_macros \ +%{nil} +%global gendep_perl_open \ +Requires: perl(:VERSION) >= 5.8.1 \ +Requires: perl(warnings) \ +Provides: perl(open) = 1.11 \ +%{nil} +%global gendep_perl_parent \ +Requires: perl(strict) \ +Provides: perl(parent) = 0.237 \ +%{nil} +%global gendep_perl_perlfaq \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(perlfaq) = 5.20190126 \ +%{nil} +%global gendep_perl_podlators \ +Requires: perl(:VERSION) >= 5.6.0 \ +Requires: perl(Carp) \ +Requires: perl(Encode) \ +Requires: perl(Exporter) \ +Requires: perl(Getopt::Long) \ +Requires: perl(POSIX) \ +Requires: perl(Pod::Man) \ +Requires: perl(Pod::Simple) \ +Requires: perl(Pod::Text) \ +Requires: perl(Pod::Usage) \ +Requires: perl(Term::ANSIColor) \ +Requires: perl(Term::Cap) \ +Requires: perl(strict) \ +Requires: perl(subs) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +Provides: perl(Pod::Man) = 4.11 \ +Provides: perl(Pod::ParseLink) = 4.11 \ +Provides: perl(Pod::Text) = 4.11 \ +Provides: perl(Pod::Text::Color) = 4.11 \ +Provides: perl(Pod::Text::Overstrike) = 4.11 \ +Provides: perl(Pod::Text::Termcap) = 4.11 \ +%{nil} +%global gendep_perl_tests \ +%{nil} +%global gendep_perl_threads \ +Requires: perl(:VERSION) >= 5.8.0 \ +Requires: perl(Config) \ +Requires: perl(XSLoader) \ +Requires: perl(overload) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(threads) = 2.22 \ +%{nil} +%global gendep_perl_threads_debuginfo \ +%{nil} +%global gendep_perl_threads_shared \ +Requires: perl(:VERSION) >= 5.8.0 \ +Requires: perl(Config) \ +Requires: perl(Scalar::Util) \ +Requires: perl(strict) \ +Requires: perl(warnings) \ +Provides: perl(threads::shared) = 1.60 \ +%{nil} +%global gendep_perl_threads_shared_debuginfo \ +%{nil} +%global gendep_perl_utils \ +Requires: perl(:VERSION) >= 5.9.1 \ +Requires: perl(Carp) \ +Requires: perl(Config) \ +Requires: perl(File::Basename) \ +Requires: perl(File::Path) \ +Requires: perl(File::Spec) \ +Requires: perl(Getopt::Std) \ +Requires: perl(Text::Tabs) \ +Requires: perl(re) \ +Requires: perl(strict) \ +Requires: perl(vars) \ +Requires: perl(warnings) \ +%{nil} +%global gendep_perl_version \ +Requires: perl(:VERSION) >= 5.6.2 \ +Requires: perl(strict) \ +Requires: perl(version::regex) \ +Requires: perl(warnings::register) \ +Provides: perl(version) = 0.9924 \ +Provides: perl(version::regex) = 0.9924 \ +%{nil} diff --git a/macros.perl b/macros.perl new file mode 100644 index 0000000..9de4eff --- /dev/null +++ b/macros.perl @@ -0,0 +1,158 @@ +# 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 +} + +############################################################################# +# Perl specific macros, no longer part of rpm >= 4.15 +%perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch) +%perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib) +%perl_archlib %(eval "`%{__perl} -V:installarchlib`"; echo $installarchlib) +%perl_privlib %(eval "`%{__perl} -V:installprivlib`"; echo $installprivlib) + +############################################################################# +# 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 + +# By default, for perl packages we want to filter all files in _docdir from +# req/prov scanning. +# Filtering out any provides caused by private libs in vendorarch/archlib +# (vendor/core) is done by rpmbuild since Fedora 20 +# . +# +# 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 %{?__provides_exclude_from:%__provides_exclude_from|}^%{_docdir} +%global __requires_exclude_from %{?__requires_exclude_from:%__requires_exclude_from|}^%{_docdir} +%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\\\(VMS|^perl\\\\(Win32|^perl\\\\(DB\\\\)|^perl\\\\(UNIVERSAL\\\\) +%global __requires_exclude %{?__requires_exclude:%__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/perl-5.10.0-libresolv.patch b/perl-5.10.0-libresolv.patch new file mode 100644 index 0000000..d6ff1c7 --- /dev/null +++ b/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 +@@ -1483,7 +1483,7 @@ archname='' + usereentrant='undef' + : List of libraries we want. + : If anyone needs extra -lxxx, put those in a hint file. +-libswanted="cl pthread socket bind inet nsl ndbm gdbm dbm db malloc dl ld" ++libswanted="cl pthread socket resolv inet nsl ndbm gdbm dbm db malloc dl ld" + libswanted="$libswanted sun 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/perl-5.10.0-x86_64-io-test-failure.patch b/perl-5.10.0-x86_64-io-test-failure.patch new file mode 100644 index 0000000..6ffc84b --- /dev/null +++ b/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 +@@ -257,7 +257,7 @@ isnt($atime, 500000000, 'atime'); + isnt($mtime, $ut + $delta, 'mtime: utime called with two undefs'); + + SKIP: { +- skip "no futimes", 6 unless ($Config{d_futimes} || "") eq "define"; ++ skip "no futimes", 6; + note("check futimes"); + open(my $fh, "<", 'b'); + $foo = (utime $ut,$ut + $delta, $fh); diff --git a/perl-5.14.1-offtest.patch b/perl-5.14.1-offtest.patch new file mode 100644 index 0000000..45294c8 --- /dev/null +++ b/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/perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch b/perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch new file mode 100644 index 0000000..7887867 --- /dev/null +++ b/perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch @@ -0,0 +1,65 @@ +From b598ba3f2d4b8347c6621cff022b8e2329b79ea5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Wed, 3 Jul 2013 11:01:02 +0200 +Subject: [PATCH] Link XS modules to libperl.so with EU::CBuilder on Linux +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + + + + +Signed-off-by: Petr Písař +--- + MANIFEST | 1 + + .../lib/ExtUtils/CBuilder/Platform/linux.pm | 26 ++++++++++++++++++++++ + 2 files changed, 27 insertions(+) + create mode 100644 dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm + +diff --git a/MANIFEST b/MANIFEST +index 397252a..d7c519b 100644 +--- a/MANIFEST ++++ b/MANIFEST +@@ -3424,6 +3424,7 @@ dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm CBuilder methods fo + dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm CBuilder methods for cygwin + dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm CBuilder methods for darwin + dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm CBuilder methods for OSF ++dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm CBuilder methods for Linux + dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm CBuilder methods for OS/2 + dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm CBuilder methods for Unix + dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm CBuilder methods for VMS +diff --git a/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm b/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm +new file mode 100644 +index 0000000..e3251c4 +--- /dev/null ++++ b/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm +@@ -0,0 +1,26 @@ ++package ExtUtils::CBuilder::Platform::linux; ++ ++use strict; ++use ExtUtils::CBuilder::Platform::Unix; ++use File::Spec; ++ ++use vars qw($VERSION @ISA); ++$VERSION = '0.280206'; ++@ISA = qw(ExtUtils::CBuilder::Platform::Unix); ++ ++sub link { ++ my ($self, %args) = @_; ++ my $cf = $self->{config}; ++ ++ # Link XS modules to libperl.so explicitly because multiple ++ # dlopen(, RTLD_LOCAL) hides libperl symbols from XS module. ++ local $cf->{lddlflags} = $cf->{lddlflags}; ++ if ($ENV{PERL_CORE}) { ++ $cf->{lddlflags} .= ' -L' . $self->perl_inc(); ++ } ++ $cf->{lddlflags} .= ' -lperl'; ++ ++ return $self->SUPER::link(%args); ++} ++ ++1; +-- +1.8.1.4 + diff --git a/perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-MM-on-Linux.patch b/perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-MM-on-Linux.patch new file mode 100644 index 0000000..f1f76ac --- /dev/null +++ b/perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-MM-on-Linux.patch @@ -0,0 +1,52 @@ +From fc1f8ac36c34c35bad84fb7b99a26ab83c9ba075 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Wed, 3 Jul 2013 12:59:09 +0200 +Subject: [PATCH] Link XS modules to libperl.so with EU::MM on Linux +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + + + + +Signed-off-by: Petr Písař +--- + cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm +index a8b172f..a3fbce2 100644 +--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm ++++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm +@@ -30,6 +30,7 @@ BEGIN { + $Is{IRIX} = $^O eq 'irix'; + $Is{NetBSD} = $^O eq 'netbsd'; + $Is{Interix} = $^O eq 'interix'; ++ $Is{Linux} = $^O eq 'linux'; + $Is{SunOS4} = $^O eq 'sunos'; + $Is{Solaris} = $^O eq 'solaris'; + $Is{SunOS} = $Is{SunOS4} || $Is{Solaris}; +@@ -1028,7 +1029,7 @@ sub xs_make_dynamic_lib { + push(@m," \$(RM_F) \$\@\n"); + + my $libs = '$(LDLOADLIBS)'; +- if (($Is{NetBSD} || $Is{Interix} || $Is{Android}) && $Config{'useshrplib'} eq 'true') { ++ if (($Is{Linux} || $Is{NetBSD} || $Is{Interix} || $Is{Android}) && $Config{'useshrplib'} eq 'true') { + # Use nothing on static perl platforms, and to the flags needed + # to link against the shared libperl library on shared perl + # platforms. We peek at lddlflags to see if we need -Wl,-R +@@ -1041,6 +1042,11 @@ sub xs_make_dynamic_lib { + # The Android linker will not recognize symbols from + # libperl unless the module explicitly depends on it. + $libs .= ' "-L$(PERL_INC)" -lperl'; ++ } else { ++ if ($ENV{PERL_CORE}) { ++ $libs .= ' "-L$(PERL_INC)"'; ++ } ++ $libs .= ' -lperl'; + } + } + +-- +1.8.1.4 + diff --git a/perl-5.16.3-create_libperl_soname.patch b/perl-5.16.3-create_libperl_soname.patch new file mode 100644 index 0000000..0cfd59d --- /dev/null +++ b/perl-5.16.3-create_libperl_soname.patch @@ -0,0 +1,57 @@ +From fa2f0dd5a7767223df10149d3f16d7ed7013e16f Mon Sep 17 00:00:00 2001 +From: Torsten Veller +Date: Sat, 14 Apr 2012 13:49:18 +0200 +Subject: Set libperl soname + +Bug-Gentoo: https://bugs.gentoo.org/286840 + +Patch-Name: gentoo/create_libperl_soname.diff +--- + Makefile.SH | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/Makefile.SH b/Makefile.SH +index d1da0a0..7733a32 100755 +--- a/Makefile.SH ++++ b/Makefile.SH +@@ -70,11 +70,11 @@ true) + ${revision}.${patchlevel}.${subversion}" + case "$osvers" in + 1[5-9]*|[2-9]*) +- shrpldflags="$shrpldflags -install_name `pwd`/\$@ -Xlinker -headerpad_max_install_names" ++ shrpldflags="$shrpldflags -install_name `pwd`/libperl.${revision}.${patchlevel}.dylib -Xlinker -headerpad_max_install_names" + exeldflags="-Xlinker -headerpad_max_install_names" + ;; + *) +- shrpldflags="$shrpldflags -install_name \$(shrpdir)/\$@" ++ shrpldflags="$shrpldflags -install_name \$(shrpdir)/libperl.${revision}.${patchlevel}.dylib" + ;; + esac + ;; +@@ -76,13 +76,15 @@ true) + ;; + sunos*) + linklibperl="-lperl" ++ shrpldflags="$shrpldflags -Wl,-soname -Wl,libperl.so.${revision}.${patchlevel}" + ;; + netbsd*|freebsd[234]*|openbsd*|dragonfly*|bitrig*) + linklibperl="-L. -lperl" ++ shrpldflags="$shrpldflags -Wl,-soname -Wl,libperl.so.${revision}.${patchlevel}" + ;; + interix*) + linklibperl="-L. -lperl" +- shrpldflags="$shrpldflags -Wl,--image-base,0x57000000" ++ shrpldflags="$shrpldflags -Wl,--image-base,0x57000000 -Wl,-soname -Wl,libperl.so.${revision}.${patchlevel}" + ;; + aix*) + case "$cc" in +@@ -120,6 +122,9 @@ true) + linklibperl='libperl.x' + DPERL_EXTERNAL_GLOB='' + ;; ++ linux*) ++ shrpldflags="$shrpldflags -Wl,-soname -Wl,libperl.so.${revision}.${patchlevel}" ++ ;; + esac + case "$ldlibpthname" in + '') ;; diff --git a/perl-5.18.2-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch b/perl-5.18.2-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch new file mode 100644 index 0000000..04b333f --- /dev/null +++ b/perl-5.18.2-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch @@ -0,0 +1,233 @@ +From f793042f2bac2ace9a5c0030b47b41c4db561a5b 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 33e08e2..7160f54 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 ; +@@ -98,6 +99,7 @@ gdbm_TIEHASH(dbtype, name, read_write, m + } + if (dbp) { + RETVAL = (GDBM_File)safecalloc(1, sizeof(GDBM_File_type)); ++ RETVAL->owner = aTHX; + RETVAL->dbp = dbp; + } else { + RETVAL = NULL; +@@ -118,12 +120,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 +@@ -49,6 +49,7 @@ datum nextkey(datum key); + #define store_value 3 + + typedef struct { ++ tTHX owner; + void * dbp ; + SV * filter[4]; + int filtering ; +@@ -137,6 +138,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: +@@ -149,13 +151,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 ; +@@ -51,6 +52,7 @@ sdbm_TIEHASH(dbtype, filename, flags, mode) + } + if (dbp) { + RETVAL = (SDBM_File)safecalloc(1, sizeof(SDBM_File_type)); ++ RETVAL->owner = aTHX; + RETVAL->dbp = dbp ; + } + +@@ -62,7 +64,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 +@@ -510,5 +510,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/perl-5.22.0-Install-libperl.so-to-shrpdir-on-Linux.patch b/perl-5.22.0-Install-libperl.so-to-shrpdir-on-Linux.patch new file mode 100644 index 0000000..49de388 --- /dev/null +++ b/perl-5.22.0-Install-libperl.so-to-shrpdir-on-Linux.patch @@ -0,0 +1,61 @@ +From 9644657c4 10326749fd321d9c24944ec25afad2f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 20 Jun 2013 15:22:53 +0200 +Subject: [PATCH] Install libperl.so to shrpdir on Linux +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + Configure | 7 ++++--- + Makefile.SH | 2 +- + 2 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/Configure b/Configure +index 2f30261..825496e 100755 +--- a/Configure ++++ b/Configure +@@ -8762,7 +8762,9 @@ esac + + # Detect old use of shrpdir via undocumented Configure -Dshrpdir + case "$shrpdir" in +-'') ;; ++'') ++shrpdir=$archlibexp/CORE ++;; + *) $cat >&4 < +Date: Mon, 18 Apr 2016 16:24:03 +0200 +Subject: [PATCH] Provide ExtUtils::MM methods as standalone + ExtUtils::MM::Utils +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If you cannot afford depending on ExtUtils::MakeMaker, you can +depend on ExtUtils::MM::Utils instead. + + + +Signed-off-by: Petr Písař +--- + MANIFEST | 1 + + cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM/Utils.pm | 68 ++++++++++++++++++++++++ + 2 files changed, 69 insertions(+) + create mode 100644 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM/Utils.pm + +diff --git a/MANIFEST b/MANIFEST +index 6af238c..d4f0c56 100644 +--- a/MANIFEST ++++ b/MANIFEST +@@ -784,6 +784,7 @@ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm MakeMaker methods for OS/2 + cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm MakeMaker methods for OS/2 + cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm MakeMaker methods for QNX + cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm MakeMaker methods for Unix ++cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM/Utils.pm Independed MM methods + cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm MakeMaker methods for U/WIN + cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm MakeMaker methods for VMS + cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm MakeMaker methods for VOS +diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM/Utils.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM/Utils.pm +new file mode 100644 +index 0000000..6bbc0d8 +--- /dev/null ++++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM/Utils.pm +@@ -0,0 +1,68 @@ ++package ExtUtils::MM::Utils; ++ ++require 5.006; ++ ++use strict; ++use vars qw($VERSION); ++$VERSION = '7.11_06'; ++$VERSION = eval $VERSION; ## no critic [BuiltinFunctions::ProhibitStringyEval] ++ ++=head1 NAME ++ ++ExtUtils::MM::Utils - ExtUtils::MM methods without dependency on ExtUtils::MakeMaker ++ ++=head1 SYNOPSIS ++ ++ require ExtUtils::MM::Utils; ++ MM->maybe_command($file); ++ ++=head1 DESCRIPTION ++ ++This is a collection of L subroutines that are used by many ++other modules but that do not need full-featured L. The ++issue with L is it pulls in Perl header files and that is ++an overkill for small subroutines. ++ ++An example is the L that caused installing GCC just because of ++three-line I from L. ++ ++The intentions is to use L instead of ++L for these trivial methods. You can still call them via ++L class name. ++ ++=head1 METHODS ++ ++=over 4 ++ ++=item maybe_command ++ ++Returns true, if the argument is likely to be a command. ++ ++=cut ++ ++if (!exists $INC{'ExtUtils/MM.pm'}) { ++ *MM::maybe_command = *ExtUtils::MM::maybe_command = \&maybe_command; ++} ++ ++sub maybe_command { ++ my($self,$file) = @_; ++ return $file if -x $file && ! -d $file; ++ return; ++} ++ ++1; ++ ++=back ++ ++=head1 BUGS ++ ++These methods are copied from L. Other operating systems ++are not supported yet. The reason is this ++L. ++ ++=head1 SEE ALSO ++ ++L, L ++ ++=cut +-- +2.5.5 + diff --git a/perl-5.22.1-Replace-EU-MM-dependnecy-with-EU-MM-Utils-in-IPC-Cmd.patch b/perl-5.22.1-Replace-EU-MM-dependnecy-with-EU-MM-Utils-in-IPC-Cmd.patch new file mode 100644 index 0000000..b702e85 --- /dev/null +++ b/perl-5.22.1-Replace-EU-MM-dependnecy-with-EU-MM-Utils-in-IPC-Cmd.patch @@ -0,0 +1,34 @@ +From 216ddd39adb0043930acad70ff242c30a1b0c6cf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 18 Apr 2016 16:39:32 +0200 +Subject: [PATCH] Replace EU::MM dependnecy with EU::MM::Utils in IPC::Cmd +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This allows to free from a run-time dependency on fat +ExtUtils::MakeMaker. + + + +Signed-off-by: Petr Písař +--- + cpan/IPC-Cmd/lib/IPC/Cmd.pm | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cpan/IPC-Cmd/lib/IPC/Cmd.pm b/cpan/IPC-Cmd/lib/IPC/Cmd.pm +index 6a82bdf..b6cd7ef 100644 +--- a/cpan/IPC-Cmd/lib/IPC/Cmd.pm ++++ b/cpan/IPC-Cmd/lib/IPC/Cmd.pm +@@ -232,7 +232,7 @@ sub can_run { + } + + require File::Spec; +- require ExtUtils::MakeMaker; ++ require ExtUtils::MM::Utils; + + my @possibles; + +-- +2.5.5 + diff --git a/perl-5.27.8-hints-linux-Add-lphtread-to-lddlflags.patch b/perl-5.27.8-hints-linux-Add-lphtread-to-lddlflags.patch new file mode 100644 index 0000000..f68569f --- /dev/null +++ b/perl-5.27.8-hints-linux-Add-lphtread-to-lddlflags.patch @@ -0,0 +1,61 @@ +From f6bc8fb3d26892ba1a84ba2df76beedd51998dd2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 29 Jan 2018 16:34:17 +0100 +Subject: [PATCH] hints/linux: Add -lphtread to lddlflags +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Passing -z defs to linker flags causes perl to fail to build if threads are +enabled: + +gcc -shared -Wl,-z,relro -Wl,-z,defs -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -L/usr/local/lib -fstack-protector-strong Bzip2.o -o ../../lib/auto/Compress/Raw/Bzip2/Bzip2.so \ + -L/usr/lib64 -lbz2 "-L../.." -lperl \ + +Bzip2.o: In function `deRef': +/builddir/build/BUILD/perl-5.26.1/cpan/Compress-Raw-Bzip2/Bzip2.xs:256: undefined reference to `pthread_getspecific' + +The reason is Bzip2.xs calls dTHX macro included from thread.h via perl.h that +expands to pthread_getspecific() function call that is defined in pthread +library. But the pthread library is not explicitly linked to Bzip.so (see the +gcc command). This is exactly what -z defs linker flag enforces. + +Underlinking ELFs can be dangerous because in case of versioned +symbols it can cause run-time binding to an improper version symbol or +even to an symbold from different library. + +This patch fixes hints for Linux by adding -lpthreads to lddlflags. It +also adds -shared there because Configure.sh adds it only hints return +lddlflags empty. + + + +Signed-off-by: Petr Písař +--- + hints/linux.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/hints/linux.sh b/hints/linux.sh +index 3f38ea07f1..9ec3bc02ef 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -353,12 +353,16 @@ if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then + echo "$libswanted" >&4 + fi + ++# Flags needed to produce shared libraries. ++lddlflags='-shared' ++ + # This script UU/usethreads.cbu will get 'called-back' by Configure + # after it has prompted the user for whether to use threads. + cat > UU/usethreads.cbu <<'EOCBU' + case "$usethreads" in + $define|true|[yY]*) + ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" ++ lddlflags="-lpthread $lddlflags" + if echo $libswanted | grep -v pthread >/dev/null + then + set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` +-- +2.13.6 + diff --git a/perl-5.28.0-Pass-CFLAGS-to-dtrace.patch b/perl-5.28.0-Pass-CFLAGS-to-dtrace.patch new file mode 100644 index 0000000..2e9a36d --- /dev/null +++ b/perl-5.28.0-Pass-CFLAGS-to-dtrace.patch @@ -0,0 +1,63 @@ +Subject: [PATCH] Pass CFLAGS to dtrace + +Signed-off-by: Petr PĂ­sař +--- + Makefile.SH | 8 +++++--- + cflags.SH | 5 ++++- + 2 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/Makefile.SH b/Makefile.SH +index 5fc6d1c..e89ad70 100755 +--- a/Makefile.SH ++++ b/Makefile.SH +@@ -462,6 +462,8 @@ CCCMD = sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $@ + + CCCMDSRC = sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $< + ++DTRACEFLAGS = sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $@ ++ + CONFIGPM_FROM_CONFIG_SH = lib/Config.pm lib/Config_heavy.pl + CONFIGPM = $(CONFIGPM_FROM_CONFIG_SH) lib/Config_git.pl + +@@ -895,19 +897,19 @@ $(DTRACE_MINI_O): perldtrace.d $(miniperl_objs_nodt) + -rm -rf mpdtrace + mkdir mpdtrace + cp $(miniperl_objs_nodt) mpdtrace/ +- $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MINI_O) $(miniperl_dtrace_objs) ++ CFLAGS="`$(DTRACEFLAGS)`" $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MINI_O) $(miniperl_dtrace_objs) + + $(DTRACE_PERLLIB_O): perldtrace.d $(perllib_objs_nodt) + -rm -rf libpdtrace + mkdir libpdtrace + cp $(perllib_objs_nodt) libpdtrace/ +- $(DTRACE) -G -s perldtrace.d -o $(DTRACE_PERLLIB_O) $(perllib_dtrace_objs) ++ CFLAGS="`$(DTRACEFLAGS)`" $(DTRACE) -G -s perldtrace.d -o $(DTRACE_PERLLIB_O) $(perllib_dtrace_objs) + + $(DTRACE_MAIN_O): perldtrace.d perlmain$(OBJ_EXT) + -rm -rf maindtrace + mkdir maindtrace + cp perlmain$(OBJ_EXT) maindtrace/ +- $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O) $(perlmain_dtrace_objs) || \ ++ CFLAGS="`$(DTRACEFLAGS)`" $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O) $(perlmain_dtrace_objs) || \ + ( $(ECHO) "No probes in perlmain$(OBJ_EXT), generating a dummy $(DTRACE_MAIN_O)" && \ + $(ECHO) >dtrace_main.c && \ + `$(CCCMD)` $(PLDLFLAGS) dtrace_main.c && \ +diff --git a/cflags.SH b/cflags.SH +index 3af1e97..b845127 100755 +--- a/cflags.SH ++++ b/cflags.SH +@@ -519,7 +519,10 @@ for file do + toke) optimize=-O0 ;; + esac + +- echo "$cc -c -DPERL_CORE $ccflags $stdflags $optimize $warn $extra" ++ case "$file" in ++ dtrace_*) echo "$ccflags $stdflags $optimize $warn $extra";; ++ *) echo "$cc -c -DPERL_CORE $ccflags $stdflags $optimize $warn $extra";; ++ esac + + . $TOP/config.sh + +-- +2.17.1 + diff --git a/perl-5.30.0-PATCH-perl-134329-Use-after-free-in-regcomp.c.patch b/perl-5.30.0-PATCH-perl-134329-Use-after-free-in-regcomp.c.patch new file mode 100644 index 0000000..240a9bb --- /dev/null +++ b/perl-5.30.0-PATCH-perl-134329-Use-after-free-in-regcomp.c.patch @@ -0,0 +1,389 @@ +From fd30a7c49a661aecfb361045646da264cdadea8f Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Fri, 23 Aug 2019 12:40:24 -0600 +Subject: [PATCH] PATCH: [perl #134329] Use after free in regcomp.c +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +A compiled regex is composed of nodes, forming a linked list, with +normally a maximum of 16 bits used to specify the offset of the next +link. For patterns that require more space than this, the nodes that +jump around are replaced with ones that have wider offsets. Most nodes +are unaffected, as they just contain the offset of the next node, and +that number is always small. The jump nodes are the ones affected. + +When compiling a pattern, the 16 bit mechanism is used, until it +overflows, at which point the pattern is recompiled with the long jumps +instead. + +When I rewrote the compiler last year to make it generally one pass, I +noticed a lot of the cases where a node was added didn't check if the +result overflowed (the function that does this returns FALSE in that +case). I presumed the prior authors knew better, and did not change +things, except to put in a bogus value in the link (offset) field that +should cause a crash if it were used. That's what's happening in this +ticket. + +But seeing this example, it's clear that the return value should be +checked every time, because you can reach the limit at any time. This +commit changes to do that, and to require the function's return value to +not be ignored, to guard against future changes. + +My guess is that the reason it generally worked when there were multiple +passes is that the first pass didn't do anything except count space, and +that at some point before the end of the pass the return value did get +checked, so by the time the nodes were allocated for real, it knew +enough to use the long jumps. + +Petr Písař: Ported to 5.30.0 from +3b2e5620ed4a6b341f97ffd1d4b6466cc2c4bc5b. + +Signed-off-by: Petr Písař +--- + MANIFEST | 1 + + embed.fnc | 4 +- + proto.h | 8 ++- + regcomp.c | 109 ++++++++++++++++++++++++++++----------- + t/re/bigfuzzy_not_utf8.t | Bin 0 -> 36399 bytes + 5 files changed, 88 insertions(+), 34 deletions(-) + create mode 100644 t/re/bigfuzzy_not_utf8.t + +diff --git a/MANIFEST b/MANIFEST +index 10e2cc0..cc24cd7 100644 +--- a/MANIFEST ++++ b/MANIFEST +@@ -5839,6 +5839,7 @@ t/porting/test_bootstrap.t Test that the instructions for test bootstrapping are + t/porting/utils.t Check that utility scripts still compile + t/re/alpha_assertions.t See if things like '(*postive_lookahed:...) work properly + t/re/anyof.t See if bracketed char classes [...] compile properly ++t/re/bigfuzzy_not_utf8.t Big and ugly tests not storable as UTF-8 + t/re/charset.t See if regex modifiers like /d, /u work properly + t/re/fold_grind.pl Core file to see if regex case folding works properly + t/re/fold_grind_8.t Wrapper for fold_grind.pl for /l testing with a UTF-8 locale +diff --git a/embed.fnc b/embed.fnc +index c977d39..c2c5f16 100644 +--- a/embed.fnc ++++ b/embed.fnc +@@ -2427,7 +2427,7 @@ Es |void |reginsert |NN RExC_state_t *pRExC_state \ + |const U8 op \ + |const regnode_offset operand \ + |const U32 depth +-Es |bool |regtail |NN RExC_state_t * pRExC_state \ ++EsR |bool |regtail |NN RExC_state_t * pRExC_state \ + |NN const regnode_offset p \ + |NN const regnode_offset val \ + |const U32 depth +@@ -2561,7 +2561,7 @@ Es |void |dump_trie_interim_list|NN const struct _reg_trie_data *trie\ + Es |void |dump_trie_interim_table|NN const struct _reg_trie_data *trie\ + |NULLOK HV* widecharmap|NN AV *revcharmap\ + |U32 next_alloc|U32 depth +-Es |bool |regtail_study |NN RExC_state_t *pRExC_state \ ++EsR |bool |regtail_study |NN RExC_state_t *pRExC_state \ + |NN regnode_offset p|NN const regnode_offset val|U32 depth + # endif + #endif +diff --git a/proto.h b/proto.h +index e0ea55b..2ef7ce2 100644 +--- a/proto.h ++++ b/proto.h +@@ -4457,9 +4457,11 @@ PERL_CALLCONV int Perl_re_indentf(pTHX_ const char *fmt, U32 depth, ...); + assert(fmt) + STATIC void S_regdump_extflags(pTHX_ const char *lead, const U32 flags); + STATIC void S_regdump_intflags(pTHX_ const char *lead, const U32 flags); +-STATIC bool S_regtail_study(pTHX_ RExC_state_t *pRExC_state, regnode_offset p, const regnode_offset val, U32 depth); ++STATIC bool S_regtail_study(pTHX_ RExC_state_t *pRExC_state, regnode_offset p, const regnode_offset val, U32 depth) ++ __attribute__warn_unused_result__; + #define PERL_ARGS_ASSERT_REGTAIL_STUDY \ + assert(pRExC_state); assert(p); assert(val) ++ + # endif + # if defined(PERL_IN_REGEXEC_C) + STATIC void S_debug_start_match(pTHX_ const REGEXP *prog, const bool do_utf8, const char *start, const char *end, const char *blurb); +@@ -5599,9 +5601,11 @@ STATIC regnode_offset S_regnode_guts(pTHX_ RExC_state_t *pRExC_state, const U8 o + STATIC regnode_offset S_regpiece(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth); + #define PERL_ARGS_ASSERT_REGPIECE \ + assert(pRExC_state); assert(flagp) +-STATIC bool S_regtail(pTHX_ RExC_state_t * pRExC_state, const regnode_offset p, const regnode_offset val, const U32 depth); ++STATIC bool S_regtail(pTHX_ RExC_state_t * pRExC_state, const regnode_offset p, const regnode_offset val, const U32 depth) ++ __attribute__warn_unused_result__; + #define PERL_ARGS_ASSERT_REGTAIL \ + assert(pRExC_state); assert(p); assert(val) ++ + STATIC void S_scan_commit(pTHX_ const RExC_state_t *pRExC_state, struct scan_data_t *data, SSize_t *minlenp, int is_inf); + #define PERL_ARGS_ASSERT_SCAN_COMMIT \ + assert(pRExC_state); assert(data); assert(minlenp) +diff --git a/regcomp.c b/regcomp.c +index dfc22bc..b93fbe7 100644 +--- a/regcomp.c ++++ b/regcomp.c +@@ -11307,10 +11307,15 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth) + return 0; + } + +- REGTAIL(pRExC_state, ret, atomic); ++ if (! REGTAIL(pRExC_state, ret, atomic)) { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + +- REGTAIL(pRExC_state, atomic, +- reg_node(pRExC_state, SRCLOSE)); ++ if (! REGTAIL(pRExC_state, atomic, reg_node(pRExC_state, ++ SRCLOSE))) ++ { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + + RExC_in_script_run = 0; + return ret; +@@ -11769,7 +11774,9 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth) + RExC_flags & RXf_PMf_COMPILETIME + ); + FLAGS(REGNODE_p(ret)) = 2; +- REGTAIL(pRExC_state, ret, eval); ++ if (! REGTAIL(pRExC_state, ret, eval)) { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + /* deal with the length of this later - MJD */ + return ret; + } +@@ -11822,7 +11829,9 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth) + + tail = reg(pRExC_state, 1, &flag, depth+1); + RETURN_FAIL_ON_RESTART(flag, flagp); +- REGTAIL(pRExC_state, ret, tail); ++ if (! REGTAIL(pRExC_state, ret, tail)) { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + goto insert_if; + } + else if ( RExC_parse[0] == '<' /* (?()...) */ +@@ -11914,15 +11923,22 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth) + } + nextchar(pRExC_state); + insert_if: +- REGTAIL(pRExC_state, ret, reganode(pRExC_state, IFTHEN, 0)); ++ if (! REGTAIL(pRExC_state, ret, reganode(pRExC_state, ++ IFTHEN, 0))) ++ { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + br = regbranch(pRExC_state, &flags, 1, depth+1); + if (br == 0) { + RETURN_FAIL_ON_RESTART(flags,flagp); + FAIL2("panic: regbranch returned failure, flags=%#" UVxf, + (UV) flags); + } else +- REGTAIL(pRExC_state, br, reganode(pRExC_state, +- LONGJMP, 0)); ++ if (! REGTAIL(pRExC_state, br, reganode(pRExC_state, ++ LONGJMP, 0))) ++ { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + c = UCHARAT(RExC_parse); + nextchar(pRExC_state); + if (flags&HASWIDTH) +@@ -11939,7 +11955,9 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth) + FAIL2("panic: regbranch returned failure, flags=%#" UVxf, + (UV) flags); + } +- REGTAIL(pRExC_state, ret, lastbr); ++ if (! REGTAIL(pRExC_state, ret, lastbr)) { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + if (flags&HASWIDTH) + *flagp |= HASWIDTH; + c = UCHARAT(RExC_parse); +@@ -11954,16 +11972,26 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth) + vFAIL("Switch (?(condition)... contains too many branches"); + } + ender = reg_node(pRExC_state, TAIL); +- REGTAIL(pRExC_state, br, ender); ++ if (! REGTAIL(pRExC_state, br, ender)) { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + if (lastbr) { +- REGTAIL(pRExC_state, lastbr, ender); +- REGTAIL(pRExC_state, REGNODE_OFFSET( +- NEXTOPER( +- NEXTOPER(REGNODE_p(lastbr)))), +- ender); ++ if (! REGTAIL(pRExC_state, lastbr, ender)) { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } ++ if (! REGTAIL(pRExC_state, ++ REGNODE_OFFSET( ++ NEXTOPER( ++ NEXTOPER(REGNODE_p(lastbr)))), ++ ender)) ++ { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + } + else +- REGTAIL(pRExC_state, ret, ender); ++ if (! REGTAIL(pRExC_state, ret, ender)) { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + #if 0 /* Removing this doesn't cause failures in the test suite -- khw */ + RExC_size++; /* XXX WHY do we need this?!! + For large programs it seems to be required +@@ -12113,7 +12141,9 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth) + *flagp |= flags&SIMPLE; + } + if (is_open) { /* Starts with OPEN. */ +- REGTAIL(pRExC_state, ret, br); /* OPEN -> first. */ ++ if (! REGTAIL(pRExC_state, ret, br)) { /* OPEN -> first. */ ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + } + else if (paren != '?') /* Not Conditional */ + ret = br; +@@ -12121,12 +12151,15 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth) + lastbr = br; + while (*RExC_parse == '|') { + if (RExC_use_BRANCHJ) { ++ bool shut_gcc_up; ++ + ender = reganode(pRExC_state, LONGJMP, 0); + + /* Append to the previous. */ +- REGTAIL(pRExC_state, +- REGNODE_OFFSET(NEXTOPER(NEXTOPER(REGNODE_p(lastbr)))), +- ender); ++ shut_gcc_up = REGTAIL(pRExC_state, ++ REGNODE_OFFSET(NEXTOPER(NEXTOPER(REGNODE_p(lastbr)))), ++ ender); ++ PERL_UNUSED_VAR(shut_gcc_up); + } + nextchar(pRExC_state); + if (freeze_paren) { +@@ -12237,9 +12270,10 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth) + is_nothing= 0; + } + else if (op == BRANCHJ) { +- REGTAIL_STUDY(pRExC_state, +- REGNODE_OFFSET(NEXTOPER(NEXTOPER(br))), +- ender); ++ bool shut_gcc_up = REGTAIL_STUDY(pRExC_state, ++ REGNODE_OFFSET(NEXTOPER(NEXTOPER(br))), ++ ender); ++ PERL_UNUSED_VAR(shut_gcc_up); + /* for now we always disable this optimisation * / + if ( OP(NEXTOPER(NEXTOPER(br))) != NOTHING + || regnext(NEXTOPER(NEXTOPER(br))) != REGNODE_p(ender)) +@@ -12551,7 +12585,9 @@ S_regpiece(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth) + const regnode_offset w = reg_node(pRExC_state, WHILEM); + + FLAGS(REGNODE_p(w)) = 0; +- REGTAIL(pRExC_state, ret, w); ++ if (! REGTAIL(pRExC_state, ret, w)) { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + if (RExC_use_BRANCHJ) { + reginsert(pRExC_state, LONGJMP, ret, depth+1); + reginsert(pRExC_state, NOTHING, ret, depth+1); +@@ -12566,7 +12602,11 @@ S_regpiece(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth) + if (RExC_use_BRANCHJ) + NEXT_OFF(REGNODE_p(ret)) = 3; /* Go over NOTHING to + LONGJMP. */ +- REGTAIL(pRExC_state, ret, reg_node(pRExC_state, NOTHING)); ++ if (! REGTAIL(pRExC_state, ret, reg_node(pRExC_state, ++ NOTHING))) ++ { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + RExC_whilem_seen++; + MARK_NAUGHTY_EXP(1, 4); /* compound interest */ + } +@@ -12638,16 +12678,22 @@ S_regpiece(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth) + if (*RExC_parse == '?') { + nextchar(pRExC_state); + reginsert(pRExC_state, MINMOD, ret, depth+1); +- REGTAIL(pRExC_state, ret, ret + NODE_STEP_REGNODE); ++ if (! REGTAIL(pRExC_state, ret, ret + NODE_STEP_REGNODE)) { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + } + else if (*RExC_parse == '+') { + regnode_offset ender; + nextchar(pRExC_state); + ender = reg_node(pRExC_state, SUCCEED); +- REGTAIL(pRExC_state, ret, ender); ++ if (! REGTAIL(pRExC_state, ret, ender)) { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + reginsert(pRExC_state, SUSPEND, ret, depth+1); + ender = reg_node(pRExC_state, TAIL); +- REGTAIL(pRExC_state, ret, ender); ++ if (! REGTAIL(pRExC_state, ret, ender)) { ++ REQUIRE_BRANCHJ(flagp, 0); ++ } + } + + if (ISMULT2(RExC_parse)) { +@@ -19815,8 +19861,8 @@ S_regtail(pTHX_ RExC_state_t * pRExC_state, + } + else { + if (val - scan > U16_MAX) { +- /* Since not all callers check the return value, populate this with +- * something that won't loop and will likely lead to a crash if ++ /* Populate this with something that won't loop and will likely ++ * lead to a crash if the caller ignores the failure return, and + * execution continues */ + NEXT_OFF(REGNODE_p(scan)) = U16_MAX; + return FALSE; +@@ -19927,6 +19973,9 @@ S_regtail_study(pTHX_ RExC_state_t *pRExC_state, regnode_offset p, + } + else { + if (val - scan > U16_MAX) { ++ /* Populate this with something that won't loop and will likely ++ * lead to a crash if the caller ignores the failure return, and ++ * execution continues */ + NEXT_OFF(REGNODE_p(scan)) = U16_MAX; + return FALSE; + } +diff --git a/t/re/bigfuzzy_not_utf8.t b/t/re/bigfuzzy_not_utf8.t +new file mode 100644 +index 0000000000000000000000000000000000000000..b4dfd150a9297172af5d8e7811357fd68931f8d7 +GIT binary patch +literal 36399 +zcmeI5y>Ht_6u>V)vj`|)bnw`ot)P-@MMCTpNTQ@6nzlsHpvaKGfa6%8#FNC9CKZxu +z;)Jf$YRJ%zoeHDqo_|0?hWr89EXQ;I1&?0XN7}J$MN%l4pVm7V_T9aA@8fqzil1_F +zE|;$}O->{eN&28B=@fnhT2nU|t*9E+ShXPw8fDMw8q;-2Rj9#qL#IYfFlbp&QU)zC +zsvD}tL@Ma?;e+olU(13qL4mf$Xi2KlMpfR-(n>>?sal~`K`RMWM$0up6UqkD^enA1 +zg=vB;ZywbQuvXdxGnK~k=b({GBpSNyN0Z7%!KptLG(}RXdLfa}8zrhWl%f+Fv@eZ)eEZ=O;~ +zoje1d1%IQ=tmzSkdDoay2=T|Pz +zo*8+Kr80%Y79{wyR4)RabV^adFWpeZh73a5P-K`EDzb{C0J1N?-Bg5osvt7$#*LDy +z8pU1*;Hb;O`}w=|H2|VCNgvil!C)|-F!4`oOre4(0@l39WM)9+aK3^6G2ryE+cJd2 +zG%)O}9%o(Xh5+npOk+9dJvA{f4-SNl&MqX!&&dnrWK5-2KkXUdJ@kJhZYzBs1%)nFU8yw#)YRc86bC;+Jl5 +zgy&7Z`^Fw(?OiZUet&)S)$APMGYhtb_713ZrNwu<++Ih39!HYq+wJzw?PH0VT{$4+ +zz%lmLw7_MJYpy#@2q4sQ7fUP%j9esxG8j3)cOk6*w(m~R0TQqY5H30#e)2t(Pe1U0 +zo7x9RuwyuZKZc9WF8Sr`COoz9_eZT+t&ggp!nq?r$P9^7Qf{`Z-{X`J#)<@xfTsj3 +zt7*Z}u%|ZB*f}Q9ILEnRY6A%n(u&6pLLV6Zhn*Je^046bHe3TpU@8gBV?hE)AbtcU +z+*`#j(Lf`1Pqq2ly)J6Thrs2aLgj*Tgns-Zu;!m>A1&i8UmxMd)HGfL@L=Np^}xmu +z6KnnbWTw9d+eiQj_)Fjmf6b$HBoG*ZvmFNFos+;OYFZqXdWnYd{P*jg`)Jij({(%| +z`6Q@2v~b4IiYzkMz+$L)vsWgF{`mxB#u(y$sg7Y3RpU)yZB+QhQ9`d|Ekc6YFM1X7 +zv7KL!Yu;A|z5IoJ9um0Yp{;0|@_teFTYTByaiWdaEl+G^1Vp#S{&b=E +zj|&}JWy0IK6Ap73lq)qnz?y5#A&T&w#6r1;mt7IkMW2eFfxdF(5w^x}jvkffEfIvgHNTjXV5+K%<*L3ET_R +z+c|c&wLM;PQ@lgr#v_H=NB{{Sfw2f&z<1F4c?Err>gK7){ur^11cD`i`-xzApY~Qf +z-Soco%zKmLS;Xfudc5$tj2??=s^NXSD9!fSp38_*Cb5m>t!bHAQk&zN(xREQTJ4>c +zC4OI8w7BN_>Y=zWZjEyWg?) +z-~n%be|`1U>>S}U3wvP0@z9kP-|cdH9RYeANt%btP&>Dm_#=s#T{$4+fFnF_9>oX| +zooo&c`N+|sIY^}|4akg;3*^W-WYBK!OJAAU-%N9Mt_49ZzRWCquG}WPRkz@uPUllu +jIzOMKFSg+CqdL=Mn!K`nb$RLfL7{9Vwi5pX0LDXb + +literal 0 +HcmV?d00001 + +-- +2.21.0 + diff --git a/perl-5.30.0-Remove-undefined-behavior-from-IV-shifting.patch b/perl-5.30.0-Remove-undefined-behavior-from-IV-shifting.patch new file mode 100644 index 0000000..31ad4cf --- /dev/null +++ b/perl-5.30.0-Remove-undefined-behavior-from-IV-shifting.patch @@ -0,0 +1,75 @@ +From 7e5b390a008ccad094a39c350f385d58e8a5102a Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Fri, 3 May 2019 13:57:47 -0600 +Subject: [PATCH] Remove undefined behavior from IV shifting +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It is undefined behavior to shift a negative integer to the left. This +commit avoids that by treating the value as unsigned, then casting back +to integer for return. + +Petr Písař: Ported to 5.30.0 from +814735a391b874af8f00eaf89469e5ec7f38cd4aa. + +Signed-off-by: Petr Písař +--- + asan_ignore | 5 ----- + pp.c | 21 ++++++++++++++++++++- + 2 files changed, 20 insertions(+), 6 deletions(-) + +diff --git a/asan_ignore b/asan_ignore +index e0f5685..f520546 100644 +--- a/asan_ignore ++++ b/asan_ignore +@@ -18,11 +18,6 @@ + + fun:Perl_pp_i_* + +-# Perl's << is defined as using the underlying C's << operator, with the +-# same undefined behaviour for shifts greater than the word size. +-# (UVs normally, IVs with 'use integer') +- +-fun:Perl_pp_left_shift + + # this function numifies the field width in eg printf "%10f". + # It has its own overflow detection, so don't warn about it +diff --git a/pp.c b/pp.c +index 7afb090..3ca04e1 100644 +--- a/pp.c ++++ b/pp.c +@@ -1991,10 +1991,29 @@ static IV S_iv_shift(IV iv, int shift, bool left) + shift = -shift; + left = !left; + } ++ + if (UNLIKELY(shift >= IV_BITS)) { + return iv < 0 && !left ? -1 : 0; + } +- return left ? iv << shift : iv >> shift; ++ /* For left shifts, perl 5 has chosen to treat the value as unsigned for ++ * the * purposes of shifting, then cast back to signed. This is very ++ * different from perl 6: ++ * ++ * $ perl6 -e 'say -2 +< 5' ++ * -64 ++ * ++ * $ ./perl -le 'print -2 << 5' ++ * 18446744073709551552 ++ * */ ++ if (left) { ++ if (iv == IV_MIN) { /* Casting this to a UV is undefined behavior */ ++ return 0; ++ } ++ return (IV) (((UV) iv) << shift); ++ } ++ ++ /* Here is right shift */ ++ return iv >> shift; + } + + #define UV_LEFT_SHIFT(uv, shift) S_uv_shift(uv, shift, TRUE) +-- +2.20.1 + diff --git a/perl-5.30.0-perl-134221-support-append-mode-for-open-.-undef.patch b/perl-5.30.0-perl-134221-support-append-mode-for-open-.-undef.patch new file mode 100644 index 0000000..e954285 --- /dev/null +++ b/perl-5.30.0-perl-134221-support-append-mode-for-open-.-undef.patch @@ -0,0 +1,191 @@ +From 8e9cf86aa69cb79c91edf5ff0586f87bfe4c91bd Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Tue, 2 Jul 2019 14:16:35 +1000 +Subject: [PATCH] (perl #134221) support append mode for open .. undef +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Petr Písař: Ported to 5.30.0 from +45b29440d38be155c5177c8d6f9a5d4e7c2c098c. + +Signed-off-by: Petr Písař +--- + doio.c | 15 +++++++++++++++ + embed.fnc | 1 + + perlio.c | 26 +++++++++++++++++++++----- + perlio.h | 3 +++ + proto.h | 5 +++++ + t/io/perlio_open.t | 14 ++++++++++++-- + 6 files changed, 57 insertions(+), 7 deletions(-) + +diff --git a/doio.c b/doio.c +index 05a0696..424e0e3 100644 +--- a/doio.c ++++ b/doio.c +@@ -265,6 +265,21 @@ Perl_my_mkstemp_cloexec(char *templte) + #endif + } + ++int ++Perl_my_mkostemp_cloexec(char *templte, int flags) ++{ ++ dVAR; ++ PERL_ARGS_ASSERT_MY_MKOSTEMP_CLOEXEC; ++#if defined(O_CLOEXEC) ++ DO_ONEOPEN_EXPERIMENTING_CLOEXEC( ++ PL_strategy_mkstemp, ++ Perl_my_mkostemp(templte, flags | O_CLOEXEC), ++ Perl_my_mkostemp(templte, flags)); ++#else ++ DO_ONEOPEN_THEN_CLOEXEC(Perl_my_mkostemp(templte, flags)); ++#endif ++} ++ + #ifdef HAS_PIPE + int + Perl_PerlProc_pipe_cloexec(pTHX_ int *pipefd) +diff --git a/embed.fnc b/embed.fnc +index 259affd..c977d39 100644 +--- a/embed.fnc ++++ b/embed.fnc +@@ -476,6 +476,7 @@ p |int |PerlLIO_dup2_cloexec|int oldfd|int newfd + pR |int |PerlLIO_open_cloexec|NN const char *file|int flag + pR |int |PerlLIO_open3_cloexec|NN const char *file|int flag|int perm + pnoR |int |my_mkstemp_cloexec|NN char *templte ++pnoR |int |my_mkostemp_cloexec|NN char *templte|int flags + #ifdef HAS_PIPE + pR |int |PerlProc_pipe_cloexec|NN int *pipefd + #endif +diff --git a/perlio.c b/perlio.c +index 904d47a..5a0cd36 100644 +--- a/perlio.c ++++ b/perlio.c +@@ -1490,7 +1490,9 @@ PerlIO_openn(pTHX_ const char *layers, const char *mode, int fd, + int imode, int perm, PerlIO *f, int narg, SV **args) + { + if (!f && narg == 1 && *args == &PL_sv_undef) { +- if ((f = PerlIO_tmpfile())) { ++ int imode = PerlIOUnix_oflags(mode); ++ ++ if (imode != -1 && (f = PerlIO_tmpfile_flags(imode))) { + if (!layers || !*layers) + layers = Perl_PerlIO_context_layers(aTHX_ mode); + if (layers && *layers) +@@ -5048,6 +5050,15 @@ PerlIO_stdoutf(const char *fmt, ...) + #undef PerlIO_tmpfile + PerlIO * + PerlIO_tmpfile(void) ++{ ++ return PerlIO_tmpfile_flags(0); ++} ++ ++#define MKOSTEMP_MODES ( O_RDWR | O_CREAT | O_EXCL ) ++#define MKOSTEMP_MODE_MASK ( O_ACCMODE | O_CREAT | O_EXCL | O_TRUNC ) ++ ++PerlIO * ++PerlIO_tmpfile_flags(int imode) + { + #ifndef WIN32 + dTHX; +@@ -5063,27 +5074,32 @@ PerlIO_tmpfile(void) + const char * const tmpdir = TAINTING_get ? NULL : PerlEnv_getenv("TMPDIR"); + SV * sv = NULL; + int old_umask = umask(0177); ++ imode &= ~MKOSTEMP_MODE_MASK; + if (tmpdir && *tmpdir) { + /* if TMPDIR is set and not empty, we try that first */ + sv = newSVpv(tmpdir, 0); + sv_catpv(sv, tempname + 4); +- fd = Perl_my_mkstemp_cloexec(SvPVX(sv)); ++ fd = Perl_my_mkostemp_cloexec(SvPVX(sv), imode); + } + if (fd < 0) { + SvREFCNT_dec(sv); + sv = NULL; + /* else we try /tmp */ +- fd = Perl_my_mkstemp_cloexec(tempname); ++ fd = Perl_my_mkostemp_cloexec(tempname, imode); + } + if (fd < 0) { + /* Try cwd */ + sv = newSVpvs("."); + sv_catpv(sv, tempname + 4); +- fd = Perl_my_mkstemp_cloexec(SvPVX(sv)); ++ fd = Perl_my_mkostemp_cloexec(SvPVX(sv), imode); + } + umask(old_umask); + if (fd >= 0) { +- f = PerlIO_fdopen(fd, "w+"); ++ /* fdopen() with a numeric mode */ ++ char mode[8]; ++ int writing = 1; ++ (void)PerlIO_intmode2str(imode | MKOSTEMP_MODES, mode, &writing); ++ f = PerlIO_fdopen(fd, mode); + if (f) + PerlIOBase(f)->flags |= PERLIO_F_TEMP; + PerlLIO_unlink(sv ? SvPVX_const(sv) : tempname); +diff --git a/perlio.h b/perlio.h +index d515020..ee16ab8 100644 +--- a/perlio.h ++++ b/perlio.h +@@ -286,6 +286,9 @@ PERL_CALLCONV SSize_t PerlIO_get_bufsiz(PerlIO *); + #ifndef PerlIO_tmpfile + PERL_CALLCONV PerlIO *PerlIO_tmpfile(void); + #endif ++#ifndef PerlIO_tmpfile_flags ++PERL_CALLCONV PerlIO *PerlIO_tmpfile_flags(int flags); ++#endif + #ifndef PerlIO_stdin + PERL_CALLCONV PerlIO *PerlIO_stdin(void); + #endif +diff --git a/proto.h b/proto.h +index 74a8e46..e0ea55b 100644 +--- a/proto.h ++++ b/proto.h +@@ -2270,6 +2270,11 @@ PERL_CALLCONV Pid_t Perl_my_fork(void); + PERL_CALLCONV I32 Perl_my_lstat(pTHX); + #endif + PERL_CALLCONV I32 Perl_my_lstat_flags(pTHX_ const U32 flags); ++PERL_CALLCONV int Perl_my_mkostemp_cloexec(char *templte, int flags) ++ __attribute__warn_unused_result__; ++#define PERL_ARGS_ASSERT_MY_MKOSTEMP_CLOEXEC \ ++ assert(templte) ++ + PERL_CALLCONV int Perl_my_mkstemp_cloexec(char *templte) + __attribute__warn_unused_result__; + #define PERL_ARGS_ASSERT_MY_MKSTEMP_CLOEXEC \ +diff --git a/t/io/perlio_open.t b/t/io/perlio_open.t +index 99d7e51..56c354b 100644 +--- a/t/io/perlio_open.t ++++ b/t/io/perlio_open.t +@@ -11,7 +11,7 @@ BEGIN { + use strict; + use warnings; + +-plan tests => 6; ++plan tests => 10; + + use Fcntl qw(:seek); + +@@ -31,6 +31,16 @@ use Fcntl qw(:seek); + is($data, "the right read stuff", "found the right stuff"); + } + +- ++SKIP: ++{ ++ ok((open my $fh, "+>>", undef), "open my \$fh, '+>>', undef") ++ or skip "can't open temp for append: $!", 3; ++ print $fh "abc"; ++ ok(seek($fh, 0, SEEK_SET), "seek to zero"); ++ print $fh "xyz"; ++ ok(seek($fh, 0, SEEK_SET), "seek to zero again"); ++ my $data = <$fh>; ++ is($data, "abcxyz", "check the second write appended"); ++} + + +-- +2.20.1 + diff --git a/perl-5.30.0-perl-134266-make-sure-is-writable-when-we-write-to-i.patch b/perl-5.30.0-perl-134266-make-sure-is-writable-when-we-write-to-i.patch new file mode 100644 index 0000000..e3c9218 --- /dev/null +++ b/perl-5.30.0-perl-134266-make-sure-is-writable-when-we-write-to-i.patch @@ -0,0 +1,102 @@ +From 3f8dbf40138bd2bcb569b23c88888a41ede9c355 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Mon, 5 Aug 2019 15:23:45 +1000 +Subject: [PATCH] (perl #134266) make sure $@ is writable when we write to it +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +when unwinding. + +Since except_sv might be ERRSV we try to preserve it's value, +if not the actual SV (which we have an extra refcount on if it is +except_sv). + +Petr Písař: Ported to 5.30.0 from +933e3e630076d4fdbe32a101eeb5f12e37ec4ac2. + +Signed-off-by: Petr Písař +--- + perl.h | 17 +++++++++++++++++ + pp_ctl.c | 10 ++++++++-- + t/lib/croak/pp_ctl | 8 ++++++++ + 3 files changed, 33 insertions(+), 2 deletions(-) + +diff --git a/perl.h b/perl.h +index e5a5585..383487c 100644 +--- a/perl.h ++++ b/perl.h +@@ -1357,6 +1357,23 @@ EXTERN_C char *crypt(const char *, const char *); + } \ + } STMT_END + ++/* contains inlined gv_add_by_type */ ++#define SANE_ERRSV() STMT_START { \ ++ SV ** const svp = &GvSV(PL_errgv); \ ++ if (!*svp) { \ ++ *svp = newSVpvs(""); \ ++ } else if (SvREADONLY(*svp)) { \ ++ SV *dupsv = newSVsv(*svp); \ ++ SvREFCNT_dec_NN(*svp); \ ++ *svp = dupsv; \ ++ } else { \ ++ SV *const errsv = *svp; \ ++ if (SvMAGICAL(errsv)) { \ ++ mg_free(errsv); \ ++ } \ ++ } \ ++ } STMT_END ++ + + #ifdef PERL_CORE + # define DEFSV (0 + GvSVn(PL_defgv)) +diff --git a/pp_ctl.c b/pp_ctl.c +index a38b9c1..1f2d812 100644 +--- a/pp_ctl.c ++++ b/pp_ctl.c +@@ -1720,9 +1720,13 @@ Perl_die_unwind(pTHX_ SV *msv) + * perls 5.13.{1..7} which had late setting of $@ without this + * early-setting hack. + */ +- if (!(in_eval & EVAL_KEEPERR)) ++ if (!(in_eval & EVAL_KEEPERR)) { ++ /* remove any read-only/magic from the SV, so we don't ++ get infinite recursion when setting ERRSV */ ++ SANE_ERRSV(); + sv_setsv_flags(ERRSV, exceptsv, + (SV_GMAGIC|SV_DO_COW_SVSETSV|SV_NOSTEAL)); ++ } + + if (in_eval & EVAL_KEEPERR) { + Perl_ck_warner(aTHX_ packWARN(WARN_MISC), "\t(in cleanup) %" SVf, +@@ -1784,8 +1788,10 @@ Perl_die_unwind(pTHX_ SV *msv) + */ + S_pop_eval_context_maybe_croak(aTHX_ cx, exceptsv, 2); + +- if (!(in_eval & EVAL_KEEPERR)) ++ if (!(in_eval & EVAL_KEEPERR)) { ++ SANE_ERRSV(); + sv_setsv(ERRSV, exceptsv); ++ } + PL_restartjmpenv = restartjmpenv; + PL_restartop = restartop; + JMPENV_JUMP(3); +diff --git a/t/lib/croak/pp_ctl b/t/lib/croak/pp_ctl +index b1e754c..de0221b 100644 +--- a/t/lib/croak/pp_ctl ++++ b/t/lib/croak/pp_ctl +@@ -51,3 +51,11 @@ use 5.01; + default{} + EXPECT + Can't "default" outside a topicalizer at - line 2. ++######## ++# NAME croak with read only $@ ++eval '"a" =~ /${*@=\_})/'; ++die; ++# this would previously recurse infinitely in the eval ++EXPECT ++Unmatched ) in regex; marked by <-- HERE in m/_) <-- HERE / at (eval 1) line 1. ++ ...propagated at - line 2. +-- +2.21.0 + diff --git a/perl-5.30.0-pp.c-Add-two-UNLIKELY-s.patch b/perl-5.30.0-pp.c-Add-two-UNLIKELY-s.patch new file mode 100644 index 0000000..4565e07 --- /dev/null +++ b/perl-5.30.0-pp.c-Add-two-UNLIKELY-s.patch @@ -0,0 +1,42 @@ +From 4f0ded009bf6de2da6a2a2022bec03576dcb80ca Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Wed, 1 May 2019 10:41:38 -0600 +Subject: [PATCH] pp.c: Add two UNLIKELY()s +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It should be uncommon to shift beyond a full word + +Signed-off-by: Ported to 5.30.0 from +bae047b68c92622bb4bb04499e36cdaa48138909. +Signed-off-by: Petr Písař +--- + pp.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pp.c b/pp.c +index 90db3a0..7afb090 100644 +--- a/pp.c ++++ b/pp.c +@@ -1979,7 +1979,7 @@ static UV S_uv_shift(UV uv, int shift, bool left) + shift = -shift; + left = !left; + } +- if (shift >= IV_BITS) { ++ if (UNLIKELY(shift >= IV_BITS)) { + return 0; + } + return left ? uv << shift : uv >> shift; +@@ -1991,7 +1991,7 @@ static IV S_iv_shift(IV iv, int shift, bool left) + shift = -shift; + left = !left; + } +- if (shift >= IV_BITS) { ++ if (UNLIKELY(shift >= IV_BITS)) { + return iv < 0 && !left ? -1 : 0; + } + return left ? iv << shift : iv >> shift; +-- +2.20.1 + diff --git a/perl-5.30.1-handle-s-being-updated-without-len-being-updated.patch b/perl-5.30.1-handle-s-being-updated-without-len-being-updated.patch new file mode 100644 index 0000000..9f3e11d --- /dev/null +++ b/perl-5.30.1-handle-s-being-updated-without-len-being-updated.patch @@ -0,0 +1,47 @@ +From a0148bb8496444302b087bc0ffcf8dad42f8e475 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Mon, 11 Nov 2019 14:43:42 +1100 +Subject: [PATCH] handle s being updated without len being updated +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +fix #17279 + +Petr Písař: Ported to 5.30.1 from +e56dfd967ce460481a9922d14e931b438548093d. + +Signed-off-by: Petr Písař +--- + numeric.c | 2 +- + t/lib/croak/regcomp | 4 ++++ + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/numeric.c b/numeric.c +index d6ce53e..35adebe 100644 +--- a/numeric.c ++++ b/numeric.c +@@ -1552,7 +1552,7 @@ Perl_my_atof3(pTHX_ const char* orig, NV* value, const STRLEN len) + /* strtold() accepts 0x-prefixed hex and in POSIX implementations, + 0b-prefixed binary numbers, which is backward incompatible + */ +- if ((len == 0 || len >= 2) && *s == '0' && ++ if ((len == 0 || len - (s-orig) >= 2) && *s == '0' && + (isALPHA_FOLD_EQ(s[1], 'x') || isALPHA_FOLD_EQ(s[1], 'b'))) { + *value = 0; + return (char *)s+1; +diff --git a/t/lib/croak/regcomp b/t/lib/croak/regcomp +index 0ba705e..c0c2710 100644 +--- a/t/lib/croak/regcomp ++++ b/t/lib/croak/regcomp +@@ -70,3 +70,7 @@ qr/((a))/; + EXPECT + Too many nested open parens in regex; marked by <-- HERE in m/(( <-- HERE a))/ at - line 3. + ######## ++# NAME numeric parsing buffer overflow in numeric.c ++0=~/\p{nV:-0}/ ++EXPECT ++Can't find Unicode property definition "nV:-0" in regex; marked by <-- HERE in m/\p{nV:-0} <-- HERE / at - line 1. +-- +2.21.0 + diff --git a/perl-5.30.1-perl-125557-correctly-handle-overload-for-bin-oct-fl.patch b/perl-5.30.1-perl-125557-correctly-handle-overload-for-bin-oct-fl.patch new file mode 100644 index 0000000..6a91281 --- /dev/null +++ b/perl-5.30.1-perl-125557-correctly-handle-overload-for-bin-oct-fl.patch @@ -0,0 +1,116 @@ +From b061e315b4eac4d82edb3ca14581805417a68936 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Wed, 11 Sep 2019 11:50:23 +1000 +Subject: [PATCH] (perl #125557) correctly handle overload for bin/oct floats +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The hexfp code doesn't check that the shift is 4, and so also +accepts binary and octal fp numbers. + +Unfortunately the call to S_new_constant() always passed a prefix +of 0x, so overloading would be trying to parse the wrong number. + +Another option is to simply allow only hex floats, though some work +was done in 131894 to improve oct/bin float support. + +Petr Písař: Ported to 5.30.1 from +2cb5a7e8af11acb0eca22421ec5a4df7ef18e2a9. + +Signed-off-by: Petr Písař +--- + t/op/hexfp.t | 16 +++++++++++++++- + toke.c | 21 ++++++++++++++++----- + 2 files changed, 31 insertions(+), 6 deletions(-) + +diff --git a/t/op/hexfp.t b/t/op/hexfp.t +index 64f8136..0f239d4 100644 +--- a/t/op/hexfp.t ++++ b/t/op/hexfp.t +@@ -10,7 +10,7 @@ use strict; + + use Config; + +-plan(tests => 123); ++plan(tests => 125); + + # Test hexfloat literals. + +@@ -277,6 +277,20 @@ is(0b1p0, 1); + is(0b10p0, 2); + is(0b1.1p0, 1.5); + ++# previously these would pass "0x..." to the overload instead of the appropriate ++# "0b" or "0" prefix. ++fresh_perl_is(<<'CODE', "1", {}, "overload binary fp"); ++use overload; ++BEGIN { overload::constant float => sub { return eval $_[0]; }; } ++print 0b0.1p1; ++CODE ++ ++fresh_perl_is(<<'CODE', "1", {}, "overload octal fp"); ++use overload; ++BEGIN { overload::constant float => sub { return eval $_[0]; }; } ++print 00.1p3; ++CODE ++ + # sprintf %a/%A testing is done in sprintf2.t, + # trickier than necessary because of long doubles, + # and because looseness of the spec. +diff --git a/toke.c b/toke.c +index 03c4f2b..3fa20dc 100644 +--- a/toke.c ++++ b/toke.c +@@ -10966,6 +10966,7 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp) + const char *lastub = NULL; /* position of last underbar */ + static const char* const number_too_long = "Number too long"; + bool warned_about_underscore = 0; ++ I32 shift; /* shift per digit for hex/oct/bin, hoisted here for fp */ + #define WARN_ABOUT_UNDERSCORE() \ + do { \ + if (!warned_about_underscore) { \ +@@ -11012,8 +11013,6 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp) + { + /* variables: + u holds the "number so far" +- shift the power of 2 of the base +- (hex == 4, octal == 3, binary == 1) + overflowed was the number more than we can hold? + + Shift is used when we add a digit. It also serves as an "are +@@ -11022,7 +11021,6 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp) + */ + NV n = 0.0; + UV u = 0; +- I32 shift; + bool overflowed = FALSE; + bool just_zero = TRUE; /* just plain 0 or binary number? */ + static const NV nvshift[5] = { 1.0, 2.0, 4.0, 8.0, 16.0 }; +@@ -11369,8 +11367,21 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp) + if (hexfp) { + floatit = TRUE; + *d++ = '0'; +- *d++ = 'x'; +- s = start + 2; ++ switch (shift) { ++ case 4: ++ *d++ = 'x'; ++ s = start + 2; ++ break; ++ case 3: ++ s = start + 1; ++ break; ++ case 1: ++ *d++ = 'b'; ++ s = start + 2; ++ break; ++ default: ++ NOT_REACHED; /* NOTREACHED */ ++ } + } + + /* read next group of digits and _ and copy into d */ +-- +2.21.0 + diff --git a/perl-5.30.2-regcomp-use-long-jumps-if-there-is-any-possibility-o.patch b/perl-5.30.2-regcomp-use-long-jumps-if-there-is-any-possibility-o.patch new file mode 100644 index 0000000..c14c0fd --- /dev/null +++ b/perl-5.30.2-regcomp-use-long-jumps-if-there-is-any-possibility-o.patch @@ -0,0 +1,39 @@ +From 3295b48defa0f8570114877b063fe546dd348b3c Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Thu, 20 Feb 2020 17:49:36 +0000 +Subject: [PATCH 2/2] regcomp: use long jumps if there is any possibility of + overflow +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +(CVE-2020-10878) Be conservative for backporting, we'll aim to do +something more aggressive for bleadperl. + +(cherry picked from commit 9d7759db46f3b31b1d3f79c44266b6ba42a47fc6) +Signed-off-by: Petr Písař +--- + regcomp.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/regcomp.c b/regcomp.c +index 4ba2980db6..73c35a6702 100644 +--- a/regcomp.c ++++ b/regcomp.c +@@ -7762,6 +7762,13 @@ Perl_re_op_compile(pTHX_ SV ** const patternp, int pat_count, + + /* We have that number in RExC_npar */ + RExC_total_parens = RExC_npar; ++ ++ /* XXX For backporting, use long jumps if there is any possibility of ++ * overflow */ ++ if (RExC_size > U16_MAX && ! RExC_use_BRANCHJ) { ++ RExC_use_BRANCHJ = TRUE; ++ flags |= RESTART_PARSE; ++ } + } + else if (! MUST_RESTART(flags)) { + ReREFCNT_dec(Rx); +-- +2.25.4 + diff --git a/perl-5.30.2-regcomp.c-Prevent-integer-overflow-from-nested-regex.patch b/perl-5.30.2-regcomp.c-Prevent-integer-overflow-from-nested-regex.patch new file mode 100644 index 0000000..7601973 --- /dev/null +++ b/perl-5.30.2-regcomp.c-Prevent-integer-overflow-from-nested-regex.patch @@ -0,0 +1,39 @@ +From 897d1f7fd515b828e4b198d8b8bef76c6faf03ed Mon Sep 17 00:00:00 2001 +From: John Lightsey +Date: Wed, 20 Nov 2019 20:02:45 -0600 +Subject: [PATCH] regcomp.c: Prevent integer overflow from nested regex + quantifiers. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +(CVE-2020-10543) On 32bit systems the size calculations for nested regular +expression quantifiers could overflow causing heap memory corruption. + +Fixes: Perl/perl5-security#125 +(cherry picked from commit bfd31397db5dc1a5c5d3e0a1f753a4f89a736e71) +Signed-off-by: Petr Písař +--- + regcomp.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/regcomp.c b/regcomp.c +index 93c8d98fbb..5f86be8086 100644 +--- a/regcomp.c ++++ b/regcomp.c +@@ -5489,6 +5489,12 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, + RExC_precomp))); + } + ++ if ( ( minnext > 0 && mincount >= SSize_t_MAX / minnext ) ++ || min >= SSize_t_MAX - minnext * mincount ) ++ { ++ FAIL("Regexp out of space"); ++ } ++ + min += minnext * mincount; + is_inf_internal |= deltanext == SSize_t_MAX + || (maxcount == REG_INFTY && minnext + deltanext > 0); +-- +2.25.4 + diff --git a/perl-5.30.2-study_chunk-extract-rck_elide_nothing.patch b/perl-5.30.2-study_chunk-extract-rck_elide_nothing.patch new file mode 100644 index 0000000..2a60d73 --- /dev/null +++ b/perl-5.30.2-study_chunk-extract-rck_elide_nothing.patch @@ -0,0 +1,155 @@ +From 0a320d753fe7fca03df259a4dfd8e641e51edaa8 Mon Sep 17 00:00:00 2001 +From: Hugo van der Sanden +Date: Tue, 18 Feb 2020 13:51:16 +0000 +Subject: [PATCH 1/2] study_chunk: extract rck_elide_nothing +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +(CVE-2020-10878) + +(cherry picked from commit 93dee06613d4e1428fb10905ce1c3c96f53113dc) +Signed-off-by: Petr Písař +--- + embed.fnc | 1 + + embed.h | 1 + + proto.h | 3 +++ + regcomp.c | 70 ++++++++++++++++++++++++++++++++++--------------------- + 4 files changed, 48 insertions(+), 27 deletions(-) + +diff --git a/embed.fnc b/embed.fnc +index aedb4baef1..d7cd04d3fc 100644 +--- a/embed.fnc ++++ b/embed.fnc +@@ -2481,6 +2481,7 @@ Es |SSize_t|study_chunk |NN RExC_state_t *pRExC_state \ + |I32 stopparen|U32 recursed_depth \ + |NULLOK regnode_ssc *and_withp \ + |U32 flags|U32 depth ++Es |void |rck_elide_nothing|NN regnode *node + EsR |SV * |get_ANYOFM_contents|NN const regnode * n + EsRn |U32 |add_data |NN RExC_state_t* const pRExC_state \ + |NN const char* const s|const U32 n +diff --git a/embed.h b/embed.h +index 75c91f77f4..356a8b98d9 100644 +--- a/embed.h ++++ b/embed.h +@@ -1208,6 +1208,7 @@ + #define parse_lparen_question_flags(a) S_parse_lparen_question_flags(aTHX_ a) + #define parse_uniprop_string(a,b,c,d,e,f,g,h,i) Perl_parse_uniprop_string(aTHX_ a,b,c,d,e,f,g,h,i) + #define populate_ANYOF_from_invlist(a,b) S_populate_ANYOF_from_invlist(aTHX_ a,b) ++#define rck_elide_nothing(a) S_rck_elide_nothing(aTHX_ a) + #define reg(a,b,c,d) S_reg(aTHX_ a,b,c,d) + #define reg2Lanode(a,b,c,d) S_reg2Lanode(aTHX_ a,b,c,d) + #define reg_node(a,b) S_reg_node(aTHX_ a,b) +diff --git a/proto.h b/proto.h +index 141ddbaee6..f316fe134e 100644 +--- a/proto.h ++++ b/proto.h +@@ -5543,6 +5543,9 @@ PERL_CALLCONV SV * Perl_parse_uniprop_string(pTHX_ const char * const name, cons + STATIC void S_populate_ANYOF_from_invlist(pTHX_ regnode *node, SV** invlist_ptr); + #define PERL_ARGS_ASSERT_POPULATE_ANYOF_FROM_INVLIST \ + assert(node); assert(invlist_ptr) ++STATIC void S_rck_elide_nothing(pTHX_ regnode *node); ++#define PERL_ARGS_ASSERT_RCK_ELIDE_NOTHING \ ++ assert(node) + PERL_STATIC_NO_RET void S_re_croak2(pTHX_ bool utf8, const char* pat1, const char* pat2, ...) + __attribute__noreturn__; + #define PERL_ARGS_ASSERT_RE_CROAK2 \ +diff --git a/regcomp.c b/regcomp.c +index 5f86be8086..4ba2980db6 100644 +--- a/regcomp.c ++++ b/regcomp.c +@@ -4450,6 +4450,44 @@ S_unwind_scan_frames(pTHX_ const void *p) + } while (f); + } + ++/* Follow the next-chain of the current node and optimize away ++ all the NOTHINGs from it. ++ */ ++STATIC void ++S_rck_elide_nothing(pTHX_ regnode *node) ++{ ++ dVAR; ++ ++ PERL_ARGS_ASSERT_RCK_ELIDE_NOTHING; ++ ++ if (OP(node) != CURLYX) { ++ const int max = (reg_off_by_arg[OP(node)] ++ ? I32_MAX ++ /* I32 may be smaller than U16 on CRAYs! */ ++ : (I32_MAX < U16_MAX ? I32_MAX : U16_MAX)); ++ int off = (reg_off_by_arg[OP(node)] ? ARG(node) : NEXT_OFF(node)); ++ int noff; ++ regnode *n = node; ++ ++ /* Skip NOTHING and LONGJMP. */ ++ while ( ++ (n = regnext(n)) ++ && ( ++ (PL_regkind[OP(n)] == NOTHING && (noff = NEXT_OFF(n))) ++ || ((OP(n) == LONGJMP) && (noff = ARG(n))) ++ ) ++ && off + noff < max ++ ) { ++ off += noff; ++ } ++ if (reg_off_by_arg[OP(node)]) ++ ARG(node) = off; ++ else ++ NEXT_OFF(node) = off; ++ } ++ return; ++} ++ + /* the return from this sub is the minimum length that could possibly match */ + STATIC SSize_t + S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, +@@ -4550,28 +4588,10 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, + */ + JOIN_EXACT(scan,&min_subtract, &unfolded_multi_char, 0); + +- /* Follow the next-chain of the current node and optimize +- away all the NOTHINGs from it. */ +- if (OP(scan) != CURLYX) { +- const int max = (reg_off_by_arg[OP(scan)] +- ? I32_MAX +- /* I32 may be smaller than U16 on CRAYs! */ +- : (I32_MAX < U16_MAX ? I32_MAX : U16_MAX)); +- int off = (reg_off_by_arg[OP(scan)] ? ARG(scan) : NEXT_OFF(scan)); +- int noff; +- regnode *n = scan; +- +- /* Skip NOTHING and LONGJMP. */ +- while ((n = regnext(n)) +- && ((PL_regkind[OP(n)] == NOTHING && (noff = NEXT_OFF(n))) +- || ((OP(n) == LONGJMP) && (noff = ARG(n)))) +- && off + noff < max) +- off += noff; +- if (reg_off_by_arg[OP(scan)]) +- ARG(scan) = off; +- else +- NEXT_OFF(scan) = off; +- } ++ /* Follow the next-chain of the current node and optimize ++ away all the NOTHINGs from it. ++ */ ++ rck_elide_nothing(scan); + + /* The principal pseudo-switch. Cannot be a switch, since we + look into several different things. */ +@@ -5745,11 +5765,7 @@ Perl_re_printf( aTHX_ "LHS=%" UVuf " RHS=%" UVuf "\n", + if (data && (fl & SF_HAS_EVAL)) + data->flags |= SF_HAS_EVAL; + optimize_curly_tail: +- if (OP(oscan) != CURLYX) { +- while (PL_regkind[OP(next = regnext(oscan))] == NOTHING +- && NEXT_OFF(next)) +- NEXT_OFF(oscan) += NEXT_OFF(next); +- } ++ rck_elide_nothing(oscan); + continue; + + default: +-- +2.25.4 + diff --git a/perl-5.31.0-CAPTURE_ALL-was-intended-to-be-an-alias-for-make-it-.patch b/perl-5.31.0-CAPTURE_ALL-was-intended-to-be-an-alias-for-make-it-.patch new file mode 100644 index 0000000..68e782f --- /dev/null +++ b/perl-5.31.0-CAPTURE_ALL-was-intended-to-be-an-alias-for-make-it-.patch @@ -0,0 +1,85 @@ +From 1a1d29aaa2e0c668f9a8c960d52b516415f28983 Mon Sep 17 00:00:00 2001 +From: Vickenty Fesunov +Date: Fri, 22 Sep 2017 19:00:46 -0400 +Subject: [PATCH] %{^CAPTURE_ALL} was intended to be an alias for %-; make it + so. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +For: RT #131867 + +Add Vickenty Fesunov to AUTHORS. + +Signed-off-by: Ported to 5.30 from 1a1d29aaa2e0c668f9a8c960d52b516415f28983. + +--- + AUTHORS | 1 + + ext/Tie-Hash-NamedCapture/NamedCapture.xs | 5 ++++- + ext/Tie-Hash-NamedCapture/t/tiehash.t | 11 ++++++++--- + +diff --git a/AUTHORS b/AUTHORS +index 0091100600..c920d52e96 100644 +--- a/AUTHORS ++++ b/AUTHORS +@@ -1265,6 +1265,7 @@ Unicode Consortium + Vadim Konovalov + Valeriy E. Ushakov + Vernon Lyon ++Vickenty Fesunov + Victor Adam + Victor Efimov + Viktor Turskyi +diff --git a/ext/Tie-Hash-NamedCapture/NamedCapture.xs b/ext/Tie-Hash-NamedCapture/NamedCapture.xs +index 7eaae5614d..a607c10090 100644 +--- a/ext/Tie-Hash-NamedCapture/NamedCapture.xs ++++ b/ext/Tie-Hash-NamedCapture/NamedCapture.xs +@@ -25,8 +25,11 @@ _tie_it(SV *sv) + GV * const gv = (GV *)sv; + HV * const hv = GvHVn(gv); + SV *rv = newSV_type(SVt_RV); ++ const char *gv_name = GvNAME(gv); + CODE: +- SvRV_set(rv, newSVuv(*GvNAME(gv) == '-' ? RXapif_ALL : RXapif_ONE)); ++ SvRV_set(rv, newSVuv( ++ strEQ(gv_name, "-") || strEQ(gv_name, "\003APTURE_ALL") ++ ? RXapif_ALL : RXapif_ONE)); + SvROK_on(rv); + sv_bless(rv, GvSTASH(CvGV(cv))); + +diff --git a/ext/Tie-Hash-NamedCapture/t/tiehash.t b/ext/Tie-Hash-NamedCapture/t/tiehash.t +index 3ebc81ad68..962754085f 100644 +--- a/ext/Tie-Hash-NamedCapture/t/tiehash.t ++++ b/ext/Tie-Hash-NamedCapture/t/tiehash.t +@@ -3,7 +3,12 @@ use strict; + + use Test::More; + +-my %hashes = ('+' => \%+, '-' => \%-); ++my %hashes = ( ++ '+' => \%+, ++ '-' => \%-, ++ '{^CAPTURE}' => \%{^CAPTURE}, ++ '{^CAPTURE_ALL}' => \%{^CAPTURE_ALL}, ++); + + foreach (['plus1'], + ['minus1', all => 1], +@@ -20,12 +25,12 @@ foreach (['plus1'], + is("abcdef" =~ /(?[ab])*(?c)(?d)(?[ef]*)/, 1, + "We matched"); + +-foreach my $name (qw(+ plus1 plus2 plus3)) { ++foreach my $name (qw(+ {^CAPTURE} plus1 plus2 plus3)) { + my $hash = $hashes{$name}; + is_deeply($hash, { foo => 'b', bar => 'c' }, "%$name is as expected"); + } + +-foreach my $name (qw(- minus1 minus2)) { ++foreach my $name (qw(- {^CAPTURE_ALL} minus1 minus2)) { + my $hash = $hashes{$name}; + is_deeply($hash, { foo => [qw(b d)], bar => [qw(c ef)] }, + "%$name is as expected"); +-- +2.20.1 + diff --git a/perl-5.31.0-Create-fcn-for-lossless-conversion-of-NV-to-IV.patch b/perl-5.31.0-Create-fcn-for-lossless-conversion-of-NV-to-IV.patch new file mode 100644 index 0000000..c072cec --- /dev/null +++ b/perl-5.31.0-Create-fcn-for-lossless-conversion-of-NV-to-IV.patch @@ -0,0 +1,181 @@ +From 3a019afd6f6291c3249c254b5c01e244e4ec83ab Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Sun, 28 Apr 2019 17:42:44 -0600 +Subject: [PATCH 1/3] Create fcn for lossless conversion of NV to IV +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Essentially the same code was being used in three places, and had +undefined C behavior for some inputs. + +This consolidates the code into one inline function, and rewrites it to +avoid undefined behavior. + +Signed-off-by: Petr Písař +--- + embed.fnc | 1 + + embed.h | 3 +++ + inline.h | 34 ++++++++++++++++++++++++++++++++++ + pp.c | 20 ++++---------------- + pp_hot.c | 10 ++-------- + proto.h | 7 +++++++ + 6 files changed, 51 insertions(+), 24 deletions(-) + +diff --git a/embed.fnc b/embed.fnc +index 45597f67b6..259affded0 100644 +--- a/embed.fnc ++++ b/embed.fnc +@@ -2272,6 +2272,7 @@ sR |SV* |refto |NN SV* sv + : Used in pp_hot.c + pRxo |GV* |softref2xv |NN SV *const sv|NN const char *const what \ + |const svtype type|NN SV ***spp ++inR |bool |lossless_NV_to_IV|const NV nv|NN IV * ivp + #endif + + #if defined(PERL_IN_PP_PACK_C) +diff --git a/embed.h b/embed.h +index 75c91f77f4..9178c51e92 100644 +--- a/embed.h ++++ b/embed.h +@@ -1924,6 +1924,9 @@ + #define do_delete_local() S_do_delete_local(aTHX) + #define refto(a) S_refto(aTHX_ a) + # endif ++# if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) ++#define lossless_NV_to_IV S_lossless_NV_to_IV ++# endif + # if defined(PERL_IN_PP_CTL_C) + #define check_type_and_open(a) S_check_type_and_open(aTHX_ a) + #define destroy_matcher(a) S_destroy_matcher(aTHX_ a) +diff --git a/inline.h b/inline.h +index 654f801b75..de1e33e8ce 100644 +--- a/inline.h ++++ b/inline.h +@@ -1913,6 +1913,40 @@ S_should_warn_nl(const char *pv) { + + #endif + ++#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) ++ ++PERL_STATIC_INLINE bool ++S_lossless_NV_to_IV(const NV nv, IV *ivp) ++{ ++ /* This function determines if the input NV 'nv' may be converted without ++ * loss of data to an IV. If not, it returns FALSE taking no other action. ++ * But if it is possible, it does the conversion, returning TRUE, and ++ * storing the converted result in '*ivp' */ ++ ++ PERL_ARGS_ASSERT_LOSSLESS_NV_TO_IV; ++ ++# if defined(Perl_isnan) ++ ++ if (UNLIKELY(Perl_isnan(nv))) { ++ return FALSE; ++ } ++ ++# endif ++ ++ if (UNLIKELY(nv < IV_MIN) || UNLIKELY(nv > IV_MAX)) { ++ return FALSE; ++ } ++ ++ if ((IV) nv != nv) { ++ return FALSE; ++ } ++ ++ *ivp = (IV) nv; ++ return TRUE; ++} ++ ++#endif ++ + /* ------------------ pp.c, regcomp.c, toke.c, universal.c ------------ */ + + #define MAX_CHARSET_NAME_LENGTH 2 +diff --git a/pp.c b/pp.c +index c89cb7198c..0956121b27 100644 +--- a/pp.c ++++ b/pp.c +@@ -1268,16 +1268,10 @@ PP(pp_multiply) + NV nr = SvNVX(svr); + NV result; + +- if ( +-#if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan) +- !Perl_isnan(nl) && nl == (NV)(il = (IV)nl) +- && !Perl_isnan(nr) && nr == (NV)(ir = (IV)nr) +-#else +- nl == (NV)(il = (IV)nl) && nr == (NV)(ir = (IV)nr) +-#endif +- ) ++ if (lossless_NV_to_IV(nl, &il) && lossless_NV_to_IV(nr, &ir)) { + /* nothing was lost by converting to IVs */ + goto do_iv; ++ } + SP--; + result = nl * nr; + # if defined(__sgi) && defined(USE_LONG_DOUBLE) && LONG_DOUBLEKIND == LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE && NVSIZE == 16 +@@ -1849,16 +1843,10 @@ PP(pp_subtract) + NV nl = SvNVX(svl); + NV nr = SvNVX(svr); + +- if ( +-#if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan) +- !Perl_isnan(nl) && nl == (NV)(il = (IV)nl) +- && !Perl_isnan(nr) && nr == (NV)(ir = (IV)nr) +-#else +- nl == (NV)(il = (IV)nl) && nr == (NV)(ir = (IV)nr) +-#endif +- ) ++ if (lossless_NV_to_IV(nl, &il) && lossless_NV_to_IV(nr, &ir)) { + /* nothing was lost by converting to IVs */ + goto do_iv; ++ } + SP--; + TARGn(nl - nr, 0); /* args not GMG, so can't be tainted */ + SETs(TARG); +diff --git a/pp_hot.c b/pp_hot.c +index 7d5ffc02fd..2df5df8303 100644 +--- a/pp_hot.c ++++ b/pp_hot.c +@@ -1435,16 +1435,10 @@ PP(pp_add) + NV nl = SvNVX(svl); + NV nr = SvNVX(svr); + +- if ( +-#if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan) +- !Perl_isnan(nl) && nl == (NV)(il = (IV)nl) +- && !Perl_isnan(nr) && nr == (NV)(ir = (IV)nr) +-#else +- nl == (NV)(il = (IV)nl) && nr == (NV)(ir = (IV)nr) +-#endif +- ) ++ if (lossless_NV_to_IV(nl, &il) && lossless_NV_to_IV(nr, &ir)) { + /* nothing was lost by converting to IVs */ + goto do_iv; ++ } + SP--; + TARGn(nl + nr, 0); /* args not GMG, so can't be tainted */ + SETs(TARG); +diff --git a/proto.h b/proto.h +index 0f8feed187..74a8e46ab7 100644 +--- a/proto.h ++++ b/proto.h +@@ -5224,6 +5224,13 @@ STATIC SV* S_refto(pTHX_ SV* sv) + + #endif + #if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) ++#ifndef PERL_NO_INLINE_FUNCTIONS ++PERL_STATIC_INLINE bool S_lossless_NV_to_IV(const NV nv, IV * ivp) ++ __attribute__warn_unused_result__; ++#define PERL_ARGS_ASSERT_LOSSLESS_NV_TO_IV \ ++ assert(ivp) ++#endif ++ + PERL_CALLCONV GV* Perl_softref2xv(pTHX_ SV *const sv, const char *const what, const svtype type, SV ***spp) + __attribute__warn_unused_result__; + #define PERL_ARGS_ASSERT_SOFTREF2XV \ +-- +2.20.1 + diff --git a/perl-5.31.0-Don-t-use-PL_check-op_type-to-check-for-filetets-ops.patch b/perl-5.31.0-Don-t-use-PL_check-op_type-to-check-for-filetets-ops.patch new file mode 100644 index 0000000..dca5f98 --- /dev/null +++ b/perl-5.31.0-Don-t-use-PL_check-op_type-to-check-for-filetets-ops.patch @@ -0,0 +1,87 @@ +From 1d31efef7dd4388fd606972e67bda3318e8838fe Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Dagfinn=20Ilmari=20Manns=C3=A5ker?= +Date: Tue, 21 May 2019 17:34:49 +0100 +Subject: [PATCH] Don't use PL_check[op_type] to check for filetets ops to + stack +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This breaks hooking the filetest ops' check function by modules like +bareword::filehandles. Instead use the OP_IS_FILETEST() macro to decide +check for filetest ops. Also add an OP_IS_STAT() macro for when we want +to check for (l)stat as well as the filetest ops. + +c.f. https://rt.cpan.org/Ticket/Display.html?id=127073 + +Signed-off-by: Petr Písař +--- + op.c | 11 ++++------- + op.h | 2 ++ + regen/opcodes | 1 + + 3 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/op.c b/op.c +index 29181ba731..dba7ac7fea 100644 +--- a/op.c ++++ b/op.c +@@ -991,8 +991,7 @@ Perl_op_clear(pTHX_ OP *o) + o->op_targ = 0; + break; + default: +- if (!(o->op_flags & OPf_REF) +- || (PL_check[o->op_type] != Perl_ck_ftst)) ++ if (!(o->op_flags & OPf_REF) || !OP_IS_STAT(o->op_type)) + break; + /* FALLTHROUGH */ + case OP_GVSV: +@@ -4413,8 +4412,7 @@ Perl_op_lvalue_flags(pTHX_ OP *o, I32 type, U32 flags) + /* [20011101.069 (#7861)] File test operators interpret OPf_REF to mean that + their argument is a filehandle; thus \stat(".") should not set + it. AMS 20011102 */ +- if (type == OP_REFGEN && +- PL_check[o->op_type] == Perl_ck_ftst) ++ if (type == OP_REFGEN && OP_IS_STAT(o->op_type)) + return o; + + if (type != OP_LEAVESUBLV) +@@ -11696,9 +11694,8 @@ Perl_ck_ftst(pTHX_ OP *o) + scalar((OP *) kid); + if ((PL_hints & HINT_FILETEST_ACCESS) && OP_IS_FILETEST_ACCESS(o->op_type)) + o->op_private |= OPpFT_ACCESS; +- if (type != OP_STAT && type != OP_LSTAT +- && PL_check[kidtype] == Perl_ck_ftst +- && kidtype != OP_STAT && kidtype != OP_LSTAT ++ if (OP_IS_FILETEST(type) ++ && OP_IS_FILETEST(kidtype) + ) { + o->op_private |= OPpFT_STACKED; + kid->op_private |= OPpFT_STACKING; +diff --git a/op.h b/op.h +index c9f05b2271..ad6cf7fe49 100644 +--- a/op.h ++++ b/op.h +@@ -1021,6 +1021,8 @@ C is non-null. For a higher-level interface, see C>. + #define OP_TYPE_ISNT_AND_WASNT(o, type) \ + ( (o) && OP_TYPE_ISNT_AND_WASNT_NN(o, type) ) + ++/* should match anything that uses ck_ftst in regen/opcodes */ ++#define OP_IS_STAT(op) (OP_IS_FILETEST(op) || (op) == OP_LSTAT || (op) == OP_STAT) + + # define OpHAS_SIBLING(o) (cBOOL((o)->op_moresib)) + # define OpSIBLING(o) (0 + (o)->op_moresib ? (o)->op_sibparent : NULL) +diff --git a/regen/opcodes b/regen/opcodes +index b4bf904fdc..4e8236947a 100644 +--- a/regen/opcodes ++++ b/regen/opcodes +@@ -397,6 +397,7 @@ getsockname getsockname ck_fun is% Fs + getpeername getpeername ck_fun is% Fs + + # Stat calls. OP_IS_FILETEST wants them consecutive. ++# Also needs to match OP_IS_STAT() in op.h + + lstat lstat ck_ftst u- F? + stat stat ck_ftst u- F? +-- +2.20.1 + diff --git a/perl-5.31.0-PATCH-perl-134059-panic-outputting-a-warning.patch b/perl-5.31.0-PATCH-perl-134059-panic-outputting-a-warning.patch new file mode 100644 index 0000000..629e71c --- /dev/null +++ b/perl-5.31.0-PATCH-perl-134059-panic-outputting-a-warning.patch @@ -0,0 +1,75 @@ +From cc16d262eb72677cdda2aa9395e943818b85ba38 Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Mon, 29 Apr 2019 15:24:18 -0600 +Subject: [PATCH] PATCH: [perl #134059] panic outputting a warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This was due to a logic error on my part. We need to save and restore a +value. Instead, it was getting restored to the wrong value. + +This particular instance of the bug was outputting a fatal error +message, so that the only harm is not giving the user the correct info, +and creating unnecessary work for them and us when it gets reported. +But this bug could manifest itself when trying to output just a warning +that the program otherwise would carry on from. + +Signed-off-by: Petr Písař +--- + regcomp.c | 12 ++++++++++-- + t/re/reg_mesg.t | 1 + + 2 files changed, 11 insertions(+), 2 deletions(-) + +diff --git a/regcomp.c b/regcomp.c +index 3ad09c52b2..1c54fe3f38 100644 +--- a/regcomp.c ++++ b/regcomp.c +@@ -131,6 +131,8 @@ struct RExC_state_t { + char *parse; /* Input-scan pointer. */ + char *copy_start; /* start of copy of input within + constructed parse string */ ++ char *save_copy_start; /* Provides one level of saving ++ and restoring 'copy_start' */ + char *copy_start_in_input; /* Position in input string + corresponding to copy_start */ + SSize_t whilem_seen; /* number of WHILEM in this expr */ +@@ -229,6 +231,7 @@ struct RExC_state_t { + #define RExC_precomp (pRExC_state->precomp) + #define RExC_copy_start_in_input (pRExC_state->copy_start_in_input) + #define RExC_copy_start_in_constructed (pRExC_state->copy_start) ++#define RExC_save_copy_start_in_constructed (pRExC_state->save_copy_start) + #define RExC_precomp_end (pRExC_state->precomp_end) + #define RExC_rx_sv (pRExC_state->rx_sv) + #define RExC_rx (pRExC_state->rx) +@@ -821,8 +824,13 @@ static const scan_data_t zero_scan_data = { + } STMT_END + + /* Setting this to NULL is a signal to not output warnings */ +-#define TURN_OFF_WARNINGS_IN_SUBSTITUTE_PARSE RExC_copy_start_in_constructed = NULL +-#define RESTORE_WARNINGS RExC_copy_start_in_constructed = RExC_precomp ++#define TURN_OFF_WARNINGS_IN_SUBSTITUTE_PARSE \ ++ STMT_START { \ ++ RExC_save_copy_start_in_constructed = RExC_copy_start_in_constructed;\ ++ RExC_copy_start_in_constructed = NULL; \ ++ } STMT_END ++#define RESTORE_WARNINGS \ ++ RExC_copy_start_in_constructed = RExC_save_copy_start_in_constructed + + /* Since a warning can be generated multiple times as the input is reparsed, we + * output it the first time we come to that point in the parse, but suppress it +diff --git a/t/re/reg_mesg.t b/t/re/reg_mesg.t +index c5c79f0323..d10fa2c09a 100644 +--- a/t/re/reg_mesg.t ++++ b/t/re/reg_mesg.t +@@ -318,6 +318,7 @@ my @death = + '/\p{Is_Other_Alphabetic=F}/ ' => 'Can\'t find Unicode property definition "Is_Other_Alphabetic=F" {#} m/\p{Is_Other_Alphabetic=F}{#}/', + '/\x{100}(?(/' => 'Unknown switch condition (?(...)) {#} m/\\x{100}(?({#}/', # [perl #133896] + '/(?[\N{KEYCAP DIGIT NINE}/' => '\N{} in inverted character class or as a range end-point is restricted to one character {#} m/(?[\\N{U+39.FE0F.20E3{#}}/', # [perl #133988] ++ '/0000000000000000[\N{U+0.00}0000/' => 'Unmatched [ {#} m/0000000000000000[{#}\N{U+0.00}0000/', # [perl #134059] + ); + + # These are messages that are death under 'use re "strict"', and may or may +-- +2.20.1 + diff --git a/perl-5.31.0-S_scan_const-Properly-test-if-need-to-grow.patch b/perl-5.31.0-S_scan_const-Properly-test-if-need-to-grow.patch new file mode 100644 index 0000000..74957d4 --- /dev/null +++ b/perl-5.31.0-S_scan_const-Properly-test-if-need-to-grow.patch @@ -0,0 +1,49 @@ +From 89f69032d6a71f41b96ae6becbf3df4e2f9509a5 Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Sat, 27 Apr 2019 13:56:39 -0600 +Subject: [PATCH] S_scan_const() Properly test if need to grow +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +As we parse the input, creating a string constant, we may have to grow +the destination if it fills up as we go along. It allocates space in an +SV and populates the string, but it doesn' update the SvCUR until the +end, so in single stepping the debugger through the code, the SV looks +empty until the end. It turns out that as a result SvEND also doesn't +get updated and still points to the beginning of the string until SvCUR +is finally set. That means that the test changed by this commit was +always succeeding, because it was using SvEND that didn't get updated, +so it would attempt to grow each time through the loop. By moving a +couple of statements earlier, and using SvLEN instead, which does always +have the correct value, those extra growth attempts are avoided. + +Signed-off-by: Petr Písař +--- + toke.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/toke.c b/toke.c +index 68eea0cae6..03c4f2ba26 100644 +--- a/toke.c ++++ b/toke.c +@@ -4097,10 +4097,12 @@ S_scan_const(pTHX_ char *start) + goto default_action; /* Redo, having upgraded so both are UTF-8 */ + } + else { /* UTF8ness matters: convert this non-UTF8 source char to +- UTF-8 for output. It will occupy 2 bytes */ +- if (d + 2 >= SvEND(sv)) { +- const STRLEN extra = 2 + (send - s - 1) + 1; +- const STRLEN off = d - SvPVX_const(sv); ++ UTF-8 for output. It will occupy 2 bytes, but don't include ++ the input byte since we haven't incremented 's' yet. See ++ Note on sizing above. */ ++ const STRLEN off = d - SvPVX(sv); ++ const STRLEN extra = 2 + (send - s - 1) + 1; ++ if (off + extra > SvLEN(sv)) { + d = off + SvGROW(sv, off + extra); + } + *d++ = UTF8_EIGHT_BIT_HI(*s); +-- +2.20.1 + diff --git a/perl-5.31.0-perl-122112-a-simpler-fix-for-pclose-aborted-by-a-si.patch b/perl-5.31.0-perl-122112-a-simpler-fix-for-pclose-aborted-by-a-si.patch new file mode 100644 index 0000000..e7e2b38 --- /dev/null +++ b/perl-5.31.0-perl-122112-a-simpler-fix-for-pclose-aborted-by-a-si.patch @@ -0,0 +1,70 @@ +From 35608a1658fe75c79ca53d96aea6cf7cb2a98615 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Thu, 9 May 2019 09:52:30 +1000 +Subject: [PATCH] (perl #122112) a simpler fix for pclose() aborted by a signal +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This change results in a zombie child process for the lifetime of +the process, but I think that's the responsibility of the signal +handler that aborted pclose(). + +We could add some magic to retry (and retry and retry) waiting on +child process as we rewind (since there's no other way to remove +the zombie), but the program has chosen implicitly to abort the +wait() done by pclose() and it's best to honor that. + +If we do choose to retry the wait() we might be blocking an attempt +by the process to terminate, whether by exit() or die(). + +If a program does need more flexible handling there's always +pipe()/fork()/exec() and/or the various event-driven frameworks on +CPAN. + +Signed-off-by: Petr Písař +--- + doio.c | 12 +++++++++++- + t/io/pipe.t | 2 -- + 2 files changed, 11 insertions(+), 3 deletions(-) + +diff --git a/doio.c b/doio.c +index 0cc4e55404..05a06968dc 100644 +--- a/doio.c ++++ b/doio.c +@@ -1779,7 +1779,17 @@ Perl_io_close(pTHX_ IO *io, GV *gv, bool not_implicit, bool warn_on_fail) + + if (IoIFP(io)) { + if (IoTYPE(io) == IoTYPE_PIPE) { +- const int status = PerlProc_pclose(IoIFP(io)); ++ PerlIO *fh = IoIFP(io); ++ int status; ++ ++ /* my_pclose() can propagate signals which might bypass any code ++ after the call here if the signal handler throws an exception. ++ This would leave the handle in the IO object and try to close it again ++ when the SV is destroyed on unwind or global destruction. ++ So NULL it early. ++ */ ++ IoOFP(io) = IoIFP(io) = NULL; ++ status = PerlProc_pclose(fh); + if (not_implicit) { + STATUS_NATIVE_CHILD_SET(status); + retval = (STATUS_UNIX == 0); +diff --git a/t/io/pipe.t b/t/io/pipe.t +index 1d01db6af6..fc3071300d 100644 +--- a/t/io/pipe.t ++++ b/t/io/pipe.t +@@ -255,9 +255,7 @@ close \$fh; + PROG + print $prog; + my $out = fresh_perl($prog, {}); +- $::TODO = "not fixed yet"; + cmp_ok($out, '!~', qr/refcnt/, "no exception from PerlIO"); +- undef $::TODO; + # checks that that program did something rather than failing to + # compile + cmp_ok($out, '=~', qr/Died at/, "but we did get the exception from die"); +-- +2.20.1 + diff --git a/perl-5.31.0-perl-122112-remove-some-interfering-debug-output.patch b/perl-5.31.0-perl-122112-remove-some-interfering-debug-output.patch new file mode 100644 index 0000000..2733044 --- /dev/null +++ b/perl-5.31.0-perl-122112-remove-some-interfering-debug-output.patch @@ -0,0 +1,28 @@ +From 2fe0d7f40a94163d6c242c3e695fdcd19e387422 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Tue, 11 Jun 2019 14:59:23 +1000 +Subject: [PATCH] (perl #122112) remove some interfering debug output +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + t/io/pipe.t | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/t/io/pipe.t b/t/io/pipe.t +index fc3071300d..9f5bb3bcf8 100644 +--- a/t/io/pipe.t ++++ b/t/io/pipe.t +@@ -253,7 +253,6 @@ my \$cmd = qq(\$Perl -e "sleep 3"); + my \$pid = open my \$fh, "|\$cmd" or die "\$!\n"; + close \$fh; + PROG +- print $prog; + my $out = fresh_perl($prog, {}); + cmp_ok($out, '!~', qr/refcnt/, "no exception from PerlIO"); + # checks that that program did something rather than failing to +-- +2.20.1 + diff --git a/perl-5.31.0-perl-122112-test-for-signal-handler-death-in-pclose.patch b/perl-5.31.0-perl-122112-test-for-signal-handler-death-in-pclose.patch new file mode 100644 index 0000000..035f202 --- /dev/null +++ b/perl-5.31.0-perl-122112-test-for-signal-handler-death-in-pclose.patch @@ -0,0 +1,54 @@ +From fb5e77103dd443cc2112ba14dc665aa5ec072ce6 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Wed, 30 May 2018 14:03:04 +1000 +Subject: [PATCH] (perl #122112) test for signal handler death in pclose +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + t/io/pipe.t | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +diff --git a/t/io/pipe.t b/t/io/pipe.t +index f9ee65afe8..1d01db6af6 100644 +--- a/t/io/pipe.t ++++ b/t/io/pipe.t +@@ -10,7 +10,7 @@ if (!$Config{'d_fork'}) { + skip_all("fork required to pipe"); + } + else { +- plan(tests => 25); ++ plan(tests => 27); + } + + my $Perl = which_perl(); +@@ -241,3 +241,24 @@ SKIP: { + + is($child, -1, 'child reaped if piped program cannot be executed'); + } ++ ++{ ++ # [perl #122112] refcnt: fd -1 < 0 when a signal handler dies ++ # while a pipe close is waiting on a child process ++ my $prog = < +Date: Wed, 20 Mar 2019 16:47:49 +1100 +Subject: [PATCH] (perl #133913) limit numeric format results to INT_MAX +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The return value of v?snprintf() is int, and we pay attention to that +return value, so limit the expected size of numeric formats to +INT_MAX. + +Signed-off-by: Petr Písař +--- + pod/perldiag.pod | 6 ++++++ + sv.c | 7 +++++++ + t/op/sprintf2.t | 7 +++++++ + 3 files changed, 20 insertions(+) + +diff --git a/pod/perldiag.pod b/pod/perldiag.pod +index 1037215d44..166d29b4bb 100644 +--- a/pod/perldiag.pod ++++ b/pod/perldiag.pod +@@ -4354,6 +4354,12 @@ the meantime, try using scientific notation (e.g. "1e6" instead of + a number. This happens, for example with C<\o{}>, with no number between + the braces. + ++=item Numeric format result too large ++ ++(F) The length of the result of a numeric format supplied to sprintf() ++or printf() would have been too large for the underlying C function to ++report. This limit is typically 2GB. ++ + =item Octal number > 037777777777 non-portable + + (W portable) The octal number you specified is larger than 2**32-1 +diff --git a/sv.c b/sv.c +index 8fbca52eb2..8bc0af0c16 100644 +--- a/sv.c ++++ b/sv.c +@@ -13085,6 +13085,13 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p + if (float_need < width) + float_need = width; + ++ if (float_need > INT_MAX) { ++ /* snprintf() returns an int, and we use that return value, ++ so die horribly if the expected size is too large for int ++ */ ++ Perl_croak(aTHX_ "Numeric format result too large"); ++ } ++ + if (PL_efloatsize <= float_need) { + /* PL_efloatbuf should be at least 1 greater than + * float_need to allow a trailing \0 to be returned by +diff --git a/t/op/sprintf2.t b/t/op/sprintf2.t +index 84259a4afd..5fee8efede 100644 +--- a/t/op/sprintf2.t ++++ b/t/op/sprintf2.t +@@ -1153,4 +1153,11 @@ foreach( + is sprintf("%.0f", $_), sprintf("%-.0f", $_), "special-case %.0f on $_"; + } + ++# large uvsize needed so the large width is parsed properly ++# large sizesize needed so the STRLEN check doesn't ++if ($Config{intsize} == 4 && $Config{uvsize} > 4 && $Config{sizesize} > 4) { ++ eval { my $x = sprintf("%7000000000E", 0) }; ++ like($@, qr/^Numeric format result too large at /, ++ "croak for very large numeric format results"); ++} + done_testing(); +-- +2.20.1 + diff --git a/perl-5.31.0-perl-133936-document-differences-between-IO-Socket-a.patch b/perl-5.31.0-perl-133936-document-differences-between-IO-Socket-a.patch new file mode 100644 index 0000000..fcdce36 --- /dev/null +++ b/perl-5.31.0-perl-133936-document-differences-between-IO-Socket-a.patch @@ -0,0 +1,78 @@ +From 1d9630e7857d6fbae6fddd261fbb80c9c9a8cfd6 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Mon, 18 Mar 2019 16:02:33 +1100 +Subject: [PATCH] (perl #133936) document differences between IO::Socket::* and + builtin +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + dist/IO/lib/IO/Socket.pm | 43 +++++++++++++++++++++++++++++++++++++--- + 1 file changed, 40 insertions(+), 3 deletions(-) + +diff --git a/dist/IO/lib/IO/Socket.pm b/dist/IO/lib/IO/Socket.pm +index da9e8c94d0..345ffd475d 100644 +--- a/dist/IO/lib/IO/Socket.pm ++++ b/dist/IO/lib/IO/Socket.pm +@@ -434,9 +434,6 @@ corresponding built-in functions: + bind + listen + accept +- send +- recv +- peername (getpeername) + sockname (getsockname) + shutdown + +@@ -517,6 +514,46 @@ SO_LINGER enabled with a zero timeout, then the peer's close() will generate + a RST segment, upon receipt of which the local TCP transitions immediately to + B, and in that state, connected() I return undef. + ++=item send(MSG, [, FLAGS [, TO ] ]) ++ ++Like the built-in L, except that: ++ ++=over ++ ++=item * ++ ++C is optional and defaults to C<0>, and ++ ++=item * ++ ++after a successful send with C, further calls to send() without ++C will send to the same address, and C will be used as the ++result of peername(). ++ ++=back ++ ++=item recv(BUF, LEN, [,FLAGS]) ++ ++Like the built-in L, except that: ++ ++=over ++ ++=item * ++ ++C is optional and defaults to C<0>, and ++ ++=item * ++ ++the cached value returned by peername() is updated with the result of ++recv(). ++ ++=back ++ ++=item peername ++ ++Returns the cached peername, possibly set by recv() or send() above. ++If not otherwise set returns (and caches) the result of getpeername(). ++ + =item protocol + + Returns the numerical number for the protocol being used on the socket, if +-- +2.20.1 + diff --git a/perl-5.31.0-perl-133936-ensure-TO-is-honoured-for-UDP-sock-send.patch b/perl-5.31.0-perl-133936-ensure-TO-is-honoured-for-UDP-sock-send.patch new file mode 100644 index 0000000..dbe89b9 --- /dev/null +++ b/perl-5.31.0-perl-133936-ensure-TO-is-honoured-for-UDP-sock-send.patch @@ -0,0 +1,107 @@ +From f1000aa2d58fbed2741dbb2887b668f872ef0cb8 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Mon, 18 Mar 2019 15:05:32 +1100 +Subject: [PATCH] (perl #133936) ensure TO is honoured for UDP $sock->send() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + dist/IO/lib/IO/Socket.pm | 7 ++++--- + dist/IO/t/io_udp.t | 31 +++++++++++++++++++++++++++---- + 2 files changed, 31 insertions(+), 7 deletions(-) + +diff --git a/dist/IO/lib/IO/Socket.pm b/dist/IO/lib/IO/Socket.pm +index 1bf57ab826..a34a10b232 100644 +--- a/dist/IO/lib/IO/Socket.pm ++++ b/dist/IO/lib/IO/Socket.pm +@@ -282,9 +282,10 @@ sub send { + croak 'send: Cannot determine peer address' + unless(defined $peer); + +- my $r = defined(getpeername($sock)) +- ? send($sock, $_[1], $flags) +- : send($sock, $_[1], $flags, $peer); ++ my $type = $sock->socktype; ++ my $r = $type == SOCK_DGRAM || $type == SOCK_RAW ++ ? send($sock, $_[1], $flags, $peer) ++ : send($sock, $_[1], $flags); + + # remember who we send to, if it was successful + ${*$sock}{'io_socket_peername'} = $peer +diff --git a/dist/IO/t/io_udp.t b/dist/IO/t/io_udp.t +index d7e95a8829..571e4303bb 100644 +--- a/dist/IO/t/io_udp.t ++++ b/dist/IO/t/io_udp.t +@@ -15,6 +15,8 @@ BEGIN { + skip_all($reason) if $reason; + } + ++use strict; ++ + sub compare_addr { + no utf8; + my $a = shift; +@@ -36,18 +38,18 @@ sub compare_addr { + "$a[0]$a[1]" eq "$b[0]$b[1]"; + } + +-plan(7); ++plan(15); + watchdog(15); + + use Socket; + use IO::Socket qw(AF_INET SOCK_DGRAM INADDR_ANY); + +-$udpa = IO::Socket::INET->new(Proto => 'udp', LocalAddr => 'localhost') ++my $udpa = IO::Socket::INET->new(Proto => 'udp', LocalAddr => 'localhost') + || IO::Socket::INET->new(Proto => 'udp', LocalAddr => '127.0.0.1') + or die "$! (maybe your system does not have a localhost at all, 'localhost' or 127.0.0.1)"; + ok(1); + +-$udpb = IO::Socket::INET->new(Proto => 'udp', LocalAddr => 'localhost') ++my $udpb = IO::Socket::INET->new(Proto => 'udp', LocalAddr => 'localhost') + || IO::Socket::INET->new(Proto => 'udp', LocalAddr => '127.0.0.1') + or die "$! (maybe your system does not have a localhost at all, 'localhost' or 127.0.0.1)"; + ok(1); +@@ -56,6 +58,7 @@ $udpa->send('BORK', 0, $udpb->sockname); + + ok(compare_addr($udpa->peername,$udpb->sockname, 'peername', 'sockname')); + ++my $buf; + my $where = $udpb->recv($buf="", 4); + is($buf, 'BORK'); + +@@ -69,7 +72,27 @@ $udpb->send('FOObar', @xtra); + $udpa->recv($buf="", 6); + is($buf, 'FOObar'); + +-ok(! $udpa->connected); ++{ ++ # check the TO parameter passed to $sock->send() is honoured for UDP sockets ++ # [perl #133936] ++ my $udpc = IO::Socket::INET->new(Proto => 'udp', LocalAddr => 'localhost') ++ || IO::Socket::INET->new(Proto => 'udp', LocalAddr => '127.0.0.1') ++ or die "$! (maybe your system does not have a localhost at all, 'localhost' or 127.0.0.1)"; ++ pass("created C socket"); ++ ++ ok($udpc->connect($udpa->sockname), "connect C to A"); ++ ++ ok($udpc->connected, "connected a UDP socket"); ++ ++ ok($udpc->send("fromctoa"), "send to a"); ++ ++ ok($udpa->recv($buf = "", 8), "recv it"); ++ is($buf, "fromctoa", "check value received"); ++ ++ ok($udpc->send("fromctob", 0, $udpb->sockname), "send to non-connected socket"); ++ ok($udpb->recv($buf = "", 8), "recv it"); ++ is($buf, "fromctob", "check value received"); ++} + + exit(0); + +-- +2.20.1 + diff --git a/perl-5.31.0-perl-133936-make-send-a-bit-saner.patch b/perl-5.31.0-perl-133936-make-send-a-bit-saner.patch new file mode 100644 index 0000000..7e6826d --- /dev/null +++ b/perl-5.31.0-perl-133936-make-send-a-bit-saner.patch @@ -0,0 +1,93 @@ +From bc26d2e6b287cc6693f41e1a2d48b0dd77d2e427 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Tue, 18 Jun 2019 14:59:00 +1000 +Subject: [PATCH] (perl #133936) make send() a bit saner +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This undoes some of the effect of f1000aa2d in that TO will always +be supplied to CORE::send() if it's supplied, otherwise whether +TO is supplied to CORE::send() is based on whether the socket is +connected. + +On Linux you appear to be able to sendto() to a different address on +a connected UDP socket, but this doesn't appear to be portable, +failing on darwin, and presumably on other BSDs. + +Signed-off-by: Petr Písař +--- + dist/IO/lib/IO/Socket.pm | 25 +++++++++++++++++-------- + dist/IO/t/io_udp.t | 11 ++++++++--- + 2 files changed, 25 insertions(+), 11 deletions(-) + +diff --git a/dist/IO/lib/IO/Socket.pm b/dist/IO/lib/IO/Socket.pm +index 345ffd475d..28fa1ec149 100644 +--- a/dist/IO/lib/IO/Socket.pm ++++ b/dist/IO/lib/IO/Socket.pm +@@ -277,13 +277,22 @@ sub send { + @_ >= 2 && @_ <= 4 or croak 'usage: $sock->send(BUF, [FLAGS, [TO]])'; + my $sock = $_[0]; + my $flags = $_[2] || 0; +- my $peer = $_[3] || $sock->peername; ++ my $peer; + +- croak 'send: Cannot determine peer address' +- unless(defined $peer); ++ if ($_[3]) { ++ # the caller explicitly requested a TO, so use it ++ # this is non-portable for "connected" UDP sockets ++ $peer = $_[3]; ++ } ++ elsif (!defined getpeername($sock)) { ++ # we're not connected, so we require a peer from somewhere ++ $peer = $sock->peername; ++ ++ croak 'send: Cannot determine peer address' ++ unless(defined $peer); ++ } + +- my $type = $sock->socktype; +- my $r = $type == SOCK_DGRAM || $type == SOCK_RAW ++ my $r = $peer + ? send($sock, $_[1], $flags, $peer) + : send($sock, $_[1], $flags); + +@@ -526,9 +535,9 @@ C is optional and defaults to C<0>, and + + =item * + +-after a successful send with C, further calls to send() without +-C will send to the same address, and C will be used as the +-result of peername(). ++after a successful send with C, further calls to send() on an ++unconnected socket without C will send to the same address, and ++C will be used as the result of peername(). + + =back + +diff --git a/dist/IO/t/io_udp.t b/dist/IO/t/io_udp.t +index 571e4303bb..2adc6a4a69 100644 +--- a/dist/IO/t/io_udp.t ++++ b/dist/IO/t/io_udp.t +@@ -89,9 +89,14 @@ is($buf, 'FOObar'); + ok($udpa->recv($buf = "", 8), "recv it"); + is($buf, "fromctoa", "check value received"); + +- ok($udpc->send("fromctob", 0, $udpb->sockname), "send to non-connected socket"); +- ok($udpb->recv($buf = "", 8), "recv it"); +- is($buf, "fromctob", "check value received"); ++ SKIP: ++ { ++ $^O eq "linux" ++ or skip "This is non-portable, known to 'work' on Linux", 3; ++ ok($udpc->send("fromctob", 0, $udpb->sockname), "send to non-connected socket"); ++ ok($udpb->recv($buf = "", 8), "recv it"); ++ is($buf, "fromctob", "check value received"); ++ } + } + + exit(0); +-- +2.20.1 + diff --git a/perl-5.31.0-perl-134008-an-alternative-test.patch b/perl-5.31.0-perl-134008-an-alternative-test.patch new file mode 100644 index 0000000..7990681 --- /dev/null +++ b/perl-5.31.0-perl-134008-an-alternative-test.patch @@ -0,0 +1,28 @@ +From 9dfe0a3438ae69872b71b98e4fb4f4bef084983d Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Mon, 3 Jun 2019 14:34:17 +1000 +Subject: [PATCH 2/2] (perl #134008) an alternative test +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + t/op/sprintf2.t | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/t/op/sprintf2.t b/t/op/sprintf2.t +index 569bd8053d..84259a4afd 100644 +--- a/t/op/sprintf2.t ++++ b/t/op/sprintf2.t +@@ -840,6 +840,7 @@ SKIP: { + + # [rt.perl.org #134008] + is(sprintf("%.*a", -99999, 1.03125), "0x1.08p+0", "[rt.perl.org #134008]"); ++ is(sprintf("%.*a", -100000,0), "0x0p+0", "negative precision ignored by format_hexfp"); + + # [rt.perl.org #128890] + is(sprintf("%a", 0x1.18p+0), "0x1.18p+0"); +-- +2.20.1 + diff --git a/perl-5.31.0-perl-134072-allow-foo-bar-to-work-in-main.patch b/perl-5.31.0-perl-134072-allow-foo-bar-to-work-in-main.patch new file mode 100644 index 0000000..68f0c2d --- /dev/null +++ b/perl-5.31.0-perl-134072-allow-foo-bar-to-work-in-main.patch @@ -0,0 +1,84 @@ +From 40258daf9899686d934c460ba3630431312d7694 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Wed, 15 May 2019 15:59:49 +1000 +Subject: [PATCH] (perl #134072) allow \&foo = \&bar to work in main:: +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +subs in main:: are stored as a RV referring to a CV as a space +optimization, but the pp_refassign code expected to find a glob, +which made the assignment a no-op. + +Fix this by upgrading the reference to a glob in the refassign check +function. + +Note that this would be an issue in other packages if 1e2cfe157ca +was reverted (allowing the space savings in other packages too.) + +Signed-off-by: Petr Písař +--- + op.c | 9 +++++++++ + t/op/lvref.t | 15 ++++++++++++++- + 2 files changed, 23 insertions(+), 1 deletion(-) + +diff --git a/op.c b/op.c +index f63eeadc36..6ad192307f 100644 +--- a/op.c ++++ b/op.c +@@ -12462,7 +12462,16 @@ Perl_ck_refassign(pTHX_ OP *o) + OP * const kid = cUNOPx(kidparent)->op_first; + o->op_private |= OPpLVREF_CV; + if (kid->op_type == OP_GV) { ++ SV *sv = (SV*)cGVOPx_gv(kid); + varop = kidparent; ++ if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVCV) { ++ /* a CVREF here confuses pp_refassign, so make sure ++ it gets a GV */ ++ CV *const cv = (CV*)SvRV(sv); ++ SV *name_sv = sv_2mortal(newSVhek(CvNAME_HEK(cv))); ++ (void)gv_init_sv((GV*)sv, CvSTASH(cv), name_sv, 0); ++ assert(SvTYPE(sv) == SVt_PVGV); ++ } + goto detach_and_stack; + } + if (kid->op_type != OP_PADCV) goto bad; +diff --git a/t/op/lvref.t b/t/op/lvref.t +index 3d5e952fb0..3991a53780 100644 +--- a/t/op/lvref.t ++++ b/t/op/lvref.t +@@ -1,10 +1,11 @@ ++#!perl + BEGIN { + chdir 't'; + require './test.pl'; + set_up_inc("../lib"); + } + +-plan 164; ++plan 167; + + eval '\$x = \$y'; + like $@, qr/^Experimental aliasing via reference not enabled/, +@@ -291,6 +292,18 @@ package CodeTest { + my sub bs; + \(&cs) = expect_list_cx; + is \&cs, \&ThatSub, '\(&statesub)'; ++ ++ package main { ++ # this is only a problem in main:: due to 1e2cfe157ca ++ sub sx { "x" } ++ sub sy { "y" } ++ is sx(), "x", "check original"; ++ my $temp = \&sx; ++ \&sx = \&sy; ++ is sx(), "y", "aliased"; ++ \&sx = $temp; ++ is sx(), "x", "and restored"; ++ } + } + + # Mixed List Assignments +-- +2.20.1 + diff --git a/perl-5.31.0-perl-134193-allow-CAPTURE-to-work-when-CAPTURE-comes.patch b/perl-5.31.0-perl-134193-allow-CAPTURE-to-work-when-CAPTURE-comes.patch new file mode 100644 index 0000000..59b05d2 --- /dev/null +++ b/perl-5.31.0-perl-134193-allow-CAPTURE-to-work-when-CAPTURE-comes.patch @@ -0,0 +1,59 @@ +From 22f05786af0b7f963440e47908cd5f35cf074c12 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Thu, 13 Jun 2019 10:05:15 +1000 +Subject: [PATCH] (perl #134193) allow %{^CAPTURE} to work when @{^CAPTURE} + comes first +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +gv_magicalize() is called when the GV is created, so when the array +was mentioned first, the hash wouldn't reach this code and the magic +wouldn't be added to the hash. + +This also fixes a similar problem with (%|@){^CAPTURE_ALL}, though +@{^CAPTURE_ALL} is unused at this point. + +Signed-off-by: Petr Písař +--- + ext/Tie-Hash-NamedCapture/t/tiehash.t | 3 +++ + gv.c | 6 ++---- + 2 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/ext/Tie-Hash-NamedCapture/t/tiehash.t b/ext/Tie-Hash-NamedCapture/t/tiehash.t +index 962754085f..cca05278f4 100644 +--- a/ext/Tie-Hash-NamedCapture/t/tiehash.t ++++ b/ext/Tie-Hash-NamedCapture/t/tiehash.t +@@ -3,6 +3,9 @@ use strict; + + use Test::More; + ++# this would break the hash magic setup [perl #134193] ++my ($ca, $c) = ( \@{^CAPTURE_ALL}, \@{^CAPTURE} ); ++ + my %hashes = ( + '+' => \%+, + '-' => \%-, +diff --git a/gv.c b/gv.c +index 46a32dcc20..2b83680898 100644 +--- a/gv.c ++++ b/gv.c +@@ -2032,13 +2032,11 @@ S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, + sv_magic(MUTABLE_SV(av), (SV*)n, PERL_MAGIC_regdata, NULL, 0); + SvREADONLY_on(av); + +- if (sv_type == SVt_PVHV || sv_type == SVt_PVGV) +- require_tie_mod_s(gv, '-', "Tie::Hash::NamedCapture",0); ++ require_tie_mod_s(gv, '-', "Tie::Hash::NamedCapture",0); + + } else /* %{^CAPTURE_ALL} */ + if (memEQs(name, len, "\003APTURE_ALL")) { +- if (sv_type == SVt_PVHV || sv_type == SVt_PVGV) +- require_tie_mod_s(gv, '+', "Tie::Hash::NamedCapture",0); ++ require_tie_mod_s(gv, '+', "Tie::Hash::NamedCapture",0); + } + break; + case '\005': /* $^ENCODING */ +-- +2.20.1 + diff --git a/perl-5.31.0-perl-134193-make-the-varname-match-the-names.patch b/perl-5.31.0-perl-134193-make-the-varname-match-the-names.patch new file mode 100644 index 0000000..0c12b6d --- /dev/null +++ b/perl-5.31.0-perl-134193-make-the-varname-match-the-names.patch @@ -0,0 +1,36 @@ +From d8422270033e0728e6a9cecb24cdbd123656e367 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Mon, 17 Jun 2019 11:46:00 +1000 +Subject: [PATCH] (perl #134193) make the varname match the %[+-] names +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +when loading Tie/Hash/NamedCapture.pm for the long name variants + +Signed-off-by: Petr Písař +--- + gv.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gv.c b/gv.c +index 2b83680898..652f5e737d 100644 +--- a/gv.c ++++ b/gv.c +@@ -2032,11 +2032,11 @@ S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, + sv_magic(MUTABLE_SV(av), (SV*)n, PERL_MAGIC_regdata, NULL, 0); + SvREADONLY_on(av); + +- require_tie_mod_s(gv, '-', "Tie::Hash::NamedCapture",0); ++ require_tie_mod_s(gv, '+', "Tie::Hash::NamedCapture",0); + + } else /* %{^CAPTURE_ALL} */ + if (memEQs(name, len, "\003APTURE_ALL")) { +- require_tie_mod_s(gv, '+', "Tie::Hash::NamedCapture",0); ++ require_tie_mod_s(gv, '-', "Tie::Hash::NamedCapture",0); + } + break; + case '\005': /* $^ENCODING */ +-- +2.20.1 + diff --git a/perl-5.31.1-avoid-SEGV-with-uninit-warning-with-multideref.patch b/perl-5.31.1-avoid-SEGV-with-uninit-warning-with-multideref.patch new file mode 100644 index 0000000..e25b547 --- /dev/null +++ b/perl-5.31.1-avoid-SEGV-with-uninit-warning-with-multideref.patch @@ -0,0 +1,65 @@ +From 28eabf1185634216ca335b3a24e1131b0f392ca1 Mon Sep 17 00:00:00 2001 +From: David Mitchell +Date: Wed, 10 Jul 2019 12:59:06 +0100 +Subject: [PATCH] avoid SEGV with uninit warning with multideref +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RT #134275 + +When the 'uninitialized warning' code in S_find_uninit_var() comes +across an OP_MULTIDEREF node, it scans it to see if any part of that op +(e.g. the indices or the returned value) could have been the source of +the uninitialized value which triggered the warning. Unfortunately when +getting an AV or HV from a GV, it wasn't checking whether gp_av/gp_hv +contained a NULL value. If so, it would SEGV. + +The test code is a bit contrived; you have to "pull the rug" from under +the GV at just the right moment with *foo = *bar, then trigger an uninit +warning on an op whose subtree includes an OP_MULTIDEREF. + +Signed-off-by: Petr Písař +--- + sv.c | 5 ++++- + t/lib/warnings/9uninit | 10 ++++++++++ + 2 files changed, 14 insertions(+), 1 deletion(-) + +diff --git a/sv.c b/sv.c +index 83de536ad7..4315fe9b64 100644 +--- a/sv.c ++++ b/sv.c +@@ -16662,8 +16662,11 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv, + + if (agg_targ) + sv = PAD_SV(agg_targ); +- else if (agg_gv) ++ else if (agg_gv) { + sv = is_hv ? MUTABLE_SV(GvHV(agg_gv)) : MUTABLE_SV(GvAV(agg_gv)); ++ if (!sv) ++ break; ++ } + else + break; + +diff --git a/t/lib/warnings/9uninit b/t/lib/warnings/9uninit +index 774c6ee432..5c173fdb2a 100644 +--- a/t/lib/warnings/9uninit ++++ b/t/lib/warnings/9uninit +@@ -2206,3 +2206,13 @@ use warnings 'uninitialized'; + undef $0; + EXPECT + Use of uninitialized value in undef operator at - line 5. ++######## ++# RT #134275 ++# This was SEGVing due to the multideref code in S_find_uninit_var not ++# handling a GV with a null gp_hv slot. ++use warnings 'uninitialized'; ++"" =~ /$foo{a}${*foo=*bar}$x/; ++EXPECT ++Use of uninitialized value in regexp compilation at - line 5. ++Use of uninitialized value in regexp compilation at - line 5. ++Use of uninitialized value $x in regexp compilation at - line 5. +-- +2.20.1 + diff --git a/perl-5.31.1-perl-122112-make-sure-SIGPIPE-is-delivered-if-we-tes.patch b/perl-5.31.1-perl-122112-make-sure-SIGPIPE-is-delivered-if-we-tes.patch new file mode 100644 index 0000000..dd36b03 --- /dev/null +++ b/perl-5.31.1-perl-122112-make-sure-SIGPIPE-is-delivered-if-we-tes.patch @@ -0,0 +1,39 @@ +From 293a533c53d9c0fe939e23c439f4dfc47a5736dc Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Tue, 25 Jun 2019 15:47:57 +1000 +Subject: [PATCH] (perl #122112) make sure SIGPIPE is delivered if we test it +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + t/io/pipe.t | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/t/io/pipe.t b/t/io/pipe.t +index 9f5bb3bcf8..bdf743c26c 100644 +--- a/t/io/pipe.t ++++ b/t/io/pipe.t +@@ -125,6 +125,18 @@ wait; # Collect from $pid + pipe(READER,WRITER) || die "Can't open pipe"; + close READER; + ++eval { ++ # one platform at least appears to block SIGPIPE by default (see #122112) ++ # so make sure it's unblocked. ++ # The eval wrapper should ensure this does nothing if these aren't ++ # implemented. ++ require POSIX; ++ my $mask = POSIX::SigSet->new(POSIX::SIGPIPE()); ++ my $old = POSIX::SigSet->new(); ++ POSIX::sigprocmask(POSIX::SIG_UNBLOCK(), $mask, $old); ++ note "Yes, SIGPIPE was blocked" if $old->ismember(POSIX::SIGPIPE()); ++}; ++ + $SIG{'PIPE'} = 'broken_pipe'; + + sub broken_pipe { +-- +2.20.1 + diff --git a/perl-5.31.1-perl-134221-support-O_APPEND-for-open-.-undef-on-VMS.patch b/perl-5.31.1-perl-134221-support-O_APPEND-for-open-.-undef-on-VMS.patch new file mode 100644 index 0000000..6bed38d --- /dev/null +++ b/perl-5.31.1-perl-134221-support-O_APPEND-for-open-.-undef-on-VMS.patch @@ -0,0 +1,128 @@ +From 74b421cc877e412c4eda06757396a1e19fc756ba Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Mon, 15 Jul 2019 11:53:23 +1000 +Subject: [PATCH 3/3] (perl #134221) support O_APPEND for open ..., undef on + VMS +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +VMS doesn't allow you to delete an open file like POSIXish systems +do, but you can mark a file to be deleted once it's closed, but +only when you open it. + +Since VMS doesn't (yet) have mkostemp() we can add our own flag to +our mkostemp() emulation to pass the necessary magic to open() call +to delete the file on close. + +Signed-off-by: Petr Písař +--- + perlio.c | 10 ++++++---- + util.c | 15 ++++++++++++++- + util.h | 11 +++++++++++ + 3 files changed, 31 insertions(+), 5 deletions(-) + +diff --git a/perlio.c b/perlio.c +index 81ebc156ad..805959f840 100644 +--- a/perlio.c ++++ b/perlio.c +@@ -5062,7 +5062,7 @@ PerlIO_tmpfile_flags(int imode) + const int fd = win32_tmpfd_mode(imode); + if (fd >= 0) + f = PerlIO_fdopen(fd, "w+b"); +-#elif ! defined(VMS) && ! defined(OS2) ++#elif ! defined(OS2) + int fd = -1; + char tempname[] = "/tmp/PerlIO_XXXXXX"; + const char * const tmpdir = TAINTING_get ? NULL : PerlEnv_getenv("TMPDIR"); +@@ -5073,19 +5073,19 @@ PerlIO_tmpfile_flags(int imode) + /* if TMPDIR is set and not empty, we try that first */ + sv = newSVpv(tmpdir, 0); + sv_catpv(sv, tempname + 4); +- fd = Perl_my_mkostemp_cloexec(SvPVX(sv), imode); ++ fd = Perl_my_mkostemp_cloexec(SvPVX(sv), imode | O_VMS_DELETEONCLOSE); + } + if (fd < 0) { + SvREFCNT_dec(sv); + sv = NULL; + /* else we try /tmp */ +- fd = Perl_my_mkostemp_cloexec(tempname, imode); ++ fd = Perl_my_mkostemp_cloexec(tempname, imode | O_VMS_DELETEONCLOSE); + } + if (fd < 0) { + /* Try cwd */ + sv = newSVpvs("."); + sv_catpv(sv, tempname + 4); +- fd = Perl_my_mkostemp_cloexec(SvPVX(sv), imode); ++ fd = Perl_my_mkostemp_cloexec(SvPVX(sv), imode | O_VMS_DELETEONCLOSE); + } + umask(old_umask); + if (fd >= 0) { +@@ -5096,7 +5096,9 @@ PerlIO_tmpfile_flags(int imode) + f = PerlIO_fdopen(fd, mode); + if (f) + PerlIOBase(f)->flags |= PERLIO_F_TEMP; ++# ifndef VMS + PerlLIO_unlink(sv ? SvPVX_const(sv) : tempname); ++# endif + } + SvREFCNT_dec(sv); + #else /* !HAS_MKSTEMP, fallback to stdio tmpfile(). */ +diff --git a/util.c b/util.c +index e6863f6dfe..165d13a39e 100644 +--- a/util.c ++++ b/util.c +@@ -5712,6 +5712,11 @@ S_my_mkostemp(char *templte, int flags) { + STRLEN len = strlen(templte); + int fd; + int attempts = 0; ++#ifdef VMS ++ int delete_on_close = flags & O_VMS_DELETEONCLOSE; ++ ++ flags &= ~O_VMS_DELETEONCLOSE; ++#endif + + if (len < 6 || + templte[len-1] != 'X' || templte[len-2] != 'X' || templte[len-3] != 'X' || +@@ -5725,7 +5730,15 @@ S_my_mkostemp(char *templte, int flags) { + for (i = 1; i <= 6; ++i) { + templte[len-i] = TEMP_FILE_CH[(int)(Perl_internal_drand48() * TEMP_FILE_CH_COUNT)]; + } +- fd = PerlLIO_open3(templte, O_RDWR | O_CREAT | O_EXCL | flags, 0600); ++#ifdef VMS ++ if (delete_on_close) { ++ fd = open(templte, O_RDWR | O_CREAT | O_EXCL | flags, 0600, "fop=dlt"); ++ } ++ else ++#endif ++ { ++ fd = PerlLIO_open3(templte, O_RDWR | O_CREAT | O_EXCL | flags, 0600); ++ } + } while (fd == -1 && errno == EEXIST && ++attempts <= 100); + + return fd; +diff --git a/util.h b/util.h +index d8fa3e8396..d9df7b39c6 100644 +--- a/util.h ++++ b/util.h +@@ -248,6 +248,17 @@ means arg not present, 1 is empty string/null byte */ + int mkstemp(char*); + #endif + ++#ifdef PERL_CORE ++# if defined(VMS) ++/* only useful for calls to our mkostemp() emulation */ ++# define O_VMS_DELETEONCLOSE 0x40000000 ++# ifdef HAS_MKOSTEMP ++# error 134221 will need a new solution for VMS ++# endif ++# else ++# define O_VMS_DELETEONCLOSE 0 ++# endif ++#endif + #if defined(HAS_MKOSTEMP) && defined(PERL_CORE) + # define Perl_my_mkostemp(templte, flags) mkostemp(templte, flags) + #endif +-- +2.20.1 + diff --git a/perl-5.31.1-perl-134221-support-append-mode-temp-files-on-Win32-.patch b/perl-5.31.1-perl-134221-support-append-mode-temp-files-on-Win32-.patch new file mode 100644 index 0000000..21306c1 --- /dev/null +++ b/perl-5.31.1-perl-134221-support-append-mode-temp-files-on-Win32-.patch @@ -0,0 +1,76 @@ +From 0424723402ef153af8ee44222315d9b6a818d1ba Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Tue, 2 Jul 2019 15:22:26 +1000 +Subject: [PATCH 2/3] (perl #134221) support append mode temp files on Win32 + too +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + perlio.c | 2 +- + win32/win32.c | 10 +++++++++- + win32/win32iop.h | 1 + + 3 files changed, 11 insertions(+), 2 deletions(-) + +diff --git a/perlio.c b/perlio.c +index a737e79e02..81ebc156ad 100644 +--- a/perlio.c ++++ b/perlio.c +@@ -5059,7 +5059,7 @@ PerlIO_tmpfile_flags(int imode) + #endif + PerlIO *f = NULL; + #ifdef WIN32 +- const int fd = win32_tmpfd(); ++ const int fd = win32_tmpfd_mode(imode); + if (fd >= 0) + f = PerlIO_fdopen(fd, "w+b"); + #elif ! defined(VMS) && ! defined(OS2) +diff --git a/win32/win32.c b/win32/win32.c +index 8104d864c2..91fdffe09b 100644 +--- a/win32/win32.c ++++ b/win32/win32.c +@@ -2907,10 +2907,18 @@ win32_rewind(FILE *pf) + + DllExport int + win32_tmpfd(void) ++{ ++ return win32_tmpfd_mode(0); ++} ++ ++DllExport int ++win32_tmpfd_mode(int mode) + { + char prefix[MAX_PATH+1]; + char filename[MAX_PATH+1]; + DWORD len = GetTempPath(MAX_PATH, prefix); ++ mode &= ~( O_ACCMODE | O_CREAT | O_EXCL ); ++ mode |= O_RDWR; + if (len && len < MAX_PATH) { + if (GetTempFileName(prefix, "plx", 0, filename)) { + HANDLE fh = CreateFile(filename, +@@ -2922,7 +2930,7 @@ win32_tmpfd(void) + | FILE_FLAG_DELETE_ON_CLOSE, + NULL); + if (fh != INVALID_HANDLE_VALUE) { +- int fd = win32_open_osfhandle((intptr_t)fh, 0); ++ int fd = win32_open_osfhandle((intptr_t)fh, mode); + if (fd >= 0) { + PERL_DEB(dTHX;) + DEBUG_p(PerlIO_printf(Perl_debug_log, +diff --git a/win32/win32iop.h b/win32/win32iop.h +index 53330e5951..559e1f9cd2 100644 +--- a/win32/win32iop.h ++++ b/win32/win32iop.h +@@ -64,6 +64,7 @@ DllExport int win32_fgetpos(FILE *pf,fpos_t *p); + DllExport int win32_fsetpos(FILE *pf,const fpos_t *p); + DllExport void win32_rewind(FILE *pf); + DllExport int win32_tmpfd(void); ++DllExport int win32_tmpfd_mode(int mode); + DllExport FILE* win32_tmpfile(void); + DllExport void win32_abort(void); + DllExport int win32_fstat(int fd,Stat_t *sbufptr); +-- +2.20.1 + diff --git a/perl-5.31.2-PerlIO-Via-check-arg-is-non-NULL-before-using-it.patch b/perl-5.31.2-PerlIO-Via-check-arg-is-non-NULL-before-using-it.patch new file mode 100644 index 0000000..3ded0e2 --- /dev/null +++ b/perl-5.31.2-PerlIO-Via-check-arg-is-non-NULL-before-using-it.patch @@ -0,0 +1,38 @@ +From 12e1284a67e5e3404c704c3f864749fd9f04c7c4 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Wed, 7 Aug 2019 14:58:14 +1000 +Subject: [PATCH] PerlIO::Via: check arg is non-NULL before using it. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +I can't find any code in core that ends up calling the _pushed handler +with arg == NULL, but PerlIO_push() is API, and there might be +CPAN or DarkPAN code out there that does, escpecially since there's +a check for arg being non-NULL further down. + +CID 169261. + +Signed-off-by: Petr Písař +--- + ext/PerlIO-via/via.xs | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ext/PerlIO-via/via.xs b/ext/PerlIO-via/via.xs +index d91c6855fc..8456242bc0 100644 +--- a/ext/PerlIO-via/via.xs ++++ b/ext/PerlIO-via/via.xs +@@ -134,8 +134,8 @@ PerlIOVia_pushed(pTHX_ PerlIO * f, const char *mode, SV * arg, + { + IV code = PerlIOBase_pushed(aTHX_ f, mode, Nullsv, tab); + +- if (SvTYPE(arg) >= SVt_PVMG +- && mg_findext(arg, PERL_MAGIC_ext, &PerlIOVia_tag)) { ++ if (arg && SvTYPE(arg) >= SVt_PVMG ++ && mg_findext(arg, PERL_MAGIC_ext, &PerlIOVia_tag)) { + return code; + } + +-- +2.21.0 + diff --git a/perl-5.31.2-Run-tests-in-ext-File-Find-t-in-series.patch b/perl-5.31.2-Run-tests-in-ext-File-Find-t-in-series.patch new file mode 100644 index 0000000..139d3a4 --- /dev/null +++ b/perl-5.31.2-Run-tests-in-ext-File-Find-t-in-series.patch @@ -0,0 +1,30 @@ +From 665ac6aded4b9694283d373a0f127f32a3e75b26 Mon Sep 17 00:00:00 2001 +From: James E Keenan +Date: Wed, 7 Aug 2019 09:39:56 -0400 +Subject: [PATCH] Run tests in ext/File-Find/t in series +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +For: RT # 133771 +Signed-off-by: Petr Písař +--- + t/harness | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/t/harness b/t/harness +index caa2a318b8..b9857fa022 100644 +--- a/t/harness ++++ b/t/harness +@@ -189,7 +189,7 @@ if (@ARGV) { + # directory containing such files should be tested in serial order. + # + # Add exceptions to the above rule +- for (qw(ext/Pod-Html/t cpan/IO-Zlib/t)) { ++ for (qw(ext/Pod-Html/t cpan/IO-Zlib/t ext/File-Find/t)) { + $serials{$_} = 1; + } + +-- +2.21.0 + diff --git a/perl-5.31.2-include-a-trailing-0-in-SVs-holding-trie-info.patch b/perl-5.31.2-include-a-trailing-0-in-SVs-holding-trie-info.patch new file mode 100644 index 0000000..9291dff --- /dev/null +++ b/perl-5.31.2-include-a-trailing-0-in-SVs-holding-trie-info.patch @@ -0,0 +1,37 @@ +From 1d84a25665013f389ffc6fad7dd133f1c6287a08 Mon Sep 17 00:00:00 2001 +From: David Mitchell +Date: Tue, 6 Aug 2019 14:36:45 +0100 +Subject: [PATCH] include a trailing \0 in SVs holding trie info +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RT #13427 + +TRIE_STORE_REVCHAR() was creating SvPV()s with no trailing '\0'. This +doesn't really matter given the specialised use these are put to, but +it upset valgrind et al when perl was run with -Drv which printf("%s")'s +the contents of the string. + +Signed-off-by: Petr Písař +--- + regcomp.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/regcomp.c b/regcomp.c +index 370221f72e..1117998fc8 100644 +--- a/regcomp.c ++++ b/regcomp.c +@@ -2526,7 +2526,8 @@ is the recommended Unicode-aware way of saying + if (UTF) { \ + SV *zlopp = newSV(UTF8_MAXBYTES); \ + unsigned char *flrbbbbb = (unsigned char *) SvPVX(zlopp); \ +- unsigned const char *const kapow = uvchr_to_utf8(flrbbbbb, val); \ ++ unsigned char *const kapow = uvchr_to_utf8(flrbbbbb, val); \ ++ *kapow = '\0'; \ + SvCUR_set(zlopp, kapow - flrbbbbb); \ + SvPOK_on(zlopp); \ + SvUTF8_on(zlopp); \ +-- +2.20.1 + diff --git a/perl-5.31.2-locale.c-Stop-Coverity-warning.patch b/perl-5.31.2-locale.c-Stop-Coverity-warning.patch new file mode 100644 index 0000000..352f586 --- /dev/null +++ b/perl-5.31.2-locale.c-Stop-Coverity-warning.patch @@ -0,0 +1,48 @@ +From 21dce8f4eb9136875a886371016aa25788f5144f Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Tue, 6 Aug 2019 21:29:22 -0600 +Subject: [PATCH] locale.c: Stop Coverity warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Coverity is right, so re-order these clauses. This code is executed +only if some very strange error occurs. + +Signed-off-by: Petr Písař +--- + locale.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/locale.c b/locale.c +index db83d993de..af7af60038 100644 +--- a/locale.c ++++ b/locale.c +@@ -4349,11 +4349,6 @@ Perl__mem_collxfrm(pTHX_ const char *input_string, + return xbuf; + + bad: +- Safefree(xbuf); +- if (s != input_string) { +- Safefree(s); +- } +- *xlen = 0; + + # ifdef DEBUGGING + +@@ -4363,6 +4358,12 @@ Perl__mem_collxfrm(pTHX_ const char *input_string, + + # endif + ++ Safefree(xbuf); ++ if (s != input_string) { ++ Safefree(s); ++ } ++ *xlen = 0; ++ + return NULL; + } + +-- +2.20.1 + diff --git a/perl-5.31.2-perl-134291-propagate-non-PVs-in-in-bare-die.patch b/perl-5.31.2-perl-134291-propagate-non-PVs-in-in-bare-die.patch new file mode 100644 index 0000000..47fd64c --- /dev/null +++ b/perl-5.31.2-perl-134291-propagate-non-PVs-in-in-bare-die.patch @@ -0,0 +1,54 @@ +From 85d4e0a35b2d44cf06a9343d23a2f84b8ebb9024 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Wed, 17 Jul 2019 11:32:50 +1000 +Subject: [PATCH] (perl #134291) propagate non-PVs in $@ in bare die() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + pp_sys.c | 2 +- + t/op/die.t | 6 +++++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/pp_sys.c b/pp_sys.c +index 0214367ea6..251527785e 100644 +--- a/pp_sys.c ++++ b/pp_sys.c +@@ -498,7 +498,7 @@ PP(pp_die) + } + } + } +- else if (SvPOK(errsv) && SvCUR(errsv)) { ++ else if (SvOK(errsv) && (SvPV_nomg(errsv,len), len)) { + exsv = sv_mortalcopy(errsv); + sv_catpvs(exsv, "\t...propagated"); + } +diff --git a/t/op/die.t b/t/op/die.t +index ef2b85f8f5..d6d7daffa5 100644 +--- a/t/op/die.t ++++ b/t/op/die.t +@@ -6,7 +6,7 @@ BEGIN { + set_up_inc('../lib'); + } + +-plan tests => 20; ++plan tests => 21; + + eval { + eval { +@@ -94,6 +94,10 @@ like($@, qr/\.{3}propagated at/, '... and appends a phrase'); + local $SIG{__WARN__} = sub { $ok = 0 }; + eval { undef $@; die }; + is( $ok, 1, 'no warnings if $@ is undef' ); ++ ++ eval { $@ = 100; die }; ++ like($@."", qr/100\t\.{3}propagated at/, ++ 'check non-PVs in $@ are propagated'); + } + + TODO: { +-- +2.20.1 + diff --git a/perl-5.31.2-perlapi-5.30-promise-not-met-change-to-5.32.patch b/perl-5.31.2-perlapi-5.30-promise-not-met-change-to-5.32.patch new file mode 100644 index 0000000..60d2d7d --- /dev/null +++ b/perl-5.31.2-perlapi-5.30-promise-not-met-change-to-5.32.patch @@ -0,0 +1,118 @@ +From 8b4b30c5d389983c3df51b7ff3b38e5608c7c2e2 Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Sat, 3 Aug 2019 09:17:43 -0600 +Subject: [PATCH] perlapi: 5.30 promise not met; change to 5.32 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +We delayed this change, but I forgot to change this documentation + +Signed-off-by: Petr Písař +--- + handy.h | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/handy.h b/handy.h +index 24c028a638..2dfbc86125 100644 +--- a/handy.h ++++ b/handy.h +@@ -609,13 +609,13 @@ future releases. + Variant C_utf8> is like C_utf8_safe>, but takes just a single + parameter, C

, which has the same meaning as the corresponding parameter does + in C_utf8_safe>. The function therefore can't check if it is reading +-beyond the end of the string. Starting in Perl v5.30, it will take a second ++beyond the end of the string. Starting in Perl v5.32, it will take a second + parameter, becoming a synonym for C_utf8_safe>. At that time every + program that uses it will have to be changed to successfully compile. In the + meantime, the first runtime call to C_utf8> from each call point in the + program will raise a deprecation warning, enabled by default. You can convert + your program now to use C_utf8_safe>, and avoid the warnings, and get an +-extra measure of protection, or you can wait until v5.30, when you'll be forced ++extra measure of protection, or you can wait until v5.32, when you'll be forced + to add the C parameter. + + Variant C_LC> is like the C_A> and C_L1> variants, but the +@@ -649,13 +649,13 @@ future releases. + Variant C_LC_utf8> is like C_LC_utf8_safe>, but takes just a single + parameter, C

, which has the same meaning as the corresponding parameter does + in C_LC_utf8_safe>. The function therefore can't check if it is reading +-beyond the end of the string. Starting in Perl v5.30, it will take a second ++beyond the end of the string. Starting in Perl v5.32, it will take a second + parameter, becoming a synonym for C_LC_utf8_safe>. At that time every + program that uses it will have to be changed to successfully compile. In the + meantime, the first runtime call to C_LC_utf8> from each call point in + the program will raise a deprecation warning, enabled by default. You can + convert your program now to use C_LC_utf8_safe>, and avoid the warnings, +-and get an extra measure of protection, or you can wait until v5.30, when ++and get an extra measure of protection, or you can wait until v5.32, when + you'll be forced to add the C parameter. + + =for apidoc Am|bool|isALPHA|char ch +@@ -897,13 +897,13 @@ implementation, and subject to change in future releases. + =for apidoc Am|UV|toUPPER_utf8|U8* p|U8* s|STRLEN* lenp + This is like C>, but doesn't have the C + parameter The function therefore can't check if it is reading +-beyond the end of the string. Starting in Perl v5.30, it will take the C ++beyond the end of the string. Starting in Perl v5.32, it will take the C + parameter, becoming a synonym for C. At that time every + program that uses it will have to be changed to successfully compile. In the + meantime, the first runtime call to C from each call point in the + program will raise a deprecation warning, enabled by default. You can convert + your program now to use C, and avoid the warnings, and get an +-extra measure of protection, or you can wait until v5.30, when you'll be forced ++extra measure of protection, or you can wait until v5.32, when you'll be forced + to add the C parameter. + + =for apidoc Am|U8|toFOLD|U8 ch +@@ -944,13 +944,13 @@ implementation, and subject to change in future releases. + =for apidoc Am|UV|toFOLD_utf8|U8* p|U8* s|STRLEN* lenp + This is like C>, but doesn't have the C + parameter The function therefore can't check if it is reading +-beyond the end of the string. Starting in Perl v5.30, it will take the C ++beyond the end of the string. Starting in Perl v5.32, it will take the C + parameter, becoming a synonym for C. At that time every + program that uses it will have to be changed to successfully compile. In the + meantime, the first runtime call to C from each call point in the + program will raise a deprecation warning, enabled by default. You can convert + your program now to use C, and avoid the warnings, and get an +-extra measure of protection, or you can wait until v5.30, when you'll be forced ++extra measure of protection, or you can wait until v5.32, when you'll be forced + to add the C parameter. + + =for apidoc Am|U8|toLOWER|U8 ch +@@ -999,13 +999,13 @@ implementation, and subject to change in future releases. + =for apidoc Am|UV|toLOWER_utf8|U8* p|U8* s|STRLEN* lenp + This is like C>, but doesn't have the C + parameter The function therefore can't check if it is reading +-beyond the end of the string. Starting in Perl v5.30, it will take the C ++beyond the end of the string. Starting in Perl v5.32, it will take the C + parameter, becoming a synonym for C. At that time every + program that uses it will have to be changed to successfully compile. In the + meantime, the first runtime call to C from each call point in the + program will raise a deprecation warning, enabled by default. You can convert + your program now to use C, and avoid the warnings, and get an +-extra measure of protection, or you can wait until v5.30, when you'll be forced ++extra measure of protection, or you can wait until v5.32, when you'll be forced + to add the C parameter. + + =for apidoc Am|U8|toTITLE|U8 ch +@@ -1047,13 +1047,13 @@ implementation, and subject to change in future releases. + =for apidoc Am|UV|toTITLE_utf8|U8* p|U8* s|STRLEN* lenp + This is like C>, but doesn't have the C + parameter The function therefore can't check if it is reading +-beyond the end of the string. Starting in Perl v5.30, it will take the C ++beyond the end of the string. Starting in Perl v5.32, it will take the C + parameter, becoming a synonym for C. At that time every + program that uses it will have to be changed to successfully compile. In the + meantime, the first runtime call to C from each call point in the + program will raise a deprecation warning, enabled by default. You can convert + your program now to use C, and avoid the warnings, and get an +-extra measure of protection, or you can wait until v5.30, when you'll be forced ++extra measure of protection, or you can wait until v5.32, when you'll be forced + to add the C parameter. + + =cut +-- +2.21.0 + diff --git a/perl-5.31.2-regcomp.c-Don-t-read-off-the-end-of-buffer.patch b/perl-5.31.2-regcomp.c-Don-t-read-off-the-end-of-buffer.patch new file mode 100644 index 0000000..ff5d596 --- /dev/null +++ b/perl-5.31.2-regcomp.c-Don-t-read-off-the-end-of-buffer.patch @@ -0,0 +1,36 @@ +From 31532982b04c20a43aa9c3d26780e3591c524fbc Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Thu, 27 Jun 2019 15:39:11 -0600 +Subject: [PATCH] regcomp.c: Don't read off the end of buffer +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Until this commit, it was possible that \p{nv=3/} would cause the right +brace to be considered part of the property name. + +Spotted by Hugo van der Sanden + +Signed-off-by: Petr Písař +--- + regcomp.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/regcomp.c b/regcomp.c +index 1117998fc8..cf9246473f 100644 +--- a/regcomp.c ++++ b/regcomp.c +@@ -23092,7 +23092,9 @@ Perl_parse_uniprop_string(pTHX_ + } + + /* Store the first real character in the denominator */ +- lookup_name[j++] = name[i]; ++ if (i < name_len) { ++ lookup_name[j++] = name[i]; ++ } + } + } + +-- +2.21.0 + diff --git a/perl-5.31.3-Configure-Include-stdlib.h-in-futimes-check.patch b/perl-5.31.3-Configure-Include-stdlib.h-in-futimes-check.patch new file mode 100644 index 0000000..0ceb4e0 --- /dev/null +++ b/perl-5.31.3-Configure-Include-stdlib.h-in-futimes-check.patch @@ -0,0 +1,30 @@ +From 425077e4b85509df2907be6c103d54c0687c7647 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Mon, 9 Sep 2019 19:35:47 +0200 +Subject: [PATCH 1/2] Configure: Include in futimes check +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Needed for the exit function. + +Signed-off-by: Petr Písař +--- + Configure | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Configure b/Configure +index 818deb8378..7aa03d6aed 100755 +--- a/Configure ++++ b/Configure +@@ -14091,6 +14091,7 @@ $cat >try.c < + #include + #include ++#include + + int main () + { +-- +2.21.0 + diff --git a/perl-5.31.3-Florian-Weimer-is-now-a-perl-author.patch b/perl-5.31.3-Florian-Weimer-is-now-a-perl-author.patch new file mode 100644 index 0000000..e213e5e --- /dev/null +++ b/perl-5.31.3-Florian-Weimer-is-now-a-perl-author.patch @@ -0,0 +1,28 @@ +From da006e4432402cea01c9018743467314377e3c1e Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Tue, 10 Sep 2019 10:44:10 +1000 +Subject: [PATCH 2/2] Florian Weimer is now a perl author +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + AUTHORS | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/AUTHORS b/AUTHORS +index a2b6d8c15a..a554cfc045 100644 +--- a/AUTHORS ++++ b/AUTHORS +@@ -418,6 +418,7 @@ Fergal Daly + Fingle Nark + Florent Guillaume + Florian Ragwitz ++Florian Weimer + François Désarménien + François Perrad + Frank Crawford +-- +2.21.0 + diff --git a/perl-5.31.3-Supply-missing-right-brace-in-regex-example.patch b/perl-5.31.3-Supply-missing-right-brace-in-regex-example.patch new file mode 100644 index 0000000..8a320d5 --- /dev/null +++ b/perl-5.31.3-Supply-missing-right-brace-in-regex-example.patch @@ -0,0 +1,31 @@ +From 7ea7c4bb61d23965a7ad7041fe9c58b5075aac85 Mon Sep 17 00:00:00 2001 +From: James E Keenan +Date: Sat, 31 Aug 2019 19:18:36 -0400 +Subject: [PATCH] Supply missing right brace in regex example +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +As suggested by Jim Avera in RT 134395. + +Signed-off-by: Petr Písař +--- + pod/perlrebackslash.pod | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pod/perlrebackslash.pod b/pod/perlrebackslash.pod +index cfd182a7e1..4a8717346d 100644 +--- a/pod/perlrebackslash.pod ++++ b/pod/perlrebackslash.pod +@@ -446,7 +446,7 @@ Mnemonic: Iroup. + =head3 Relative referencing + + C<\g-I> (starting in Perl 5.10.0) is used for relative addressing. (It can +-be written as C<\g{-I>.) It refers to the Ith group before the ++be written as C<\g{-I}>.) It refers to the Ith group before the + C<\g{-I}>. + + The big advantage of this form is that it makes it much easier to write +-- +2.21.0 + diff --git a/perl-5.31.3-perl-134230-don-t-interpret-0x-0b-when-numifying-str.patch b/perl-5.31.3-perl-134230-don-t-interpret-0x-0b-when-numifying-str.patch new file mode 100644 index 0000000..b7cd756 --- /dev/null +++ b/perl-5.31.3-perl-134230-don-t-interpret-0x-0b-when-numifying-str.patch @@ -0,0 +1,57 @@ +From 14d26b44a1d7eee67837ec0ea8fb0368ac6fe33e Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Tue, 20 Aug 2019 15:43:05 +1000 +Subject: [PATCH] (perl #134230) don't interpret 0x, 0b when numifying strings +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + numeric.c | 9 +++++++++ + t/op/int.t | 5 ++++- + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/numeric.c b/numeric.c +index f5eadc8173..fae2eb3c6d 100644 +--- a/numeric.c ++++ b/numeric.c +@@ -1551,6 +1551,15 @@ Perl_my_atof3(pTHX_ const char* orig, NV* value, const STRLEN len) + if ((endp = S_my_atof_infnan(aTHX_ s, negative, send, value))) + return endp; + ++ /* strtold() accepts 0x-prefixed hex and in POSIX implementations, ++ 0b-prefixed binary numbers, which is backward incompatible ++ */ ++ if ((len == 0 || len >= 2) && *s == '0' && ++ (isALPHA_FOLD_EQ(s[1], 'x') || isALPHA_FOLD_EQ(s[1], 'b'))) { ++ *value = 0; ++ return (char *)s+1; ++ } ++ + /* If the length is passed in, the input string isn't NUL-terminated, + * and in it turns out the function below assumes it is; therefore we + * create a copy and NUL-terminate that */ +diff --git a/t/op/int.t b/t/op/int.t +index 7e936da68d..b730ab2672 100644 +--- a/t/op/int.t ++++ b/t/op/int.t +@@ -7,7 +7,7 @@ BEGIN { + require Config; + } + +-plan 17; ++plan 19; + + # compile time evaluation + +@@ -83,3 +83,6 @@ SKIP: + cmp_ok($x, "==", int($x), "check $x == int($x)"); + } + } ++ ++is(1+"0x10", 1, "check string '0x' prefix not treated as hex"); ++is(1+"0b10", 1, "check string '0b' prefix not treated as binary"); +-- +2.21.0 + diff --git a/perl-5.31.3-regcomp.c-Fix-wrong-limit-test.patch b/perl-5.31.3-regcomp.c-Fix-wrong-limit-test.patch new file mode 100644 index 0000000..6d6b5d0 --- /dev/null +++ b/perl-5.31.3-regcomp.c-Fix-wrong-limit-test.patch @@ -0,0 +1,31 @@ +From 8d3e0237887e7149be56d17a9448cb465edc5f76 Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Thu, 22 Aug 2019 10:16:14 -0600 +Subject: [PATCH] regcomp.c: Fix wrong limit test +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Spotted by Hugo van der Sanden in code reading. + +Signed-off-by: Petr Písař +--- + regcomp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/regcomp.c b/regcomp.c +index aba6648da5..d61fd434fe 100644 +--- a/regcomp.c ++++ b/regcomp.c +@@ -23132,7 +23132,7 @@ Perl_parse_uniprop_string(pTHX_ + + /* If the original input began with 'In' or 'Is', it could be a subroutine + * call to a user-defined property instead of a Unicode property name. */ +- if ( non_pkg_begin + name_len > 2 ++ if ( name_len - non_pkg_begin > 2 + && name[non_pkg_begin+0] == 'I' + && (name[non_pkg_begin+1] == 'n' || name[non_pkg_begin+1] == 's')) + { +-- +2.21.0 + diff --git a/perl-5.31.4-Handle-undefined-values-correctly.patch b/perl-5.31.4-Handle-undefined-values-correctly.patch new file mode 100644 index 0000000..e5a60cf --- /dev/null +++ b/perl-5.31.4-Handle-undefined-values-correctly.patch @@ -0,0 +1,237 @@ +From 01aed385e6bdbdcfd13bb66e9d8b7c55d2cfc34a Mon Sep 17 00:00:00 2001 +From: James E Keenan +Date: Thu, 19 Sep 2019 23:02:54 -0400 +Subject: [PATCH] Handle undefined values correctly +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +As reported by Henrik Pauli in RT 134441, the documentation's claim that + + $dv->dumpValue([$x, $y]); + +and + + $dv->dumpValues($x, $y); + +was not being sustained in the case where one of the elements in the +array (or array ref) was undefined. This was due to an insufficiently +precise specification within the dumpValues() method for determining +when the value "undef\n" should be printed. + +Tests for previously untested cases have been provided in +t/rt-134441-dumpvalue.t. They were not appended to t/Dumpvalue.t (as +would normally have been the case) because the tests in that file have +accreted over the years in a sub-optimal manner: changes in attributes +of the Dumpvalue object are tested but those changes are not zeroed-out +(by, e.g., use of 'local $self->{attribute} = undef') +before additional attributes are modified and tested. As a consequence, +it's difficult to determine the state of the Dumpvalue object at any +particular point and interactions between attributes cannot be ruled +out. + +Package TieOut, used to capture STDOUT during testing, has been +extracted to its own file so that it can be used by all test files. + +Signed-off-by: Petr Písař +--- + MANIFEST | 2 + + dist/Dumpvalue/lib/Dumpvalue.pm | 4 +- + dist/Dumpvalue/t/Dumpvalue.t | 20 +----- + dist/Dumpvalue/t/lib/TieOut.pm | 20 ++++++ + dist/Dumpvalue/t/rt-134441-dumpvalue.t | 86 ++++++++++++++++++++++++++ + 5 files changed, 112 insertions(+), 20 deletions(-) + create mode 100644 dist/Dumpvalue/t/lib/TieOut.pm + create mode 100644 dist/Dumpvalue/t/rt-134441-dumpvalue.t + +diff --git a/MANIFEST b/MANIFEST +index 7bf62d8479..8159ac8cc1 100644 +--- a/MANIFEST ++++ b/MANIFEST +@@ -3455,6 +3455,8 @@ dist/Devel-SelfStubber/lib/Devel/SelfStubber.pm Generate stubs for SelfLoader.pm + dist/Devel-SelfStubber/t/Devel-SelfStubber.t See if Devel::SelfStubber works + dist/Dumpvalue/lib/Dumpvalue.pm Screen dump of perl values + dist/Dumpvalue/t/Dumpvalue.t See if Dumpvalue works ++dist/Dumpvalue/t/lib/TieOut.pm Helper module for Dumpvalue tests ++dist/Dumpvalue/t/rt-134441-dumpvalue.t See if Dumpvalue works + dist/encoding-warnings/lib/encoding/warnings.pm warn on implicit encoding conversions + dist/encoding-warnings/t/1-warning.t tests for encoding::warnings + dist/encoding-warnings/t/2-fatal.t tests for encoding::warnings +diff --git a/dist/Dumpvalue/lib/Dumpvalue.pm b/dist/Dumpvalue/lib/Dumpvalue.pm +index eef9b27157..3faf829538 100644 +--- a/dist/Dumpvalue/lib/Dumpvalue.pm ++++ b/dist/Dumpvalue/lib/Dumpvalue.pm +@@ -1,7 +1,7 @@ + use 5.006_001; # for (defined ref) and $#$v and our + package Dumpvalue; + use strict; +-our $VERSION = '1.18'; ++our $VERSION = '1.19'; + our(%address, $stab, @stab, %stab, %subs); + + sub ASCII { return ord('A') == 65; } +@@ -79,7 +79,7 @@ sub dumpValues { + my $self = shift; + local %address; + local $^W=0; +- (print "undef\n"), return unless defined $_[0]; ++ (print "undef\n"), return if (@_ == 1 and not defined $_[0]); + $self->unwrap(\@_,0); + } + +diff --git a/dist/Dumpvalue/t/Dumpvalue.t b/dist/Dumpvalue/t/Dumpvalue.t +index 7063dd984c..ba8775126e 100644 +--- a/dist/Dumpvalue/t/Dumpvalue.t ++++ b/dist/Dumpvalue/t/Dumpvalue.t +@@ -16,6 +16,8 @@ BEGIN { + + our ( $foo, @bar, %baz ); + ++use lib ("./t/lib"); ++use TieOut; + use Test::More tests => 88; + + use_ok( 'Dumpvalue' ); +@@ -278,21 +280,3 @@ is( $out->read, "0 0..0 'two'\n", 'dumpValues worked on array ref' ); + $d->dumpValues('one', 'two'); + is( $out->read, "0..1 'one' 'two'\n", 'dumpValues worked on multiple values' ); + +- +-package TieOut; +-use overload '"' => sub { "overloaded!" }; +- +-sub TIEHANDLE { +- my $class = shift; +- bless(\( my $ref), $class); +-} +- +-sub PRINT { +- my $self = shift; +- $$self .= join('', @_); +-} +- +-sub read { +- my $self = shift; +- return substr($$self, 0, length($$self), ''); +-} +diff --git a/dist/Dumpvalue/t/lib/TieOut.pm b/dist/Dumpvalue/t/lib/TieOut.pm +new file mode 100644 +index 0000000000..568caedf9c +--- /dev/null ++++ b/dist/Dumpvalue/t/lib/TieOut.pm +@@ -0,0 +1,20 @@ ++package TieOut; ++use overload '"' => sub { "overloaded!" }; ++ ++sub TIEHANDLE { ++ my $class = shift; ++ bless(\( my $ref), $class); ++} ++ ++sub PRINT { ++ my $self = shift; ++ $$self .= join('', @_); ++} ++ ++sub read { ++ my $self = shift; ++ return substr($$self, 0, length($$self), ''); ++} ++ ++1; ++ +diff --git a/dist/Dumpvalue/t/rt-134441-dumpvalue.t b/dist/Dumpvalue/t/rt-134441-dumpvalue.t +new file mode 100644 +index 0000000000..cc9f270f5a +--- /dev/null ++++ b/dist/Dumpvalue/t/rt-134441-dumpvalue.t +@@ -0,0 +1,86 @@ ++BEGIN { ++ require Config; ++ if (($Config::Config{'extensions'} !~ m!\bList/Util\b!) ){ ++ print "1..0 # Skip -- Perl configured without List::Util module\n"; ++ exit 0; ++ } ++ ++ # `make test` in the CPAN version of this module runs us with -w, but ++ # Dumpvalue.pm relies on all sorts of things that can cause warnings. I ++ # don't think that's worth fixing, so we just turn off all warnings ++ # during testing. ++ $^W = 0; ++} ++ ++use lib ("./t/lib"); ++use TieOut; ++use Test::More tests => 17; ++ ++use_ok( 'Dumpvalue' ); ++ ++my $d; ++ok( $d = Dumpvalue->new(), 'create a new Dumpvalue object' ); ++ ++my $out = tie *OUT, 'TieOut'; ++select(OUT); ++ ++my (@foobar, $x, $y); ++ ++@foobar = ('foo', 'bar'); ++$d->dumpValue([@foobar]); ++$x = $out->read; ++is( $x, "0 'foo'\n1 'bar'\n", 'dumpValue worked on array ref' ); ++$d->dumpValues(@foobar); ++$y = $out->read; ++is( $y, "0 'foo'\n1 'bar'\n", 'dumpValues worked on array' ); ++is( $y, $x, ++ "dumpValues called on array returns same as dumpValue on array ref"); ++ ++@foobar = (undef, 'bar'); ++$d->dumpValue([@foobar]); ++$x = $out->read; ++is( $x, "0 undef\n1 'bar'\n", ++ 'dumpValue worked on array ref, first element undefined' ); ++$d->dumpValues(@foobar); ++$y = $out->read; ++is( $y, "0 undef\n1 'bar'\n", ++ 'dumpValues worked on array, first element undefined' ); ++is( $y, $x, ++ "dumpValues called on array returns same as dumpValue on array ref, first element undefined"); ++ ++@foobar = ('bar', undef); ++$d->dumpValue([@foobar]); ++$x = $out->read; ++is( $x, "0 'bar'\n1 undef\n", ++ 'dumpValue worked on array ref, last element undefined' ); ++$d->dumpValues(@foobar); ++$y = $out->read; ++is( $y, "0 'bar'\n1 undef\n", ++ 'dumpValues worked on array, last element undefined' ); ++is( $y, $x, ++ "dumpValues called on array returns same as dumpValue on array ref, last element undefined"); ++ ++@foobar = ('', 'bar'); ++$d->dumpValue([@foobar]); ++$x = $out->read; ++is( $x, "0 ''\n1 'bar'\n", ++ 'dumpValue worked on array ref, first element empty string' ); ++$d->dumpValues(@foobar); ++$y = $out->read; ++is( $y, "0 ''\n1 'bar'\n", ++ 'dumpValues worked on array, first element empty string' ); ++is( $y, $x, ++ "dumpValues called on array returns same as dumpValue on array ref, first element empty string"); ++ ++@foobar = ('bar', ''); ++$d->dumpValue([@foobar]); ++$x = $out->read; ++is( $x, "0 'bar'\n1 ''\n", ++ 'dumpValue worked on array ref, last element empty string' ); ++$d->dumpValues(@foobar); ++$y = $out->read; ++is( $y, "0 'bar'\n1 ''\n", ++ 'dumpValues worked on array, last element empty string' ); ++is( $y, $x, ++ "dumpValues called on array returns same as dumpValue on array ref, last element empty string"); ++ +-- +2.21.0 + diff --git a/perl-5.31.5-Adapt-Configure-to-GCC-version-10.patch b/perl-5.31.5-Adapt-Configure-to-GCC-version-10.patch new file mode 100644 index 0000000..f9edd84 --- /dev/null +++ b/perl-5.31.5-Adapt-Configure-to-GCC-version-10.patch @@ -0,0 +1,109 @@ +From 913582217c96512015fd60f270f0e262824579b7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Tue, 12 Nov 2019 09:19:18 +0100 +Subject: [PATCH] Adapt Configure to GCC version 10 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +I got a notice from Jeff Law : + + Your particular package fails its testsuite. This was ultimately + tracked down to a Configure problem. The perl configure script treated + gcc-10 as gcc-1 and turned on -fpcc-struct-return. This is an ABI + changing flag and caused Perl to not be able to interact properly with + the dbm libraries on the system leading to a segfault. + +His proposed patch corrected only this one instance of the version +mismatch. Reading the Configure script revealed more issues. This +patch fixes all of them I found. + +Please note I did not test it because I don't have GCC 10 available. + +Signed-off-by: Petr Písař +--- + Configure | 14 +++++++------- + cflags.SH | 2 +- + 2 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/Configure b/Configure +index fad1c9f2b1..706c0b64ed 100755 +--- a/Configure ++++ b/Configure +@@ -4701,7 +4701,7 @@ else + fi + $rm -f try try.* + case "$gccversion" in +-1*) cpp=`./loc gcc-cpp $cpp $pth` ;; ++1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; + esac + case "$gccversion" in + '') gccosandvers='' ;; +@@ -4741,7 +4741,7 @@ esac + # gcc 3.* complain about adding -Idirectories that they already know about, + # so we will take those off from locincpth. + case "$gccversion" in +-3*) ++3.*) + echo "main(){}">try.c + for incdir in $locincpth; do + warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ +@@ -5467,13 +5467,13 @@ fi + case "$hint" in + default|recommended) + case "$gccversion" in +- 1*) dflt="$dflt -fpcc-struct-return" ;; ++ 1.*) dflt="$dflt -fpcc-struct-return" ;; + esac + case "$optimize:$DEBUGGING" in + *-g*:old) dflt="$dflt -DDEBUGGING";; + esac + case "$gccversion" in +- 2*) if $test -d /etc/conf/kconfig.d && ++ 2.*) if $test -d /etc/conf/kconfig.d && + $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 + then + # Interactive Systems (ISC) POSIX mode. +@@ -5482,7 +5482,7 @@ default|recommended) + ;; + esac + case "$gccversion" in +- 1*) ;; ++ 1.*) ;; + 2.[0-8]*) ;; + ?*) set strict-aliasing -fno-strict-aliasing + eval $checkccflag +@@ -5600,7 +5600,7 @@ case "$cppflags" in + ;; + esac + case "$gccversion" in +-1*) cppflags="$cppflags -D__GNUC__" ++1.*) cppflags="$cppflags -D__GNUC__" + esac + case "$mips_type" in + '');; +@@ -23103,7 +23103,7 @@ fi + + : add -D_FORTIFY_SOURCE if feasible and not already there + case "$gccversion" in +-[456789].*) case "$optimize$ccflags" in ++[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in + *-O*) case "$ccflags$cppsymbols" in + *_FORTIFY_SOURCE=*) # Don't add it again. + echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 +diff --git a/cflags.SH b/cflags.SH +index e60742fed1..f1bcd6c38e 100755 +--- a/cflags.SH ++++ b/cflags.SH +@@ -156,7 +156,7 @@ esac + + case "$gccversion" in + '') ;; +-[12]*) ;; # gcc versions 1 (gasp!) and 2 are not good for this. ++[12].*) ;; # gcc versions 1 (gasp!) and 2 are not good for this. + Intel*) ;; # # Is that you, Intel C++? + # + # NOTE 1: the -std=c89 without -pedantic is a bit pointless. +-- +2.21.0 + diff --git a/perl-5.31.5-Be-clearer-about-taint-s-effect-on-INC.patch b/perl-5.31.5-Be-clearer-about-taint-s-effect-on-INC.patch new file mode 100644 index 0000000..5c69996 --- /dev/null +++ b/perl-5.31.5-Be-clearer-about-taint-s-effect-on-INC.patch @@ -0,0 +1,32 @@ +From a1c1fa25b1b25efb11cc8f987e007d4dd20056bc Mon Sep 17 00:00:00 2001 +From: Dave Cross +Date: Wed, 23 Oct 2019 12:50:01 +0100 +Subject: [PATCH] Be clearer about taint's effect on @INC. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + pod/perlsec.pod | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/pod/perlsec.pod b/pod/perlsec.pod +index 0682674143..a631981ba5 100644 +--- a/pod/perlsec.pod ++++ b/pod/perlsec.pod +@@ -269,8 +269,9 @@ problem will be reported: + Insecure dependency in require while running with -T switch + + On versions of Perl before 5.26, activating taint mode will also remove +-the current directory (".") from C<@INC>. Since version 5.26, the +-current directory isn't included in C<@INC>. ++the current directory (".") from the default value of C<@INC>. Since ++version 5.26, the current directory isn't included in C<@INC> by ++default. + + =head2 Cleaning Up Your Path + +-- +2.21.0 + diff --git a/perl-5.31.5-Fix-taint-mode-INC-documentation.patch b/perl-5.31.5-Fix-taint-mode-INC-documentation.patch new file mode 100644 index 0000000..099a6ea --- /dev/null +++ b/perl-5.31.5-Fix-taint-mode-INC-documentation.patch @@ -0,0 +1,45 @@ +From f73351928dfa1d1d564d3f7b8e63c5281ed835ee Mon Sep 17 00:00:00 2001 +From: Dave Cross +Date: Tue, 22 Oct 2019 14:24:13 +0100 +Subject: [PATCH] Fix taint mode @INC documentation +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Explain that -T no longer removes '.' from @INC because, since +5.26, '.' isn't in @INC to start with. + +Signed-off-by: Petr Písař +--- + pod/perlsec.pod | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/pod/perlsec.pod b/pod/perlsec.pod +index b210445685..0682674143 100644 +--- a/pod/perlsec.pod ++++ b/pod/perlsec.pod +@@ -245,8 +245,8 @@ Unix-like environments that support #! and setuid or setgid scripts.) + + =head2 Taint mode and @INC + +-When the taint mode (C<-T>) is in effect, the "." directory is removed +-from C<@INC>, and the environment variables C and C ++When the taint mode (C<-T>) is in effect, the environment variables ++C and C + are ignored by Perl. You can still adjust C<@INC> from outside the + program by using the C<-I> command line option as explained in + L. The two environment variables are ignored because +@@ -268,6 +268,10 @@ problem will be reported: + + Insecure dependency in require while running with -T switch + ++On versions of Perl before 5.26, activating taint mode will also remove ++the current directory (".") from C<@INC>. Since version 5.26, the ++current directory isn't included in C<@INC>. ++ + =head2 Cleaning Up Your Path + + For "Insecure C<$ENV{PATH}>" messages, you need to set C<$ENV{'PATH'}> to +-- +2.21.0 + diff --git a/perl-5.31.5-PATCH-gh-17218-memory-leak.patch b/perl-5.31.5-PATCH-gh-17218-memory-leak.patch new file mode 100644 index 0000000..537fc56 --- /dev/null +++ b/perl-5.31.5-PATCH-gh-17218-memory-leak.patch @@ -0,0 +1,30 @@ +From 0463f3a19af7afac8b402655ad66e5b05c095bcc Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Fri, 15 Nov 2019 15:01:15 -0700 +Subject: [PATCH] PATCH: gh#17218 memory leak +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Indeed, a variable's ref count was not getting decremented. + +Signed-off-by: Petr Písař +--- + regcomp.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/regcomp.c b/regcomp.c +index 076ea350b5..7b9bf6ba7d 100644 +--- a/regcomp.c ++++ b/regcomp.c +@@ -18180,6 +18180,7 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth, + + /* Likewise for 'posixes' */ + _invlist_union(posixes, cp_list, &cp_list); ++ SvREFCNT_dec(posixes); + + /* Likewise for anything else in the range that matched only + * under UTF-8 */ +-- +2.21.0 + diff --git a/perl-5.31.5-Tie-StdHandle-BINMODE-handle-layer-argument.patch b/perl-5.31.5-Tie-StdHandle-BINMODE-handle-layer-argument.patch new file mode 100644 index 0000000..54a1817 --- /dev/null +++ b/perl-5.31.5-Tie-StdHandle-BINMODE-handle-layer-argument.patch @@ -0,0 +1,77 @@ +From a4e94e39cfa6852b1d57e61ee122c8083ab9d82e Mon Sep 17 00:00:00 2001 +From: Hauke D +Date: Mon, 20 Nov 2017 15:31:57 +0100 +Subject: [PATCH] Tie::StdHandle::BINMODE: handle layer argument +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes #16262 + +BINMODE was not handling the LAYER argument. +Also bump the version number. + +(cherry picked from commit 479d04b98e5b747e5c9ead7368d3e132f524a2b7) +Signed-off-by: Nicolas R +Signed-off-by: Petr Písař +--- + lib/Tie/Handle/stdhandle.t | 13 ++++++++++++- + lib/Tie/StdHandle.pm | 4 ++-- + 2 files changed, 14 insertions(+), 3 deletions(-) + +diff --git a/lib/Tie/Handle/stdhandle.t b/lib/Tie/Handle/stdhandle.t +index d2f04bcc5c..6c20d90f2b 100644 +--- a/lib/Tie/Handle/stdhandle.t ++++ b/lib/Tie/Handle/stdhandle.t +@@ -5,7 +5,7 @@ BEGIN { + @INC = '../lib'; + } + +-use Test::More tests => 27; ++use Test::More tests => 29; + + use_ok('Tie::StdHandle'); + +@@ -72,6 +72,17 @@ is($b, "rhubarbX\n", "b eq rhubarbX"); + $b = <$f>; + is($b, "89\n", "b eq 89"); + ++# binmode should pass through layer argument ++ ++binmode $f, ':raw'; ++ok !grep( $_ eq 'utf8', PerlIO::get_layers(tied(*$f)) ), ++ 'no utf8 in layers after binmode :raw'; ++binmode $f, ':utf8'; ++ok grep( $_ eq 'utf8', PerlIO::get_layers(tied(*$f)) ), ++ 'utf8 is in layers after binmode :utf8'; ++ ++# finish up ++ + ok(eof($f), "eof"); + ok(close($f), "close"); + +diff --git a/lib/Tie/StdHandle.pm b/lib/Tie/StdHandle.pm +index dfb86634f0..fb79a986c6 100644 +--- a/lib/Tie/StdHandle.pm ++++ b/lib/Tie/StdHandle.pm +@@ -4,7 +4,7 @@ use strict; + + use Tie::Handle; + our @ISA = 'Tie::Handle'; +-our $VERSION = '4.5'; ++our $VERSION = '4.6'; + + =head1 NAME + +@@ -48,7 +48,7 @@ sub TELL { tell($_[0]) } + sub FILENO { fileno($_[0]) } + sub SEEK { seek($_[0],$_[1],$_[2]) } + sub CLOSE { close($_[0]) } +-sub BINMODE { binmode($_[0]) } ++sub BINMODE { &CORE::binmode(shift, @_) } + + sub OPEN + { +-- +2.21.0 + diff --git a/perl-5.31.5-prevent-a-race-between-name-based-stat-and-an-open-m.patch b/perl-5.31.5-prevent-a-race-between-name-based-stat-and-an-open-m.patch new file mode 100644 index 0000000..27a500b --- /dev/null +++ b/perl-5.31.5-prevent-a-race-between-name-based-stat-and-an-open-m.patch @@ -0,0 +1,48 @@ +From 7c3f362035dec9b7eaec388b1f7f1619c1bd96a3 Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Mon, 4 Nov 2019 09:52:22 +1100 +Subject: [PATCH] prevent a race between name-based stat and an open modifying + atime +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Most linux systems rarely update atime, so it's very unlikely +for this issue to trigger there, but on a system with classic atime +behaviour this was a race between open modifying atime and time() +ticking over. + +gh #17234 + +Signed-off-by: Petr Písař +--- + lib/File/stat.t | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/lib/File/stat.t b/lib/File/stat.t +index c403fc4498..fc9bb12cef 100644 +--- a/lib/File/stat.t ++++ b/lib/File/stat.t +@@ -133,6 +133,9 @@ SKIP: { + test_X_ops($^X, "for $^X", qr/A/); + } + ++# open early so atime is consistent with the name based call ++local *STAT; ++my $canopen = open(STAT, '<', $file); + + my $stat = File::stat::stat($file); + isa_ok($stat, 'File::stat', 'should build a stat object'); +@@ -143,8 +146,7 @@ for (split //, "tTB") { + } + + SKIP: { +- local *STAT; +- skip("Could not open file: $!", 2) unless open(STAT, '<', $file); ++ skip("Could not open file: $!", 2) unless $canopen; + isa_ok(File::stat::stat('STAT'), 'File::stat', + '... should be able to find filehandle'); + +-- +2.21.0 + diff --git a/perl-5.31.5-toke.c-Fix-bug-tr-upgrading-to-UTF-8-in-middle.patch b/perl-5.31.5-toke.c-Fix-bug-tr-upgrading-to-UTF-8-in-middle.patch new file mode 100644 index 0000000..7a222bf --- /dev/null +++ b/perl-5.31.5-toke.c-Fix-bug-tr-upgrading-to-UTF-8-in-middle.patch @@ -0,0 +1,78 @@ +From 0c311b7c345769239f38d0139ea7738feec5ca4d Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Sat, 2 Nov 2019 13:59:38 -0600 +Subject: [PATCH] toke.c: Fix bug tr/// upgrading to UTF-8 in middle +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Consider tr/\x{ff}-\x{100}/AB/. + +While parsing, the code keeps an offset from the beginning of the output +to the beginning of the second number in the range. This is purely for +speed so that it wouldn't have to re-find the beginning of that value, +when it already knew it. + +But the example above shows the folly of this shortcut. The second +number in the range causes the output to be upgraded to UTF-8, which +makes that offset invalid in general. Change to re-find the beginning. + +Signed-off-by: Petr Písař +--- + t/op/tr.t | 12 +++++++++++- + toke.c | 4 +++- + 2 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/t/op/tr.t b/t/op/tr.t +index 47d603d4fd..25125c5bc7 100644 +--- a/t/op/tr.t ++++ b/t/op/tr.t +@@ -13,7 +13,7 @@ BEGIN { + + use utf8; + +-plan tests => 301; ++plan tests => 304; + + # Test this first before we extend the stack with other operations. + # This caused an asan failure due to a bad write past the end of the stack. +@@ -1145,4 +1145,14 @@ for ("", nullrocow) { + 'RT #133880 illegal \N{}'); + } + ++{ ++ my $c = "\xff"; ++ my $d = "\x{104}"; ++ eval '$c =~ tr/\x{ff}-\x{104}/\x{100}-\x{105}/'; ++ is($@, "", 'tr/\x{ff}-\x{104}/\x{100}-\x{105}/ compiled'); ++ is($c, "\x{100}", 'ff -> 100'); ++ eval '$d =~ tr/\x{ff}-\x{104}/\x{100}-\x{105}/'; ++ is($d, "\x{105}", '104 -> 105'); ++} ++ + 1; +diff --git a/toke.c b/toke.c +index 2995737af2..28f305c62c 100644 +--- a/toke.c ++++ b/toke.c +@@ -3044,7 +3044,7 @@ S_scan_const(pTHX_ char *start) + * 'offset_to_max' is the offset in 'sv' at which the character + * (the range's maximum end point) before 'd' begins. + */ +- char * max_ptr = SvPVX(sv) + offset_to_max; ++ char * max_ptr; + char * min_ptr; + IV range_min; + IV range_max; /* last character in range */ +@@ -3056,6 +3056,8 @@ S_scan_const(pTHX_ char *start) + IV real_range_max = 0; + #endif + /* Get the code point values of the range ends. */ ++ max_ptr = (d_is_utf8) ? (char *) utf8_hop( (U8*) d, -1) : d - 1; ++ offset_to_max = max_ptr - SvPVX_const(sv); + if (d_is_utf8) { + /* We know the utf8 is valid, because we just constructed + * it ourselves in previous loop iterations */ +-- +2.21.0 + diff --git a/perl-5.31.5-toke.c-comment-changes.patch b/perl-5.31.5-toke.c-comment-changes.patch new file mode 100644 index 0000000..439a97d --- /dev/null +++ b/perl-5.31.5-toke.c-comment-changes.patch @@ -0,0 +1,48 @@ +From d7f7b0e39a10a6e3e0bd81d15473ee522a064016 Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Mon, 4 Nov 2019 21:55:53 -0700 +Subject: [PATCH] toke.c: comment changes +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +These should have been included in +0c311b7c345769239f38d0139ea7738feec5ca4d + +Signed-off-by: Petr Písař +--- + toke.c | 11 ++--------- + 1 file changed, 2 insertions(+), 9 deletions(-) + +diff --git a/toke.c b/toke.c +index 3f376640ef..9c1e77f9db 100644 +--- a/toke.c ++++ b/toke.c +@@ -3032,13 +3032,8 @@ S_scan_const(pTHX_ char *start) + s++; /* Skip past the hyphen */ + + /* d now points to where the end-range character will be +- * placed. Save it so won't have to go finding it later, +- * and drop down to get that character. (Actually we +- * instead save the offset, to handle the case where a +- * realloc in the meantime could change the actual +- * pointer). We'll finish processing the range the next +- * time through the loop */ +- offset_to_max = d - SvPVX_const(sv); ++ * placed. Drop down to get that character. We'll finish ++ * processing the range the next time through the loop */ + + if (s_is_utf8 && UTF8_IS_ABOVE_LATIN1(*s)) { + has_above_latin1 = TRUE; +@@ -3055,8 +3050,6 @@ S_scan_const(pTHX_ char *start) + * are the range start and range end, in order. + * 'd' points to just beyond the range end in the 'sv' string, + * where we would next place something +- * 'offset_to_max' is the offset in 'sv' at which the character +- * (the range's maximum end point) before 'd' begins. + */ + char * max_ptr; + char * min_ptr; +-- +2.21.0 + diff --git a/perl-5.8.0-libdir64.patch b/perl-5.8.0-libdir64.patch new file mode 100644 index 0000000..a29ee87 --- /dev/null +++ b/perl-5.8.0-libdir64.patch @@ -0,0 +1,47 @@ +diff -up perl-5.28.0-RC1/Configure.orig perl-5.28.0-RC1/Configure +--- perl-5.28.0-RC1/Configure.orig 2018-05-21 12:44:04.000000000 +0200 ++++ perl-5.28.0-RC1/Configure 2018-05-22 12:21:53.908599933 +0200 +@@ -7269,8 +7269,8 @@ esac' + : 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" ;; +@@ -7336,8 +7336,8 @@ esac + : /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 "MakeMaker (v$VERSION)\n" if $Verbose; + if (-f "MANIFEST" && ! -f "Makefile" && ! $UNDER_CORE){ +@@ -2821,6 +2841,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 +@@ -1045,7 +1045,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/perl-example.stp b/perl-example.stp new file mode 100644 index 0000000..040f8e3 --- /dev/null +++ b/perl-example.stp @@ -0,0 +1,21 @@ +/* + Example of the perl systemtap tapset shows a nested view of perl subroutine + calls and returns across the whole system. + + To run: + stap perl-example.stp (for all perl processes) + For specific perl process: + stap perl-example.stp -c COMMAND +*/ + +probe perl.sub.call +{ + printf("%s => sub: %s, filename: %s, line: %d, package: %s\n", + thread_indent(1), sub, filename, lineno, package) +} + +probe perl.sub.return +{ + printf("%s <= sub: %s, filename: %s, line: %d, package: %s\n", + thread_indent(-1), sub, filename, lineno, package) +} diff --git a/perl-perlbug-tag.patch b/perl-perlbug-tag.patch new file mode 100644 index 0000000..9988d86 --- /dev/null +++ b/perl-perlbug-tag.patch @@ -0,0 +1,21 @@ +diff -up perl-5.28.0-RC1/utils/perlbug.PL.orig perl-5.28.0-RC1/utils/perlbug.PL +--- perl-5.28.0-RC1/utils/perlbug.PL.orig 2018-05-21 12:44:04.000000000 +0200 ++++ perl-5.28.0-RC1/utils/perlbug.PL 2018-05-22 12:17:58.584993588 +0200 +@@ -288,17 +288,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/perl.spec b/perl.spec new file mode 100644 index 0000000..af1095f --- /dev/null +++ b/perl.spec @@ -0,0 +1,7045 @@ +%global perl_version 5.30.1 +%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 %{defined perl_bootstrap} + +# This overrides filters from build root (/usr/lib/rpm/macros.d/macros.perl) +# intentionally (unversioned perl(DB) is removed and versioned one is kept). +# Filter provides from *.pl files, bug #924938 +%global __provides_exclude_from .*%{_docdir}|.*%{perl_archlib}/.*\\.pl$|.*%{perl_privlib}/.*\\.pl$ +%global __requires_exclude_from %{_docdir} +%global __provides_exclude perl\\((VMS|Win32|BSD::|DB\\)$) +%global __requires_exclude perl\\((VMS|BSD::|Win32|Tk|Mac::|Your::Module::Here) +# same as we provide in /usr/lib/rpm/macros.d/macros.perl +%global perl5_testdir %{_libexecdir}/perl5-tests + +# Optional features +# Run C++ tests +%bcond_without perl_enables_cplusplus_test +# We can bootstrap without gdbm +%bcond_without gdbm +# Support for groff, bug #135101 +%bcond_without perl_enables_groff +# Run Turkish locale tests +%bcond_without perl_enables_turkish_test +# Run syslog tests +%bcond_with perl_enables_syslog_test +# SystemTap support +%bcond_without perl_enables_systemtap +# <> operator uses File::Glob nowadays. CSH is not needed. +%bcond_with perl_enables_tcsh +# We can skip %%check phase +%bcond_without test + +Name: perl +# These are all found licenses. They are distributed among various +# subpackages. +# dist/Tie-File/lib/Tie/File.pm: GPLv2+ or Artistic +# cpan/Getopt-Long/lib/Getopt/Long.pm: GPLv2+ or Artistic +# cpan/Compress-Raw-Zlib/Zlib.xs: (GPL+ or Artistic) and zlib +# cpan/Digest-MD5/MD5.xs: (GPL+ or Artistic) and BSD +# cpan/Time-Piece/Piece.xs: (GPL+ or Artistic) and BSD +# dist/PathTools/Cwd.xs: (GPL+ or Artistic) and BSD +# util.c: (GPL+ or Artistic) and BSD +# cpan/perlfaq/lib/perlfaq4.pod: (GPL+ or Artistic) and Public Domain +# cpan/Test-Simple/lib/Test/Tutorial.pod: (GPL+ or Artistic) and +# Public Domain +# cpan/MIME-Base64/Base64.xs: (GPL+ or Artistic) and MIT +# cpan/Test-Simple/lib/ok.pm: CC0 +# cpan/Text-Tabs/lib/Text/Wrap.pm: TTWL +# cpan/Encode/bin/encguess: Artistic 2.0 +# cpan/libnet/lib/Net/libnetFAQ.pod: Artistic (CPAN RT#117888) +# cpan/Unicode-Collate/Collate/allkeys.txt: Unicode +# lib/unicore: UCD +# ext/SDBM_File/sdbm.{c,h}: Public domain +# regexec.c, regcomp.c: HSRL +# cpan/Locale-Maketext-Simple/lib/Locale/Maketext/Simple.pm: MIT (with +# exception for Perl) +# time64.c: MIT +# pod/perlpodstyle.pod: MIT +# pod/perlunicook.pod: (GPL+ or Artistic) and Public Domain +# pod/perlgpl.pod: GPL text +# pod/perlartistic.pod: Artistic text +# ext/File-Glob/bsd_glob.{c,h}: BSD +# Other files: GPL+ or Artistic +## Not is a binary package +# cpan/podlators/t/style/minimum-version.t MIT +# cpan/Term-ANSIColor/t/lib/Test/RRA/Config.pm: MIT +## Unbundled +# cpan/Compress-Raw-Bzip2/bzip2-src: BSD +# cpan/Compress-Raw-Zlib/zlib-src: zlib +## perl sub-package notice +# perluniprops.pod is generated from lib/unicore sources: UCD +# +# This sub-subpackage 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: %{perl_epoch} +Version: %{perl_version} +# release number must be even higher, because dual-lived modules will be broken otherwise +Release: 452%{?dist} +Summary: Practical Extraction and Report Language +Url: https://www.perl.org/ +Source0: https://www.cpan.org/src/5.0/perl-%{perl_version}.tar.xz +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 +# Tom Christiansen confirms Pod::Html uses the same license as perl +Source6: Pod-Html-license-clarification + +# Pregenerated dependencies for bootstrap. +# If your RPM tool fails on including the source file, then you forgot to +# define _sourcedir macro to point to the directory with the sources. +Source7: gendep.macros +%if %{defined perl_bootstrap} +%include %{SOURCE7} +%endif + +# Removes date check, Fedora/RHEL specific +Patch1: perl-perlbug-tag.patch + +# Fedora/RHEL only (64bit only) +Patch2: perl-5.8.0-libdir64.patch + +# Fedora/RHEL specific (use libresolv instead of libbind), bug #151127 +Patch3: perl-5.10.0-libresolv.patch + +# FIXME: May need the "Fedora" references removed before upstreaming +# patches ExtUtils-MakeMaker +Patch4: perl-USE_MM_LD_RUN_PATH.patch + +# Provide maybe_command independently, bug #1129443 +Patch5: perl-5.22.1-Provide-ExtUtils-MM-methods-as-standalone-ExtUtils-M.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. +Patch6: perl-5.10.0-x86_64-io-test-failure.patch + +# switch off test, which is failing only on koji (fork) +Patch7: perl-5.14.1-offtest.patch + +# Define SONAME for libperl.so +Patch8: perl-5.16.3-create_libperl_soname.patch + +# Install libperl.so to -Dshrpdir value +Patch9: perl-5.22.0-Install-libperl.so-to-shrpdir-on-Linux.patch + +# Make *DBM_File desctructors thread-safe, bug #1107543, RT#61912 +Patch10: perl-5.18.2-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch + +# Replace ExtUtils::MakeMaker dependency with ExtUtils::MM::Utils. +# This allows not to require perl-devel. Bug #1129443 +Patch11: perl-5.22.1-Replace-EU-MM-dependnecy-with-EU-MM-Utils-in-IPC-Cmd.patch + +# Link XS modules to pthread library to fix linking with -z defs, +# +Patch12: perl-5.27.8-hints-linux-Add-lphtread-to-lddlflags.patch + +# Pass the correct CFLAGS to dtrace +Patch13: perl-5.28.0-Pass-CFLAGS-to-dtrace.patch + +# Do not panic when outputting a warning, RT#134059, fixed after 5.31.0 +Patch15: perl-5.31.0-PATCH-perl-134059-panic-outputting-a-warning.patch + +# Fix memory handling when parsing string literals, fixed after 5.31.0 +Patch16: perl-5.31.0-S_scan_const-Properly-test-if-need-to-grow.patch + +# Fix an undefined behavior in shifting IV variables, fixed after 5.31.0 +Patch17: perl-5.31.0-Create-fcn-for-lossless-conversion-of-NV-to-IV.patch +Patch18: perl-5.30.0-pp.c-Add-two-UNLIKELY-s.patch +Patch19: perl-5.30.0-Remove-undefined-behavior-from-IV-shifting.patch + +# Fix stacking file test operators, CPAN RT#127073, fixed after 5.31.0 +Patch20: perl-5.31.0-Don-t-use-PL_check-op_type-to-check-for-filetets-ops.patch + +# Fix a crash in SIGALARM handler when waiting on a child process to be closed, +# RT#122112, fixed after 5.31.0 +Patch21: perl-5.31.0-perl-122112-test-for-signal-handler-death-in-pclose.patch +Patch22: perl-5.31.0-perl-122112-a-simpler-fix-for-pclose-aborted-by-a-si.patch +Patch23: perl-5.31.0-perl-122112-remove-some-interfering-debug-output.patch + +# Fix a crash with a negative precision in sprintf function, RT#134008, +# fixed after 5.31.0 +Patch25: perl-5.31.0-perl-134008-an-alternative-test.patch + +# Prevent from wrapping a width in a numeric format string, RT#133913, +# fixed after 5.31.0 +Patch27: perl-5.31.0-perl-133913-limit-numeric-format-results-to-INT_MAX.patch + +# Fix subroutine protypes to track reference aliases, RT#134072, +# fixed after 5.31.0 +Patch28: perl-5.31.0-perl-134072-allow-foo-bar-to-work-in-main.patch + +# Fix changing packet destination sent from a UDP IO::Socket object, +# RT#133936, fixed after 5.31.0 +Patch30: perl-5.31.0-perl-133936-ensure-TO-is-honoured-for-UDP-sock-send.patch +Patch31: perl-5.31.0-perl-133936-document-differences-between-IO-Socket-a.patch +Patch32: perl-5.31.0-perl-133936-make-send-a-bit-saner.patch + +# Fix %%{^CAPTURE_ALL} to be an alias for %%- variable, RT#131867, +# fixed after 5.31.0 +Patch37: perl-5.31.0-CAPTURE_ALL-was-intended-to-be-an-alias-for-make-it-.patch + +# Fix %%{^CAPTURE} value when used after @{^CAPTURE}, RT#134193, +# fixed after 5.31.0 +Patch38: perl-5.31.0-perl-134193-allow-CAPTURE-to-work-when-CAPTURE-comes.patch +Patch39: perl-5.31.0-perl-134193-make-the-varname-match-the-names.patch + +# Fix a test for a crash in SIGALARM handler when waiting on a child process to +# be closed, RT#122112, fixed after 5.31.1 +Patch40: perl-5.31.1-perl-122112-make-sure-SIGPIPE-is-delivered-if-we-tes.patch + +# Fix a crash on an uninitialized warning when processing a multideref node, +# RT#134275, fixed after 5.31.1 +Patch41: perl-5.31.1-avoid-SEGV-with-uninit-warning-with-multideref.patch + +# Preserve append mode when opening anonymous files, RT#134221, +# fixed after 5.31.1 +Patch42: perl-5.30.0-perl-134221-support-append-mode-for-open-.-undef.patch +Patch43: perl-5.31.1-perl-134221-support-append-mode-temp-files-on-Win32-.patch +Patch44: perl-5.31.1-perl-134221-support-O_APPEND-for-open-.-undef-on-VMS.patch + +# Fix propagating non-string variables in an exception value, RT#134291, +# fixed after 5.31.2 +Patch45: perl-5.31.2-perl-134291-propagate-non-PVs-in-in-bare-die.patch + +# Include trailing zero in scalars holding trie data, RT#134207, +# fixed after 5.31.2 +Patch46: perl-5.31.2-include-a-trailing-0-in-SVs-holding-trie-info.patch + +# Fix a use after free in debugging output of a collation, +# in upstream after 5.31.2 +Patch48: perl-5.31.2-locale.c-Stop-Coverity-warning.patch + +# Fix a NULL pointer dereference in PerlIOVia_pushed(), fixed after 5.31.2 +Patch49: perl-5.31.2-PerlIO-Via-check-arg-is-non-NULL-before-using-it.patch + +# Fix a crash when setting $@ on unwinding a call stack, RT#134266, +# fixed after 5.31.2 +Patch50: perl-5.30.0-perl-134266-make-sure-is-writable-when-we-write-to-i.patch + +# Fix parsing a denominator when parsing a Unicode property name, +# fixed after 5.31.2 +Patch51: perl-5.31.2-regcomp.c-Don-t-read-off-the-end-of-buffer.patch + +# Fix a documentation about a future API change, fixed after 5.31.2 +Patch52: perl-5.31.2-perlapi-5.30-promise-not-met-change-to-5.32.patch + +# Do not run File-Find tests in parallel, fixed after 5.31.2 +Patch53: perl-5.31.2-Run-tests-in-ext-File-Find-t-in-series.patch + +# Fix parsing a Unicode property name when compiling a regular expression, +# fixed after 5.31.3 +Patch54: perl-5.31.3-regcomp.c-Fix-wrong-limit-test.patch + +# Do not interpret 0x and 0b prefixes when numifying strings, RT#134230, +# fixed after 5.31.3 +Patch56: perl-5.31.3-perl-134230-don-t-interpret-0x-0b-when-numifying-str.patch + +# Fix a buffer overflow when compiling a regular expression with many +# branches, RT#134329, fixed after 5.31.3 +# This is a binary patch and requires git. +Patch58: perl-5.30.0-PATCH-perl-134329-Use-after-free-in-regcomp.c.patch + +# Correct a misspelling in perlrebackslash documentation, RT#134395, +# fixed after 5.31.3 +Patch59: perl-5.31.3-Supply-missing-right-brace-in-regex-example.patch + +# Fix a detection for futimes, RT#134432, fixed after 5.31.3 +Patch61: perl-5.31.3-Configure-Include-stdlib.h-in-futimes-check.patch +Patch62: perl-5.31.3-Florian-Weimer-is-now-a-perl-author.patch + +# Fix overloading for binary and octal floats, RT#125557, +# in upstream after 5.31.3 +Patch63: perl-5.30.1-perl-125557-correctly-handle-overload-for-bin-oct-fl.patch + +# Fix handling undefined array members in Dumpvalue, RT#134441, +# in upstream after 5.31.4 +Patch64: perl-5.31.4-Handle-undefined-values-correctly.patch + +# Fix taint mode documentation regarding @INC, in upstream after 5.31.5 +Patch65: perl-5.31.5-Fix-taint-mode-INC-documentation.patch +Patch66: perl-5.31.5-Be-clearer-about-taint-s-effect-on-INC.patch + +# Fix handling a layer argument in Tie::StdHandle::BINMODE(), RT#132475, +# in upstream after 5.31.5 +Patch67: perl-5.31.5-Tie-StdHandle-BINMODE-handle-layer-argument.patch + +# Fix an unintended upgrade to UTF-8 in the middle of a transliteration, +# in upstream after 5.31.5 +Patch68: perl-5.31.5-toke.c-Fix-bug-tr-upgrading-to-UTF-8-in-middle.patch +Patch69: perl-5.31.5-toke.c-comment-changes.patch + +# Fix a race in File::stat() tests, GH#17234, in upstream after 5.31.5 +Patch70: perl-5.31.5-prevent-a-race-between-name-based-stat-and-an-open-m.patch + +# Fix a buffer overread when parsing a number, GH#17279, +# in upstream after 5.31.5 +Patch71: perl-5.30.1-handle-s-being-updated-without-len-being-updated.patch + +# Fix GCC 10 version detection, , +# in upstream after 5.31.5 +Patch72: perl-5.31.5-Adapt-Configure-to-GCC-version-10.patch + +# Fix a memory leak when compiling a regular expression with a non-word class, +# GH#17218, in upsream after 5.31.5 +Patch73: perl-5.31.5-PATCH-gh-17218-memory-leak.patch + +# Fix CVE-2020-10543 (an integer overflow from nested regex quantifiers), +# bug #1837975, in upstream 5.30.3 +Patch74: perl-5.30.2-regcomp.c-Prevent-integer-overflow-from-nested-regex.patch + +# Fix CVE-2020-10878 (a corruption of a state of a compiled regular expression +# due to an integer overflow), bug #1837988, in upstream 5.30.3 +Patch75: perl-5.30.2-study_chunk-extract-rck_elide_nothing.patch +Patch76: perl-5.30.2-regcomp-use-long-jumps-if-there-is-any-possibility-o.patch + +# Fix CVE-2020-12723 (a corruption of a state of a compiled regular expression +# due to recursive calls), bug #1838000, in upstream 5.30.3 +Patch77: perl-5.30.1-study_chunk-avoid-mutating-regexp-program-within-GOS.patch + +# Link XS modules to libperl.so with EU::CBuilder on Linux, bug #960048 +Patch200: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch + +# Link XS modules to libperl.so with EU::MM on Linux, bug #960048 +Patch201: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-MM-on-Linux.patch + +# Update some of the bundled modules +# see http://fedoraproject.org/wiki/Perl/perl.spec for instructions + +BuildRequires: bash +BuildRequires: bzip2-devel +BuildRequires: coreutils +BuildRequires: findutils +BuildRequires: gcc +%if %{with gdbm} +BuildRequires: gdbm-devel +%endif +# git for PATCH-perl-134329-Use-after-free-in-regcomp.c.patch +BuildRequires: git-core +# glibc-common for iconv +BuildRequires: glibc-common +%if %{with perl_enables_groff} +# Build-require groff tools for populating %%Config correctly, bug #135101 +BuildRequires: groff-base +%endif +BuildRequires: libdb-devel +BuildRequires: make +%if !%{defined perl_bootstrap} +BuildRequires: perl-interpreter +BuildRequires: perl-generators +%endif +BuildRequires: sed +%if %{with perl_enables_systemtap} +BuildRequires: systemtap-sdt-devel +%endif +BuildRequires: tar +%if %{with perl_enables_tcsh} +BuildRequires: tcsh +%endif +BuildRequires: zlib-devel + +# For tests +%if %{with test} +%if %{with perl_enables_cplusplus_test} +# An optional ExtUtils-CBuilder's test +BuildRequires: gcc-c++ +%endif +BuildRequires: procps +%if %{with perl_enables_turkish_test} +# An optional t/re/fold_grind_T.t test +BuildRequires: glibc-langpack-tr +%endif +%if %{with perl_enables_syslog_test} +BuildRequires: rsyslog +%endif +%endif + + +# compat macro needed for rebuild +%global perl_compat perl(:MODULE_COMPAT_5.30.1) + +Requires: %perl_compat +Requires: perl-interpreter%{?_isa} = %{perl_epoch}:%{perl_version}-%{release} +Requires: perl-libs%{?_isa} = %{perl_epoch}:%{perl_version}-%{release} +Requires: perl-devel%{?_isa} = %{perl_epoch}:%{perl_version}-%{release} +Requires: perl-macros +Requires: perl-utils +%if %{defined perl_bootstrap} +%gendep_perl +%endif + +Requires: perl-Archive-Tar, perl-Attribute-Handlers, perl-autodie, +Requires: perl-bignum +Requires: perl-Compress-Raw-Bzip2, +Requires: perl-Carp, perl-Compress-Raw-Zlib, perl-Config-Perl-V, +Requires: perl-constant, +Requires: perl-CPAN, perl-CPAN-Meta, perl-CPAN-Meta-Requirements, +Requires: perl-CPAN-Meta-YAML +Requires: perl-Data-Dumper, perl-DB_File, +Requires: perl-Devel-Peek, perl-Devel-PPPort, perl-Devel-SelfStubber, +Requires: perl-Digest, perl-Digest-MD5, +Requires: perl-Digest-SHA, +Requires: perl-Encode, perl-Encode-devel, perl-encoding +Requires: perl-Env, perl-Errno, perl-Exporter, perl-experimental +Requires: perl-ExtUtils-CBuilder, perl-ExtUtils-Command, +Requires: perl-ExtUtils-Embed, +Requires: perl-ExtUtils-Install, perl-ExtUtils-MakeMaker +Requires: perl-ExtUtils-Manifest, perl-ExtUtils-Miniperl +Requires: perl-ExtUtils-ParseXS, perl-File-Fetch +Requires: perl-File-Path, perl-File-Temp, perl-Filter, +Requires: perl-Filter-Simple, perl-Getopt-Long +Requires: perl-HTTP-Tiny, +Requires: perl-IO, perl-IO-Compress, perl-IO-Socket-IP +Requires: perl-IO-Zlib, perl-IPC-Cmd, perl-IPC-SysV, perl-JSON-PP +Requires: perl-libnet, perl-libnetcfg, +Requires: perl-Locale-Maketext, +Requires: perl-Locale-Maketext-Simple +Requires: perl-Math-BigInt, perl-Math-BigInt-FastCalc, perl-Math-BigRat, +Requires: perl-Math-Complex, perl-Memoize, +Requires: perl-MIME-Base64, +Requires: perl-Module-CoreList, +Requires: perl-Module-CoreList-tools, perl-Module-Load +Requires: perl-Module-Load-Conditional, perl-Module-Loaded, +Requires: perl-Module-Metadata, perl-Net-Ping, +Requires: perl-open, perl-PathTools +Requires: perl-Params-Check +Requires: perl-perlfaq, +Requires: perl-PerlIO-via-QuotedPrint, perl-Perl-OSType +Requires: perl-Pod-Checker, perl-Pod-Escapes, perl-Pod-Html, +Requires: perl-Pod-Parser, perl-Pod-Perldoc, perl-Pod-Usage +Requires: perl-podlators, perl-Pod-Simple, perl-Scalar-List-Utils +Requires: perl-SelfLoader, perl-Socket, perl-Storable, perl-Sys-Syslog, +Requires: perl-Term-ANSIColor, perl-Term-Cap, +Requires: perl-Test, perl-Test-Harness, perl-Test-Simple +Requires: perl-Text-Balanced, perl-Text-ParseWords, perl-Text-Tabs+Wrap, +Requires: perl-Thread-Queue +Requires: perl-Time-HiRes +Requires: perl-Time-Local, perl-Time-Piece +Requires: perl-Unicode-Collate, perl-Unicode-Normalize, +Requires: perl-version, perl-threads, perl-threads-shared, perl-parent + +# Full EVR is for compatibility with systems that swapped perl and perl-core +# , +# bug #1464903. +Provides: perl-core = %{perl_version}-%{release} +Provides: perl-core%{?_isa} = %{perl_version}-%{release} +# perl was renamed to perl-interpreter and perl-core renamed to perl +Obsoletes: perl-core < 5.26.0-395 + + +%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. + +This is a metapackage with all the Perl bits and core modules that can be +found in the upstream tarball from perl.org. + +If you need only a specific feature, you can install a specific package +instead. E.g. to handle Perl scripts with %{_bindir}/perl interpreter, +install perl-interpreter package. See perl-interpreter description for more +details on the Perl decomposition into packages. + + +%package interpreter +Summary: Standalone executable Perl interpreter +License: (GPL+ or Artistic) and (GPLv2+ or Artistic) and BSD and Public Domain and UCD +# perl-interpreter denotes a package with the perl executable. +# Full EVR is for compatibility with systems that swapped perl and perl-core +# , +# bug #1464903. +Version: %{perl_version} +Epoch: %{perl_epoch} + +Requires: perl-libs%{?_isa} = %{perl_epoch}:%{perl_version}-%{release} +# Require this till perl-interpreter sub-package provides any modules +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_interpreter +%endif + +# We need this to break the dependency loop, and ensure that perl-libs +# gets installed before perl-interpreter. +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 + +# File provides +Provides: perl(bytes_heavy.pl) +Provides: perl(dumpvar.pl) +Provides: perl(perl5db.pl) + +# suidperl isn't created by upstream since 5.12.0 +Obsoletes: perl-suidperl <= 4:5.12.2 +# perl was renamed to perl-interpreter and perl-core renamed to perl +# , +# bug #1464903. +Obsoletes: perl < 4:5.26.0-395 + + +%description interpreter +This is a Perl interpreter as a standalone executable %{_bindir}/perl +required for handling Perl scripts. It does not provide all the other Perl +modules or tools. + +Install this package if you want to program in Perl or enable your system to +handle Perl scripts with %{_bindir}/perl interpreter. + +If your script requires some Perl modules, you can install them with +"perl(MODULE)" where "MODULE" is a name of required module. E.g. install +"perl(Test::More)" to make Test::More Perl module available. + +If you need all the Perl modules that come with upstream Perl sources, so +called core modules, install perl package. + +If you only need perl run-time as a shared library, i.e. Perl interpreter +embedded into another application, the only essential package is perl-libs. + +Perl header files can be found in perl-devel package. + +Perl utils like "splain" or "perlbug" can be found in perl-utils package. + + +%package libs +Summary: The libraries for the perl run-time +License: (GPL+ or Artistic) and HSRL and MIT and UCD +# Compat provides +Provides: %perl_compat +Provides: perl(:MODULE_COMPAT_5.30.0) +# Interpreter version to fulfil required genersted from "require 5.006;" +Provides: perl(:VERSION) = %{perl_version} +# Integeres are 64-bit on all platforms +Provides: perl(:WITH_64BIT) +# Threading provides +Provides: perl(:WITH_ITHREADS) +Provides: perl(:WITH_THREADS) +# Largefile provides +Provides: perl(:WITH_LARGEFILES) +# PerlIO provides +Provides: perl(:WITH_PERLIO) +# Loaded by charnames, unicore/Name.pm does not declare unicore::Name module +Provides: perl(unicore::Name) +# Keep utf8 modules in perl-libs because a sole regular expression like /\pN/ +# causes loading utf8 and unicore/Heave.pl and unicore/lib files. +Provides: perl(utf8_heavy.pl) +# utf8 and utf8_heavy.pl require Carp, re, strict, warnings, XSLoader +Requires: perl(Carp) +# Encode is loaded in BOOT section of PerlIO::encoding +Requires: perl(Encode) +Requires: perl(Exporter) +# Term::Cap is optional +Requires: perl(XSLoader) +%if %{defined perl_bootstrap} +%gendep_perl_libs +%endif + +# Remove private redefinitions +# XSLoader redefines DynaLoader name space for compatibility, but does not +# load the DynaLoader.pm (though the DynaLoader.xs is compiled into libperl). +%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\((charnames|DynaLoader)\\)$ + +%description libs +The is a perl run-time (interpreter as a shared library and include +directories). + + +%package devel +Summary: Header #files for use in perl development +# l1_char_class_tab.h is generated from lib/unicore sources: UCD +License: (GPL+ or Artistic) and UCD +%if %{with perl_enables_systemtap} +Requires: systemtap-sdt-devel +%endif +Requires: perl(ExtUtils::ParseXS) +Requires: %perl_compat +# Match library and header files when downgrading releases +Requires: perl-libs%{?_isa} = %{perl_epoch}:%{perl_version}-%{release} +# Devel::PPPort for h2xs script +Requires: perl(Devel::PPPort) +# Compiler and linker options stored into perl and used when building XS +# modules refer to hardering profiles like +# /usr/lib/rpm/redhat/redhat-hardened-cc1 that are delivered by +# redhat-rpm-config. Bug #1557667. +Requires: redhat-rpm-config +# ExtUtils::Embed -e ldopts include libcrypt, bug #1666098 +Requires: libxcrypt-devel%{?_isa} + +%if %{defined perl_bootstrap} +%gendep_perl_devel +%endif + +%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 +License: GPL+ or Artistic +Requires: %perl_compat +Requires: perl-interpreter +%if %{defined perl_bootstrap} +%gendep_perl_macros +%endif + +%description macros +RPM macros that are handy when building binary RPM packages. + + +%package tests +Summary: The Perl test suite +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 +%if %{defined perl_bootstrap} +%gendep_perl_tests +%endif + +%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). + + +%package utils +Summary: Utilities packaged with the Perl distribution +License: GPL+ or Artistic +Epoch: 0 +Version: %{perl_version} +BuildArch: noarch +# Match library exactly for splain messages +Requires: perl-libs = %{perl_epoch}:%{perl_version}-%{release} +# Keep /usr/sbin/sendmail and Module::CoreList optional for the perlbug tool +%if %{defined perl_bootstrap} +%gendep_perl_utils +%endif +Conflicts: perl < 4:5.22.0-351 + +%description utils +Several utilities which come with Perl distribution like h2ph, perlbug, +perlthanks, pl2pm, and splain. Some utilities are provided by more specific +packages like perldoc by perl-Pod-Perldoc. + + +%if %{dual_life} || %{rebuild_from_scratch} +%package Archive-Tar +Summary: A module for Perl manipulation of .tar files +License: GPL+ or Artistic +Epoch: 0 +Version: 2.32 +BuildArch: noarch +Requires: %perl_compat +Requires: perl(IO::Zlib) >= 1.01 +# Optional run-time: +Requires: perl(IO::Compress::Bzip2) >= 2.015 +# IO::String not used if perl supports useperlio which is true +# Use Compress::Zlib's version for IO::Uncompress::Bunzip2 +Requires: perl(IO::Uncompress::Bunzip2) >= 2.015 +%if !%{defined perl_bootstrap} +Requires: perl(Text::Diff) +%endif +%if %{defined perl_bootstrap} +%gendep_perl_Archive_Tar +%endif + +%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 + +%package Attribute-Handlers +Summary: Simpler definition of attribute handlers +License: GPL+ or Artistic +Epoch: 0 +Version: 1.01 +BuildArch: noarch +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Attribute_Handlers +%endif +Conflicts: perl < 4:5.22.0-351 + +%description Attribute-Handlers +This Perl module, when inherited by a package, allows that package's class to +define attribute handler subroutines for specific attributes. Variables and +subroutines subsequently defined in that package, or in packages derived from +that package may be given attributes with the same names as the attribute +handler subroutines, which will then be called in one of the compilation +phases (i.e. in a "BEGIN", "CHECK", "INIT", or "END" block). + +%if %{dual_life} || %{rebuild_from_scratch} +%package autodie +Summary: Replace functions with ones that succeed or die +License: GPL+ or Artistic +Epoch: 0 +Version: 2.29 +Requires: %perl_compat +BuildArch: noarch +Requires: perl(B) +Requires: perl(Fcntl) +Requires: perl(overload) +Requires: perl(POSIX) +%if %{defined perl_bootstrap} +%gendep_perl_autodie +%endif +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 bignum +Summary: Transparent big number support for Perl +License: GPL+ or Artistic +Epoch: 0 +Version: 0.51 +Requires: %perl_compat +Requires: perl(Carp) +# Math::BigInt::Lite is optional +Requires: perl(Math::BigRat) +Requires: perl(warnings) +BuildArch: noarch +%if %{defined perl_bootstrap} +%gendep_perl_bignum +%endif +Conflicts: perl < 4:5.22.0-348 + +%description bignum +This package attempts to make it easier to write scripts that use BigInts and +BigFloats in a transparent way. + +%package Carp +Summary: Alternative warn and die for modules +Epoch: 0 +# Real version 1.50 +Version: 1.50 +License: GPL+ or Artistic +Requires: %perl_compat +Provides: perl(Carp::Heavy) = %{version} +%if %{defined perl_bootstrap} +%gendep_perl_Carp +%endif +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 Compress-Raw-Bzip2 +Summary: Low-Level Interface to bzip2 compression library +License: GPL+ or Artistic +Epoch: 0 +Version: 2.084 +Requires: perl(Exporter), perl(File::Temp) +%if %{defined perl_bootstrap} +%gendep_perl_Compress_Raw_Bzip2 +%endif + +%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 +License: (GPL+ or Artistic) and zlib +Epoch: 0 +Version: 2.084 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Compress_Raw_Zlib +%endif + +%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 Config-Perl-V +Summary: Structured data retrieval of perl -V output +License: GPL+ or Artistic +Epoch: 0 +Version: 0.32 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Config_Perl_V +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-347 + +%description Config-Perl-V +The command "perl -V" will return you an excerpt from the %%Config::Config +hash combined with the output of "perl -V" that is not stored inside the hash, +but only available to the perl binary itself. This package provides Perl +module that will return you the output of "perl -V" in a structure. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package constant +Summary: Perl pragma to declare constants +License: GPL+ or Artistic +Epoch: 0 +Version: 1.33 +Requires: %perl_compat +Requires: perl(Carp) +%if %{defined perl_bootstrap} +%gendep_perl_constant +%endif +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 + +%if %{dual_life} || %{rebuild_from_scratch} +%package CPAN +Summary: Query, download and build perl modules from CPAN sites +License: GPL+ or Artistic +Epoch: 0 +Version: 2.22 +Requires: make +# Prefer Archive::Tar and Compress::Zlib over tar and gzip +Requires: perl(Archive::Tar) >= 1.50 +Requires: perl(base) +Requires: perl(Data::Dumper) +%if !%{defined perl_bootstrap} +Requires: perl(Devel::Size) +%endif +Requires: perl(ExtUtils::Manifest) +%if !%{defined perl_bootstrap} +Requires: perl(File::HomeDir) >= 0.65 +%endif +Requires: perl(File::Temp) >= 0.16 +Requires: perl(lib) +Requires: perl(Net::Config) +Requires: perl(Net::FTP) +Requires: perl(POSIX) +Requires: perl(Term::ReadLine) +%if !%{defined perl_bootstrap} +Requires: perl(URI) +Requires: perl(URI::Escape) +%endif +Requires: perl(User::pwent) +# Optional but higly recommended: +%if !%{defined perl_bootstrap} +Requires: perl(Archive::Zip) +Requires: perl(Compress::Bzip2) +Requires: perl(CPAN::Meta) >= 2.110350 +%endif +Requires: perl(Compress::Zlib) +Requires: perl(Digest::MD5) +# CPAN encourages Digest::SHA strongly because of integrity checks +Requires: perl(Digest::SHA) +Requires: perl(Dumpvalue) +Requires: perl(ExtUtils::CBuilder) +%if ! %{defined perl_bootstrap} +# Avoid circular deps local::lib -> Module::Install -> CPAN when bootstraping +# local::lib recommended by CPAN::FirstTime default choice, bug #1122498 +Requires: perl(local::lib) +%endif +Requires: perl(Module::Build) +%if ! %{defined perl_bootstrap} +Requires: perl(Text::Glob) +%endif +Requires: %perl_compat +Provides: cpan = %{version} +%if %{defined perl_bootstrap} +%gendep_perl_CPAN +%endif +BuildArch: noarch + +%description CPAN +The CPAN module automates or at least simplifies the make and install of +perl modules and extensions. It includes some primitive searching +capabilities and knows how to use LWP, HTTP::Tiny, Net::FTP and certain +external download clients to fetch distributions from the net. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package CPAN-Meta +Summary: Distribution metadata for a CPAN dist +Epoch: 0 +Version: 2.150010 +License: GPL+ or Artistic +Requires: %perl_compat +Requires: perl(CPAN::Meta::YAML) >= 0.011 +Requires: perl(Encode) +Requires: perl(JSON::PP) >= 2.27300 +%if %{defined perl_bootstrap} +%gendep_perl_CPAN_Meta +%endif +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 +# Real version 2.140 +Version: 2.140 +License: GPL+ or Artistic +Requires: %perl_compat +BuildArch: noarch +# CPAN-Meta-Requirements used to have six decimal places +%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\(CPAN::Meta::Requirements\\) +Provides: perl(CPAN::Meta::Requirements) = %{version}000 +%if %{defined perl_bootstrap} +%gendep_perl_CPAN_Meta_Requirements +%endif + +%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.018 +Epoch: 0 +Summary: Read and write a subset of YAML for CPAN Meta files +License: GPL+ or Artistic +BuildArch: noarch +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_CPAN_Meta_YAML +%endif + +%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 Data-Dumper +Summary: Stringify perl data structures, suitable for printing and eval +License: GPL+ or Artistic +Epoch: 0 +Version: 2.174 +Requires: %perl_compat +Requires: perl(Scalar::Util) +Requires: perl(XSLoader) +%if %{defined perl_bootstrap} +%gendep_perl_Data_Dumper +%endif + +%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 +License: GPL+ or Artistic +Epoch: 0 +Version: 1.843 +Requires: %perl_compat +Requires: perl(Fcntl) +Requires: perl(XSLoader) +%if %{defined perl_bootstrap} +%gendep_perl_DB_File +%endif +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 + +%package Devel-Peek +Summary: A data debugging tool for the XS programmer +License: GPL+ or Artistic +Epoch: 0 +Version: 1.28 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Devel_Peek +%endif +Conflicts: perl < 4:5.22.0-351 + +%description Devel-Peek +Devel::Peek contains functions which allows raw Perl data types to be +manipulated from a Perl script. This is used by those who do XS programming to +check that the data they are sending from C to Perl looks as they think it +should look. + +%if %{dual_life} || %{rebuild_from_scratch} +%package Devel-PPPort +Summary: Perl Pollution Portability header generator +License: GPL+ or Artistic +Epoch: 0 +Version: 3.52 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Devel_PPPort +%endif +Conflicts: perl < 4:5.20.1-310 + +%description Devel-PPPort +Perl's API has changed over time, gaining new features, new functions, +increasing its flexibility, and reducing the impact on the C name space +environment (reduced pollution). The header file written by this module, +typically ppport.h, attempts to bring some of the newer Perl API features +to older versions of Perl, so that you can worry less about keeping track +of old releases, but users can still reap the benefit. +%endif + +%package Devel-SelfStubber +Summary: Generate stubs for a SelfLoading module +License: GPL+ or Artistic +Epoch: 0 +Version: 1.06 +BuildArch: noarch +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Devel_SelfStubber +%endif +Conflicts: perl < 4:5.22.0-351 + +%description Devel-SelfStubber +Devel::SelfStubber prints the stubs you need to put in the module before the +__DATA__ token (or you can get it to print the entire module with stubs +correctly placed). The stubs ensure that if a method is called, it will get +loaded. They are needed specifically for inherited autoloaded methods. + +%if %{dual_life} || %{rebuild_from_scratch} +%package Digest +Summary: Modules that calculate message digests +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) +%if %{defined perl_bootstrap} +%gendep_perl_Digest +%endif + +%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 +License: (GPL+ or Artistic) and BSD +# Epoch bump for clean upgrade over old standalone package +Epoch: 0 +Version: 2.55 +Requires: %perl_compat +Requires: perl(XSLoader) +# Recommended +Requires: perl(Digest::base) >= 1.00 +%if %{defined perl_bootstrap} +%gendep_perl_Digest_MD5 +%endif + +%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 +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 6.02 +Requires: %perl_compat +Requires: perl(Carp) +# Recommended +Requires: perl(Digest::base) +%if %{defined perl_bootstrap} +%gendep_perl_Digest_SHA +%endif + +%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 +License: (GPL+ or Artistic) and Artistic 2.0 and UCD +Epoch: 4 +Version: 3.01 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Encode +%endif +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 encoding +Summary: Write your Perl script in non-ASCII or non-UTF-8 +License: GPL+ or Artistic +Epoch: 4 +Version: 2.22 +# Keeping this sub-package arch-specific because it installs files into +# arch-specific directories. +Requires: %perl_compat +Requires: perl(Carp) +# Config not needed on perl ≥ 5.008 +# Consider Filter::Util::Call as mandatory, bug #1165183, CPAN RT#100427 +Requires: perl(Filter::Util::Call) +# I18N::Langinfo is optional +# PerlIO::encoding is optional +Requires: perl(utf8) +%if %{defined perl_bootstrap} +%gendep_perl_encoding +%endif +Conflicts: perl-Encode < 2:2.60-314 + +%description encoding +With the encoding pragma, you can write your Perl script in any encoding you +like (so long as the Encode module supports it) and still enjoy Unicode +support. + +However, this encoding module is deprecated under perl 5.18. It uses +a mechanism provided by perl that is deprecated under 5.18 and higher, and may +be removed in a future version. + +The easiest and the best alternative is to write your script in UTF-8. + +%package Encode-devel +Summary: Character encodings in Perl +License: (GPL+ or Artistic) and UCD +Epoch: 4 +Version: 3.01 +Requires: %perl_compat +Requires: %{name}-Encode = %{epoch}:%{version}-%{release} +Recommends: perl-devel +%if %{defined perl_bootstrap} +%gendep_perl_Encode_devel +%endif +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 +License: GPL+ or Artistic +Epoch: 0 +Version: 1.04 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Env +%endif +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 + +%package Errno +Summary: System errno constants +License: GPL+ or Artistic +Epoch: 0 +Version: 1.30 +Requires: %perl_compat +# Errno.pm bakes in kernel version at build time and compares it against +# $Config{osvers} at run time. Match exact interpreter build. Bug #1393421. +Requires: perl-libs%{?_isa} = %{perl_epoch}:%{perl_version}-%{release} +Requires: perl(Carp) +%if %{defined perl_bootstrap} +%gendep_perl_Errno +%endif +Conflicts: perl < 4:5.22.0-351 + +%description Errno +"Errno" defines and conditionally exports all the error constants defined in +your system "errno.h" include file. It has a single export tag, ":POSIX", +which will export all POSIX defined error numbers. + +%if %{dual_life} || %{rebuild_from_scratch} +%package experimental +Summary: Experimental features made easy +License: GPL+ or Artistic +Epoch: 0 +Version: 0.020 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_experimental +%endif +BuildArch: noarch +Conflicts: perl < 4:5.20.0-303 + +%description experimental +This pragma provides an easy and convenient way to enable or disable +experimental features. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Exporter +Summary: Implements default import method for modules +License: GPL+ or Artistic +Epoch: 0 +Version: 5.73 +Requires: %perl_compat +Requires: perl(Carp) >= 1.05 +%if %{defined perl_bootstrap} +%gendep_perl_Exporter +%endif +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 + +%if %{dual_life} || %{rebuild_from_scratch} +%package ExtUtils-CBuilder +Summary: Compile and link C code for Perl modules +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.280231 +BuildArch: noarch +# C and C++ compilers are highly recommended because compiling code is the +# purpose of ExtUtils::CBuilder, bug #1547165 +Requires: gcc +Requires: gcc-c++ +Requires: perl-devel +Requires: %perl_compat +Requires: perl(DynaLoader) +Requires: perl(ExtUtils::Mksymlists) +Requires: perl(File::Spec) >= 3.13 +Requires: perl(Perl::OSType) >= 1 +%if %{defined perl_bootstrap} +%gendep_perl_ExtUtils_CBuilder +%endif + +%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. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package ExtUtils-Command +Summary: Perl routines to replace common UNIX commands in Makefiles +License: GPL+ or Artistic +Epoch: 1 +Version: 7.34 +BuildArch: noarch +Requires: %perl_compat +Conflicts: perl < 4:5.20.1-312 +Requires: perl(File::Find) +%if %{defined perl_bootstrap} +%gendep_perl_ExtUtils_Command +%endif + +%description ExtUtils-Command +This Perl module is used to replace common UNIX commands. In all cases the +functions work with @ARGV rather than taking arguments. This makes them +easier to deal with in Makefiles. +%endif + +%package ExtUtils-Embed +Summary: Utilities for embedding Perl in C/C++ applications +License: GPL+ or Artistic +Epoch: 0 +Version: 1.35 +Requires: perl-devel +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_ExtUtils_Embed +%endif +BuildArch: noarch + +%description ExtUtils-Embed +Utilities for embedding Perl in C/C++ applications. + + +%if %{dual_life} || %{rebuild_from_scratch} +%package ExtUtils-Install +Summary: Install files from here to there +License: GPL+ or Artistic +Epoch: 0 +Version: 2.14 +BuildArch: noarch +Requires: %perl_compat +Requires: perl(Data::Dumper) +%if %{defined perl_bootstrap} +%gendep_perl_ExtUtils_Install +%endif + +%description ExtUtils-Install +Handles the installing and uninstalling of perl modules, scripts, man +pages, etc. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package ExtUtils-MakeMaker +Summary: Create a module Makefile +License: GPL+ or Artistic +Epoch: 2 +Version: 7.34 +# These dependencies are weak in order to relieve building noarch +# packages from perl-devel and gcc. See bug #1547165. +# If an XS module is built, the generated Makefile executes gcc. +Recommends: gcc +# If an XS module is built, code generated from XS will be compiled and it +# includes Perl header files. +Recommends: perl-devel +Requires: %perl_compat +Requires: perl(Data::Dumper) +Requires: perl(DynaLoader) +Requires: perl(ExtUtils::Command) +Requires: perl(ExtUtils::Install) +Requires: perl(ExtUtils::Manifest) +Requires: perl(File::Find) +Requires: perl(Getopt::Long) +# Optional Pod::Man is needed for generating manual pages from POD +Requires: perl(Pod::Man) +Requires: perl(POSIX) +Requires: perl(Test::Harness) +Requires: perl(version) +# If an XS module is compiled, xsubpp(1) is needed +Requires: perl-ExtUtils-ParseXS +%if %{defined perl_bootstrap} +%gendep_perl_ExtUtils_MakeMaker +%endif +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 +License: GPL+ or Artistic +Epoch: 1 +Version: 1.72 +Requires: %perl_compat +Requires: perl(File::Path) +%if %{defined perl_bootstrap} +%gendep_perl_ExtUtils_Manifest +%endif +BuildArch: noarch + +%description ExtUtils-Manifest +%{summary}. +%endif + +%package ExtUtils-Miniperl +Summary: Write the C code for perlmain.c +License: GPL+ or Artistic +Epoch: 0 +Version: 1.09 +Requires: perl-devel +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_ExtUtils_Miniperl +%endif +BuildArch: noarch + +%description ExtUtils-Miniperl +writemain() takes an argument list of directories containing archive libraries +that relate to perl modules and should be linked into a new perl binary. It +writes a corresponding perlmain.c file that is a plain C file containing all +the bootstrap code to make the If the first argument to writemain() is a +reference to a scalar it is used as the file name to open for output. Any other +reference is used as the file handle to write to. Otherwise output defaults to +STDOUT. + +%if %{dual_life} || %{rebuild_from_scratch} +%package ExtUtils-MM-Utils +Summary: ExtUtils::MM methods without dependency on ExtUtils::MakeMaker +License: GPL+ or Artistic +Epoch: 1 +# Real version 7.11 +# Dual-life ExtUtils-MakeMaker generate it with its version +Version: 7.34 +BuildArch: noarch +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_ExtUtils_MM_Utils +%endif + +%description ExtUtils-MM-Utils +This is a collection of ExtUtils::MM subroutines that are used by many +other modules but that do not need full-featured ExtUtils::MakeMaker. The +issue with ExtUtils::MakeMaker is it pulls in Perl header files and that +is an overkill for small subroutines. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package ExtUtils-ParseXS +Summary: Module and a script for converting Perl XS code into C code +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 3.40 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_ExtUtils_ParseXS +%endif +BuildArch: noarch + +%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-Fetch +Summary: Generic file fetching mechanism +License: GPL+ or Artistic +Epoch: 0 +Version: 0.56 +Requires: perl(IPC::Cmd) >= 0.36 +Requires: perl(Module::Load::Conditional) >= 0.04 +Requires: perl(Params::Check) >= 0.07 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_File_Fetch +%endif +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 +License: GPL+ or Artistic +Epoch: 0 +Version: 2.16 +Requires: %perl_compat +Requires: perl(Carp) +%if %{defined perl_bootstrap} +%gendep_perl_File_Path +%endif +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 +License: GPL+ or Artistic +Epoch: 1 +# Normalized version +Version: 0.230.900 +Requires: %perl_compat +BuildArch: noarch +Requires: perl(File::Path) >= 2.06 +Requires: perl(POSIX) +%if %{defined perl_bootstrap} +%gendep_perl_File_Temp +%endif +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 +License: GPL+ or Artistic +Epoch: 2 +Version: 1.59 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Filter +%endif + +%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 Filter-Simple +Summary: Simplified Perl source filtering +License: GPL+ or Artistic +Epoch: 0 +Version: 0.95 +BuildArch: noarch +Requires: %perl_compat +Conflicts: perl < 4:5.20.1-312 +Requires: perl(Text::Balanced) >= 1.97 +Requires: perl(warnings) +%if %{defined perl_bootstrap} +%gendep_perl_Filter_Simple +%endif + +%description Filter-Simple +The Filter::Simple Perl module provides a simplified interface to +Filter::Util::Call; one that is sufficient for most common cases. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Getopt-Long +Summary: Extended processing of command line options +License: GPLv2+ or Artistic +Epoch: 1 +Version: 2.50 +Requires: %perl_compat +Requires: perl(overload) +Requires: perl(Text::ParseWords) +# Recommended: +Requires: perl(Pod::Usage) >= 1.14 +%if %{defined perl_bootstrap} +%gendep_perl_Getopt_Long +%endif +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 + +%package IO +Summary: Perl input/output modules +License: GPL+ or Artistic +Epoch: 0 +Version: 1.40 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_IO +%endif +Conflicts: perl < 4:5.22.0-351 + +%description IO +This is a collection of Perl input/output modules. + +%if %{dual_life} || %{rebuild_from_scratch} +%package IO-Compress +Summary: IO::Compress wrapper for modules +License: GPL+ or Artistic +Epoch: 0 +Version: 2.084 +Requires: %perl_compat +Obsoletes: perl-Compress-Zlib <= 2.020 +Provides: perl(IO::Uncompress::Bunzip2) +%if %{defined perl_bootstrap} +%gendep_perl_IO_Compress +%endif +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 + +%if %{dual_life} || %{rebuild_from_scratch} +%package IO-Socket-IP +Summary: Drop-in replacement for IO::Socket::INET supporting both IPv4 and IPv6 +License: GPL+ or Artistic +Epoch: 0 +Version: 0.39 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_IO_Socket_IP +%endif +BuildArch: noarch +Conflicts: perl < 4:5.20.0-303 + +%description IO-Socket-IP +This module provides a protocol-independent way to use IPv4 and IPv6 +sockets, as a drop-in replacement for IO::Socket::INET. Most constructor +arguments and methods are provided in a backward-compatible way. +%endif + +%package IO-Zlib +Summary: Perl IO:: style interface to Compress::Zlib +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 +%if %{defined perl_bootstrap} +%gendep_perl_IO_Zlib +%endif +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 +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 2 +Version: 1.02 +Requires: perl(ExtUtils::MM::Utils) +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_IPC_Cmd +%endif +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 IPC-SysV +Summary: Object interface to System V IPC +License: GPL+ or Artistic +Epoch: 0 +Version: 2.07 +Requires: %perl_compat +Requires: perl(DynaLoader) +%if %{defined perl_bootstrap} +%gendep_perl_IPC_SysV +%endif +Conflicts: perl < 4:5.22.0-351 + +%description IPC-SysV +This is an object interface for System V messages, semaphores, and +inter-process calls. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package HTTP-Tiny +Summary: A small, simple, correct HTTP/1.1 client +License: GPL+ or Artistic +Epoch: 0 +Version: 0.076 +Requires: perl(bytes) +Requires: perl(Carp) +Requires: perl(IO::Socket) +Requires: perl(Time::Local) +%if %{defined perl_bootstrap} +%gendep_perl_HTTP_Tiny +%endif +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: 1 +Version: 4.02 +License: GPL+ or Artistic +BuildArch: noarch +Requires: %perl_compat +Requires: perl(Data::Dumper) +Requires: perl(Encode) +Requires: perl(Math::BigFloat) +Requires: perl(Math::BigInt) +Requires: perl(Scalar::Util) +Requires: perl(subs) +%if %{defined perl_bootstrap} +%gendep_perl_JSON_PP +%endif +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 libnet +Summary: Perl clients for various network protocols +License: (GPL+ or Artistic) and Artistic +Epoch: 0 +Version: 3.11 +Requires: %perl_compat +Requires: perl(File::Basename) +Requires: perl(IO::Socket) >= 1.05 +# Prefer IO::Socket::IP over IO::Socket::INET6 and IO::Socket::INET +Requires: perl(IO::Socket::IP) >= 0.20 +Requires: perl(POSIX) +Requires: perl(Socket) >= 2.016 +Requires: perl(utf8) +%if %{defined perl_bootstrap} +%gendep_perl_libnet +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-347 + +%description libnet +This is a collection of Perl modules which provides a simple and +consistent programming interface (API) to the client side of various +protocols used in the internet community. +%endif + +%package libnetcfg +Summary: Configure libnet +License: GPL+ or Artistic +Epoch: %perl_epoch +Version: %perl_version +# Net::Config is optional +BuildArch: noarch +%if %{defined perl_bootstrap} +%gendep_perl_libnetcfg +%endif +Conflicts: perl-devel < 4:5.22.0-347 + +%description libnetcfg +The libnetcfg utility can be used to configure the libnet. + +%if %{dual_life} || %{rebuild_from_scratch} +%package Locale-Maketext +Summary: Framework for localization +License: GPL+ or Artistic +Epoch: 0 +Version: 1.29 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Locale_Maketext +%endif +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 +License: MIT +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.21 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Locale_Maketext_Simple +%endif +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 Math-BigInt +Summary: Arbitrary-size integer and float mathematics +License: GPL+ or Artistic +Epoch: 1 +# Real version 1.999816 +Version: 1.9998.16 +Requires: %perl_compat +Requires: perl(Carp) +# File::Spec not used on recent perl +%if %{defined perl_bootstrap} +%gendep_perl_Math_BigInt +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-347 + +# Do not export unversioned module +%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\(Math::BigInt\\)\\s*$ + +%description Math-BigInt +This provides Perl modules for arbitrary-size integer and float mathematics. + +%package Math-BigInt-FastCalc +Summary: Math::BigInt::Calc XS implementation +License: GPL+ or Artistic +Epoch: 0 +# Version normalized to dot format +# Real version 0.5008 +Version: 0.500.800 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Math_BigInt_FastCalc +%endif +Conflicts: perl < 4:5.22.0-348 + +%description Math-BigInt-FastCalc +This package provides support for faster big integer calculations. + +%package Math-BigRat +Summary: Arbitrary big rational numbers +License: GPL+ or Artistic +Epoch: 0 +# Real version 0.2614 +Version: 0.2614 +Requires: %perl_compat +Requires: perl(Math::BigInt) +%if %{defined perl_bootstrap} +%gendep_perl_Math_BigRat +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-348 + +%description Math-BigRat +Math::BigRat complements Math::BigInt and Math::BigFloat by providing support +for arbitrary big rational numbers. +%endif + +%package Math-Complex +Summary: Complex numbers and trigonometric functions +License: GPL+ or Artistic +Epoch: 0 +Version: 1.59 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Math_Complex +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-348 + +%description Math-Complex +This package lets you create and manipulate complex numbers. By default, Perl +limits itself to real numbers, but an extra "use" statement brings full +complex support, along with a full set of mathematical functions typically +associated with and/or extended to complex numbers. + +%package Memoize +Summary: Transparently speed up functions by caching return values +License: GPL+ or Artistic +Epoch: 0 +Version: 1.03 +Requires: %perl_compat +# Keep Time::HiRes optional +%if %{defined perl_bootstrap} +%gendep_perl_Memoize +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-350 + +%description Memoize +Memoizing a function makes it faster by trading space for time. It does +this by caching the return values of the function in a table. If you call +the function again with the same arguments, memoize jumps in and gives +you the value out of the table, instead of letting the function compute +the value all over again. + +%if %{dual_life} || %{rebuild_from_scratch} +%package MIME-Base64 +Summary: Encoding and decoding of Base64 and quoted-printable strings +# cpan/MIME-Base64/Base64.xs: (GPL+ or Artistic) and MIT (Bellcore's part) +# Other files: GPL+ or Artistic +License: (GPL+ or Artistic) and MIT +Epoch: 0 +Version: 3.15 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_MIME_Base64 +%endif +Conflicts: perl < 4:5.22.0-347 + +%description MIME-Base64 +This package contains a Base64 encoder/decoder and a quoted-printable +encoder/decoder. These encoding methods are specified in RFC 2045 - MIME +(Multipurpose Internet Mail Extensions). +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Module-CoreList +Summary: What modules are shipped with versions of perl +License: GPL+ or Artistic +Epoch: 1 +Version: 5.20191110 +Requires: %perl_compat +Requires: perl(List::Util) +Requires: perl(version) >= 0.88 +%if %{defined perl_bootstrap} +%gendep_perl_Module_CoreList +%endif +BuildArch: noarch + +%description Module-CoreList +Module::CoreList provides information on which core and dual-life modules +are shipped with each version of perl. + + +%package Module-CoreList-tools +Summary: Tool for listing modules shipped with perl +License: GPL+ or Artistic +Epoch: 1 +Version: 5.20191110 +Requires: %perl_compat +Requires: perl(feature) +Requires: perl(version) >= 0.88 +Requires: perl-Module-CoreList = %{epoch}:%{version}-%{release} +%if %{defined perl_bootstrap} +%gendep_perl_Module_CoreList_tools +%endif +# The files were distributed with perl.spec's subpackage +# perl-Module-CoreList <= 1:5.020001-309 +Conflicts: perl-Module-CoreList < 1:5.020001-310 +BuildArch: noarch + +%description Module-CoreList-tools +This package provides a corelist(1) tool which can be used to query what +modules were shipped with given perl version. +%endif + + +%if %{dual_life} || %{rebuild_from_scratch} +%package Module-Load +Summary: Runtime require of both modules and files +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.34 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Module_Load +%endif +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 +License: GPL+ or Artistic +Epoch: 0 +Version: 0.68 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Module_Load_Conditional +%endif +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 +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.08 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Module_Loaded +%endif +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.000036 +License: GPL+ or Artistic +BuildArch: noarch +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Module_Metadata +%endif + +%description Module-Metadata +Gather package and POD information from perl module files +%endif + +%package Net-Ping +Summary: Check a remote host for reachability +License: GPL+ or Artistic +Epoch: 0 +Version: 2.71 +Requires: %perl_compat +# Keep Net::Ping::External optional +%if %{defined perl_bootstrap} +%gendep_perl_Net_Ping +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-350 + +%description Net-Ping +Net::Ping module contains methods to test the reachability of remote hosts on +a network. + +%package open +Summary: Perl pragma to set default PerlIO layers for input and output +License: GPL+ or Artistic +Epoch: 0 +Version: 1.11 +Requires: %perl_compat +Requires: perl(Carp) +Requires: perl(Encode) +Requires: perl(encoding) +%if %{defined perl_bootstrap} +%gendep_perl_open +%endif +Conflicts: perl < 4:5.20.2-326 +BuildArch: noarch + +%description open +The "open" pragma serves as one of the interfaces to declare default "layers" +(also known as "disciplines") for all I/O. + +%if %{dual_life} || %{rebuild_from_scratch} +%package parent +Summary: Establish an ISA relationship with base classes at compile time +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.237 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_parent +%endif +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 Params-Check +Summary: Generic input parsing/checking mechanism +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 0.38 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Params_Check +%endif +BuildArch: noarch + +%description Params-Check +Params::Check is a generic input parsing/checking mechanism. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package PathTools +Summary: PathTools Perl module (Cwd, File::Spec) +License: (GPL+ or Artistic) and BSD +Epoch: 0 +Version: 3.78 +Requires: %perl_compat +Requires: perl(Carp) +%if %{defined perl_bootstrap} +%gendep_perl_PathTools +%endif + +%description PathTools +PathTools Perl module (Cwd, File::Spec). +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package perlfaq +Summary: Frequently asked questions about Perl +# Code examples are Public Domain +License: (GPL+ or Artistic) and Public Domain +Epoch: 0 +Version: 5.20190126 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_perlfaq +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-347 + +%description perlfaq +The perlfaq comprises several documents that answer the most commonly asked +questions about Perl and Perl programming. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package PerlIO-via-QuotedPrint +Summary: PerlIO layer for quoted-printable strings +License: GPL+ or Artistic +Epoch: 0 +Version: 0.08 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_PerlIO_via_QuotedPrint +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-347 + +%description PerlIO-via-QuotedPrint +This module implements a PerlIO layer that works on files encoded in the +quoted-printable format. It will decode from quoted-printable while +reading from a handle, and it will encode as quoted-printable while +writing to a handle. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Perl-OSType +Summary: Map Perl operating system names to generic types +Version: 1.010 +Epoch: 0 +License: GPL+ or Artistic +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Perl_OSType +%endif +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 +Epoch: 4 +Version: 1.73 +License: GPL+ or Artistic +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Pod_Checker +%endif +BuildArch: noarch + +%description Pod-Checker +Module and tools to verify POD documentation contents for compliance with the +Plain Old Documentation format specifications. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Pod-Escapes +Summary: Resolve POD escape sequences +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 1.07 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Pod_Escapes +%endif +BuildArch: noarch + +%description Pod-Escapes +This module provides things that are useful in decoding Pod E<...> sequences. +%endif + +%package Pod-Html +Summary: Convert POD files to HTML +License: GPL+ or Artistic +Epoch: 0 +Version: 1.24 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Pod_Html +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-350 + +%description Pod-Html +This package converts files from POD format (see perlpod) to HTML format. It +can automatically generate indexes and cross-references, and it keeps a cache +of things it knows how to cross-reference. + +%if %{dual_life} || %{rebuild_from_scratch} +%package Pod-Parser +Summary: Basic perl modules for handling Plain Old Documentation (POD) +License: GPL+ or Artistic +Epoch: 0 +Version: 1.63 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Pod_Parser +%endif +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 +License: GPL+ or Artistic +Epoch: 0 +# Real version 3.2801 +Version: 3.28.01 +%if %{with perl_enables_groff} +# Pod::Perldoc::ToMan executes roff +Requires: groff-base +%endif +Requires: %perl_compat +Requires: perl(File::Temp) >= 0.22 +Requires: perl(HTTP::Tiny) +Requires: perl(IO::Handle) +Requires: perl(IPC::Open3) +# POD2::Base is optional +# Pod::Checker is not needed if Pod::Simple::Checker is available +Requires: perl(Pod::Simple::Checker) +Requires: perl(Pod::Simple::RTF) >= 3.16 +Requires: perl(Pod::Simple::XMLOutStream) >= 3.16 +Requires: perl(Text::ParseWords) +# Tk is optional +Requires: perl(Symbol) +%if %{defined perl_bootstrap} +%gendep_perl_Pod_Perldoc +%endif +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 +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 1 +Version: 3.35 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Pod_Simple +%endif +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 +Epoch: 4 +Version: 1.69 +Requires: %perl_compat +# Pod::Usage executes perldoc from perl-Pod-Perldoc by default +Requires: perl-Pod-Perldoc +Requires: perl(Pod::Text) +%if %{defined perl_bootstrap} +%gendep_perl_Pod_Usage +%endif +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 +License: (GPL+ or Artistic) and MIT +Epoch: 1 +Version: 4.11 +BuildArch: noarch +Requires: %perl_compat +Requires: perl(File::Spec) >= 0.8 +Requires: perl(Pod::Simple) >= 3.06 +%if %{defined perl_bootstrap} +%gendep_perl_podlators +%endif +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 +License: GPL+ or Artistic +Epoch: 3 +Version: 1.50 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Scalar_List_Utils +%endif + +%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 + +%package SelfLoader +Summary: Load functions only on demand +License: GPL+ or Artistic +Epoch: 0 +Version: 1.25 +BuildArch: noarch +Requires: %perl_compat +Requires: perl(Carp) +%if %{defined perl_bootstrap} +%gendep_perl_SelfLoader +%endif +Conflicts: perl < 4:5.22.0-351 + +%description SelfLoader +This Perl module tells its users that functions in a package are to be +autoloaded from after the "__DATA__" token. See also "Autoloading" in +perlsub. + +%if %{dual_life} || %{rebuild_from_scratch} +%package Socket +Summary: C socket.h defines and structure manipulators +License: GPL+ or Artistic +Epoch: 4 +Version: 2.027 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Socket +%endif + +%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 Storable +Summary: Persistence for Perl data structures +License: GPL+ or Artistic +Epoch: 1 +Version: 3.15 +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) +%if %{defined perl_bootstrap} +%gendep_perl_Storable +%endif +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 +License: GPL+ or Artistic +Epoch: 0 +Version: 0.35 +Requires: %perl_compat +Requires: perl(XSLoader) +%if %{defined perl_bootstrap} +%gendep_perl_Sys_Syslog +%endif +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-ANSIColor +Summary: Color screen output using ANSI escape sequences +License: GPL+ or Artistic +Epoch: 0 +Version: 4.06 +Requires: %perl_compat +Requires: perl(Carp) +%if %{defined perl_bootstrap} +%gendep_perl_Term_ANSIColor +%endif +BuildArch: noarch +Conflicts: perl < 4:5.18.2-302 + +%description Term-ANSIColor +This module has two interfaces, one through color() and colored() and the +other through constants. It also offers the utility functions uncolor(), +colorstrip(), colorvalid(), and coloralias(), which have to be explicitly +imported to be used. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Term-Cap +Summary: Perl termcap interface +License: GPL+ or Artistic +Epoch: 0 +Version: 1.17 +Requires: %perl_compat +# ncurses for infocmp tool +Requires: ncurses +Requires: perl(Carp) +%if %{defined perl_bootstrap} +%gendep_perl_Term_Cap +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-347 + +%description Term-Cap +These are low-level functions to extract and use capabilities from a terminal +capability (termcap) database. +%endif + +%package Test +Summary: Simple framework for writing test scripts +License: GPL+ or Artistic +Epoch: 0 +Version: 1.31 +Requires: %perl_compat +# Algorithm::Diff 1.15 is optional +Requires: perl(File::Temp) +%if %{defined perl_bootstrap} +%gendep_perl_Test +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-351 + +%description Test +The Test Perl module simplifies the task of writing test files for Perl modules, +such that their output is in the format that Test::Harness expects to see. + +%if %{dual_life} || %{rebuild_from_scratch} +%package Test-Harness +Summary: Run Perl standard test scripts with statistics +License: GPL+ or Artistic +Epoch: 1 +Version: 3.42 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Test_Harness +%endif +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 +License: (GPL+ or Artistic) and CC0 and Public Domain +Epoch: 3 +Version: 1.302162 +Requires: %perl_compat +Requires: perl(Data::Dumper) +%if %{defined perl_bootstrap} +%gendep_perl_Test_Simple +%endif +BuildArch: noarch + +%description Test-Simple +Basic utilities for writing tests. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Text-Balanced +Summary: Extract delimited text sequences from strings +License: GPL+ or Artistic +Epoch: 0 +Version: 2.03 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Text_Balanced +%endif +BuildArch: noarch +Conflicts: perl < 4:5.22.0-347 + +%description Text-Balanced +These Perl subroutines may be used to extract a delimited substring, possibly +after skipping a specified prefix string. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Text-ParseWords +Summary: Parse text into an array of tokens or array of arrays +License: GPL+ or Artistic +Epoch: 0 +Version: 3.30 +Requires: %perl_compat +Requires: perl(Carp) +%if %{defined perl_bootstrap} +%gendep_perl_Text_ParseWords +%endif +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-Tabs+Wrap +Summary: Expand tabs and do simple line wrapping +License: TTWL +Epoch: 0 +Version: 2013.0523 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Text_Tabs_Wrap +%endif +BuildArch: noarch +Conflicts: perl < 4:5.20.2-325 + +%description Text-Tabs+Wrap +Text::Tabs performs the same job that the UNIX expand(1) and unexpand(1) +commands do: adding or removing tabs from a document. + +Text::Wrap::wrap() will reformat lines into paragraphs. All it does is break +up long lines, it will not join short lines together. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Thread-Queue +Summary: Thread-safe queues +License: GPL+ or Artistic +Epoch: 0 +Version: 3.13 +Requires: %perl_compat +Requires: perl(Carp) +%if %{defined perl_bootstrap} +%gendep_perl_Thread_Queue +%endif +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 +License: GPL+ or Artistic +Epoch: 0 +Version: 1.9760 +Requires: %perl_compat +Requires: perl(Carp) +%if %{defined perl_bootstrap} +%gendep_perl_Time_HiRes +%endif +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 +License: GPL+ or Artistic +Epoch: 2 +# Real version 1.28 +Version: 1.280 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Time_Local +%endif +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 +License: (GPL+ or Artistic) and BSD +Epoch: 0 +Version: 1.33 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_Time_Piece +%endif + +%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 threads +Summary: Perl interpreter-based threads +License: GPL+ or Artistic +Epoch: 1 +Version: 2.22 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_threads +%endif + +%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 +License: GPL+ or Artistic +Epoch: 0 +Version: 1.60 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_threads_shared +%endif + +%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 Unicode-Collate +Summary: Unicode Collation Algorithm +License: (GPL+ or Artistic) and Unicode +Epoch: 0 +Version: 1.27 +Requires: %perl_compat +Requires: perl(Unicode::Normalize) +%if %{defined perl_bootstrap} +%gendep_perl_Unicode_Collate +%endif +Conflicts: perl < 4:5.22.0-347 + +%description Unicode-Collate +This package is Perl implementation of Unicode Technical Standard #10 (Unicode +Collation Algorithm). +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package Unicode-Normalize +Summary: Unicode Normalization Forms +License: GPL+ or Artistic +Epoch: 0 +Version: 1.26 +Requires: %perl_compat +# unicore/CombiningClass.pl and unicore/Decomposition.pl from perl, perl is +# auto-detected. +%if %{defined perl_bootstrap} +%gendep_perl_Unicode_Normalize +%endif +Conflicts: perl < 4:5.22.0-347 + +%description Unicode-Normalize +This package provides Perl functions that can convert strings into various +Unicode normalization forms as defined in Unicode Standard Annex #15. +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%package version +Summary: Perl extension for Version Objects +License: GPL+ or Artistic +# Epoch bump for clean upgrade over old standalone package +Epoch: 7 +# real version 0.9924 +Version: 0.99.24 +Requires: %perl_compat +%if %{defined perl_bootstrap} +%gendep_perl_version +%endif +BuildArch: noarch + +%description version +Perl extension for Version Objects +%endif + +%prep +%setup -q -n perl-%{perl_version} +%patch1 -p1 +%ifarch %{multilib_64_archs} +%patch2 -p1 +%endif +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch25 -p1 +%patch27 -p1 +%patch28 -p1 +%patch30 -p1 +%patch31 -p1 +%patch32 -p1 +%patch37 -p1 +%patch38 -p1 +%patch39 -p1 +%patch40 -p1 +%patch41 -p1 +%patch42 -p1 +%patch43 -p1 +%patch44 -p1 +%patch45 -p1 +%patch46 -p1 +%patch48 -p1 +%patch49 -p1 +%patch50 -p1 +%patch51 -p1 +%patch52 -p1 +%patch53 -p1 +%patch54 -p1 +%patch56 -p1 +# PATCH-perl-134329-Use-after-free-in-regcomp.c.patch is a binary patch +git init-db . +git config --replace-all gc.auto 0 # Prevent from racing with "rm -rf .git" +git config --replace-all user.email '' +git config --replace-all user.name 'Nobody' +git add . +git commit --message 'Import' +git am < %{PATCH58} +rm -rf .git # Perl tests examine a git repository +%patch59 -p1 +%patch61 -p1 +%patch62 -p1 +%patch63 -p1 +%patch64 -p1 +%patch65 -p1 +%patch66 -p1 +%patch67 -p1 +%patch68 -p1 +%patch69 -p1 +%patch70 -p1 +%patch71 -p1 +%patch72 -p1 +%patch73 -p1 +%patch74 -p1 +%patch75 -p1 +%patch76 -p1 +%patch77 -p1 +%patch200 -p1 +%patch201 -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 Patch2: support for libdir64' \ +%endif + 'Fedora Patch3: use libresolv instead of libbind' \ + 'Fedora Patch4: USE_MM_LD_RUN_PATH' \ + 'Fedora Patch5: Provide MM::maybe_command independently (bug #1129443)' \ + 'Fedora Patch6: Dont run one io test due to random builder failures' \ + 'Fedora Patch8: Define SONAME for libperl.so' \ + 'Fedora Patch9: Install libperl.so to -Dshrpdir value' \ + 'Fedora Patch10: Make *DBM_File desctructors thread-safe (RT#61912)' \ + 'Fedora Patch11: Replace EU::MakeMaker dependency with EU::MM::Utils in IPC::Cmd (bug #1129443)' \ + 'Fedora Patch12: Link XS modules to pthread library to fix linking with -z defs' \ + 'Fedora Patch13: Pass the correct CFLAGS to dtrace' \ + 'Fedora Patch15: Do not panic when outputting a warning (RT#134059)' \ + 'Fedora Patch16: Fix memory handling when parsing string literals' \ + 'Fedora Patch17: Fix an undefined behavior in shifting IV variables' \ + 'Fedora Patch18: Fix an undefined behavior in shifting IV variables' \ + 'Fedora Patch19: Fix an undefined behavior in shifting IV variables' \ + 'Fedora Patch20: Fix stacking file test operators (CPAN RT#127073)' \ + 'Fedora Patch21: Fix a crash in SIGALARM handler when waiting on a child process to be closed (RT#122112)' \ + 'Fedora Patch22: Fix a crash in SIGALARM handler when waiting on a child process to be closed (RT#122112)' \ + 'Fedora Patch23: Fix a crash in SIGALARM handler when waiting on a child process to be closed (RT#122112)' \ + 'Fedora Patch25: Fix a crash with a negative precision in sprintf function (RT#134008)' \ + 'Fedora Patch27: Prevent from wrapping a width in a numeric format string (RT#133913)' \ + 'Fedora Patch28: Fix subroutine protypes to track reference aliases (RT#134072)' \ + 'Fedora Patch30: Fix changing packet destination sent from a UDP IO::Socket object (RT#133936)' \ + 'Fedora Patch31: Fix changing packet destination sent from a UDP IO::Socket object (RT#133936)' \ + 'Fedora Patch32: Fix changing packet destination sent from a UDP IO::Socket object (RT#133936)' \ + 'Fedora Patch37: Fix %%{^CAPTURE_ALL} to be an alias for %%- variable (RT#131867)' \ + 'Fedora Patch38: Fix %%{^CAPTURE} value when used after @{^CAPTURE} (RT#134193)' \ + 'Fedora Patch39: Fix %%{^CAPTURE} value when used after @{^CAPTURE} (RT#134193)' \ + 'Fedora Patch40: Fix a test for a crash in SIGALARM handler when waiting on a child process to be closed (RT#122112)' \ + 'Fedora Patch41: Fix a crash on an uninitialized warning when processing a multideref node (RT#134275)' \ + 'Fedora Patch42: Preserve append mode when opening anonymous files (RT#134221)' \ + 'Fedora Patch43: Preserve append mode when opening anonymous files (RT#134221)' \ + 'Fedora Patch44: Preserve append mode when opening anonymous files (RT#134221)' \ + 'Fedora Patch45: Fix propagating non-string variables in an exception value (RT#134291)' \ + 'Fedora Patch46: Include trailing zero in scalars holding trie data (RT#134207)' \ + 'Fedora Patch48: Fix a use after free in debugging output of a collation' \ + 'Fedora Patch49: Fix a NULL pointer dereference in PerlIOVia_pushed()' \ + 'Fedora Patch50: Fix a crash when setting $@ on unwinding a call stack (RT#134266)' \ + 'Fedora Patch51: Fix parsing a denominator when parsing a Unicode property name' \ + 'Fedora Patch52: Fix a documentation about a future API change' \ + 'Fedora Patch53: Do not run File-Find tests in parallel' \ + 'Fedora Patch54: Fix parsing a Unicode property name when compiling a regular expression' \ + 'Fedora Patch56: Do not interpret 0x and 0b prefixes when numifying strings (RT#134230)' \ + 'Fedora Patch58: Fix a buffer overflow when compiling a regular expression with many branches (RT#134329)' \ + 'Fedora Patch59: Correct a misspelling in perlrebackslash documentation (RT#134395)' \ + 'Fedora Patch61: Fix a detection for futimes (RT#134432)' \ + 'Fedora Patch62: Fix a detection for futimes (RT#134432)' \ + 'Fedora Patch63: Fix overloading for binary and octal floats (RT#125557)' \ + 'Fedora Patch64: Fix handling undefined array members in Dumpvalue (RT#134441)' \ + 'Fedora Patch65: Fix taint mode documentation regarding @INC' \ + 'Fedora Patch66: Fix taint mode documentation regarding @INC' \ + 'Fedora Patch67: Fix handling a layer argument in Tie::StdHandle::BINMODE() (RT#132475)' \ + 'Fedora Patch68: Fix an unintended upgrade to UTF-8 in the middle of a transliteration' \ + 'Fedora Patch69: Fix an unintended upgrade to UTF-8 in the middle of a transliteration' \ + 'Fedora Patch70: Fix a race in File::stat() tests (GH#17234)' \ + 'Fedora Patch71: Fix a buffer overread when parsing a number (GH#17279)' \ + 'Fedora Patch72: Fix GCC 10 version detection (GH#17295)' \ + 'Fedora Patch73: Fix a memory leak when compiling a regular expression with a non-word class (GH#17218)' \ + 'Fedora Patch74: Fix CVE-2020-10543 (an integer overflow from nested regex quantifiers)' \ + 'Fedora Patch75: Fix CVE-2020-10878 (a corruption of a state of a compiled regular expression due to an integer overflow)' \ + 'Fedora Patch76: Fix CVE-2020-10878 (a corruption of a state of a compiled regular expression due to an integer overflow)' \ + 'Fedora Patch77: Fix CVE-2020-12723 (a corruption of a state of a compiled regular expression due to recursive calls)' \ + 'Fedora Patch200: Link XS modules to libperl.so with EU::CBuilder on Linux' \ + 'Fedora Patch201: Link XS modules to libperl.so with EU::MM on Linux' \ + %{nil} +%endif + +#copy the example script +install -m 0644 %{SOURCE5} . + +#copy Pod-Html license clarification +cp %{SOURCE6} . + +# +# 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" +} +# 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 + +%global perl_abi %(echo '%{perl_version}' | sed 's/^\\([^.]*\\.[^.]*\\).*/\\1/') + +# ldflags is not used when linking XS modules. +# Only ldflags is used when linking miniperl. +# Only ccflags and ldflags are used for Configure's compiler checks. +# Set optimize=none to prevent from injecting upstream's value. +/bin/sh Configure -des \ + -Doptimize="none" \ + -Dccflags="$RPM_OPT_FLAGS" \ + -Dldflags="$RPM_LD_FLAGS" \ + -Dccdlflags="-Wl,--enable-new-dtags $RPM_LD_FLAGS" \ + -Dlddlflags="-shared $RPM_LD_FLAGS" \ + -Dshrpdir="%{_libdir}" \ + -DDEBUGGING=-g \ + -Dversion=%{perl_version} \ + -Dmyhostname=localhost \ + -Dperladmin=root@localhost \ + -Dcc='%{__cc}' \ + -Dcf_by='Red Hat, Inc.' \ + -Dprefix=%{_prefix} \ +%if %{without perl_enables_groff} + -Dman1dir="%{_mandir}/man1" \ + -Dman3dir="%{_mandir}/man3" \ +%endif + -Dvendorprefix=%{_prefix} \ + -Dsiteprefix=%{_prefix}/local \ + -Dsitelib="%{_prefix}/local/share/perl5/%{perl_abi}" \ + -Dsitearch="%{_prefix}/local/%{_lib}/perl5/%{perl_abi}" \ + -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 \ +%if %{with perl_enables_systemtap} + -Dusedtrace='/usr/bin/dtrace' \ +%else + -Uusedtrace \ +%endif + -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 \ + -Duse64bitint + +# -Duseshrplib creates libperl.so, -Ubincompat5005 help create DSO -> libperl.so + +BUILD_BZIP2=0 +BZIP2_LIB=%{_libdir} +export BUILD_BZIP2 BZIP2_LIB + +# Prepapre a symlink from proper DSO name to libperl.so now so that new perl +# can be executed from make. +%global soname libperl.so.%{perl_abi} +test -L %soname || ln -s libperl.so %soname + +%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 + +# Make proper DSO names, move libperl to standard path. +mv "%{build_archlib}/CORE/libperl.so" \ + "$RPM_BUILD_ROOT%{_libdir}/libperl.so.%{perl_version}" +ln -s "libperl.so.%{perl_version}" "$RPM_BUILD_ROOT%{_libdir}/%{soname}" +ln -s "libperl.so.%{perl_version}" "$RPM_BUILD_ROOT%{_libdir}/libperl.so" +# XXX: Keep symlink from original location because various code glues +# $archlib/CORE/$libperl to get the DSO. +ln -s "../../libperl.so.%{perl_version}" "%{build_archlib}/CORE/libperl.so" +# XXX: Remove the soname named file from CORE directory that was created as +# a symlink in build section and installed as a regular file by perl build +# system. +rm -f "%{build_archlib}/CORE/%{soname}" + +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} + +# +# perl RPM macros +# +mkdir -p ${RPM_BUILD_ROOT}%{_rpmmacrodir} +install -p -m 644 %{SOURCE3} ${RPM_BUILD_ROOT}%{_rpmmacrodir} + +# +# Core modules removal +# +# Dual-living binaries clashes on debuginfo files between perl and standalone +# packages. Excluding is not enough, we need to remove them. This is +# a work-around for rpmbuild bug #878863. +find $RPM_BUILD_ROOT -type f -name '*.bs' -empty -delete +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 + +# Normalize shell bangs in tests. +# brp-mangle-shebangs executed by rpm-build chokes on t/TEST. +%{new_perl} -MConfig -i -pn \ + -e 's"\A#!(?:perl|\./perl|/perl|/usr/bin/perl|/usr/bin/env perl)\b"$Config{startperl}"' \ + $(find %{buildroot}%{perl5_testdir}/perl-tests -type f) + +%if %{with perl_enables_systemtap} +# 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|%{_libdir}/%{soname}|" \ + %{SOURCE4} \ + > %{buildroot}%{tapsetdir}/%{libperl_stp} +%endif + +# 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} +%{new_perl} -I/lib regen/lib_cleanup.pl +pushd t +%{new_perl} -I../lib porting/customized.t --regen +popd +%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 + +%ldconfig_scriptlets libs + +%files +# We sub-package modules from perl-interpreter subpackage. Main perl package +# is a meta package. + +%files interpreter +%{_mandir}/man1/*.1* +%{_mandir}/man3/*.3* +%{_bindir}/* +%{archlib}/* +%{privlib}/* + + +# libs +%exclude %dir %{archlib} +%exclude %dir %{archlib}/auto +%exclude %{archlib}/auto/re +%exclude %dir %{archlib}/CORE +%exclude %{archlib}/CORE/libperl.so +%exclude %{archlib}/re.pm +%exclude %{_libdir}/libperl.so.* +%exclude %dir %{perl_vendorarch} +%exclude %dir %{perl_vendorarch}/auto +%exclude %dir %{privlib} +%exclude %{privlib}/integer.pm +%exclude %{privlib}/strict.pm +%exclude %{privlib}/unicore +%exclude %{privlib}/utf8.pm +%exclude %{privlib}/utf8_heavy.pl +%exclude %{privlib}/warnings.pm +%exclude %{privlib}/XSLoader.pm +%exclude %dir %{perl_vendorlib} +%exclude %{_mandir}/man3/integer.* +%exclude %{_mandir}/man3/re.* +%exclude %{_mandir}/man3/strict.* +%exclude %{_mandir}/man3/utf8.* +%exclude %{_mandir}/man3/warnings.* +%exclude %{_mandir}/man3/XSLoader.* + +# devel +%exclude %{_bindir}/h2xs +%exclude %{_mandir}/man1/h2xs* +%exclude %{_bindir}/perlivp +%exclude %{_mandir}/man1/perlivp* +%exclude %{archlib}/CORE/*.h +%exclude %{_libdir}/libperl.so +%exclude %{_mandir}/man1/perlxs* +%if %{with perl_enables_systemtap} +%exclude %dir %{_datadir}/systemtap +%exclude %dir %{_datadir}/systemtap/tapset +%endif + +# utils +%exclude %{_bindir}/h2ph +%exclude %{_bindir}/perlbug +%exclude %{_bindir}/perlthanks +%exclude %{_bindir}/pl2pm +%exclude %{_bindir}/splain +%exclude %{privlib}/pod/perlutil.pod +%exclude %{_mandir}/man1/h2ph.* +%exclude %{_mandir}/man1/perlbug.* +%exclude %{_mandir}/man1/perlthanks.* +%exclude %{_mandir}/man1/perlutil.* +%exclude %{_mandir}/man1/pl2pm.* +%exclude %{_mandir}/man1/splain.* + +# Archive-Tar +%exclude %{_bindir}/ptar +%exclude %{_bindir}/ptardiff +%exclude %{_bindir}/ptargrep +%exclude %dir %{privlib}/Archive +%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* + +# Attribute-Handlers +%exclude %{privlib}/Attribute +%exclude %{_mandir}/man3/Attribute::Handlers.* + +# 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* + +# bignum +%exclude %{privlib}/bigint.pm +%exclude %{privlib}/bignum.pm +%exclude %{privlib}/bigrat.pm +%exclude %{privlib}/Math/BigFloat +%exclude %{privlib}/Math/BigInt/Trace.pm +%exclude %{_mandir}/man3/bigint.* +%exclude %{_mandir}/man3/bignum.* +%exclude %{_mandir}/man3/bigrat.* + +# Carp +%exclude %{privlib}/Carp +%exclude %{privlib}/Carp.* +%exclude %{_mandir}/man3/Carp.* + +# Config-Perl-V +%exclude %{privlib}/Config/Perl +%exclude %{_mandir}/man3/Config::Perl::V.* + +# constant +%exclude %{privlib}/constant.pm +%exclude %{_mandir}/man3/constant.3* + +# CPAN +%exclude %{_bindir}/cpan +%exclude %dir %{privlib}/App +%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 %dir %{privlib}/CPAN +%exclude %{privlib}/CPAN/Meta.pm +%exclude %dir %{privlib}/CPAN/Meta +%exclude %{privlib}/CPAN/Meta/Converter.pm +%exclude %{privlib}/CPAN/Meta/Feature.pm +%exclude %dir %{privlib}/CPAN/Meta/History +%exclude %{privlib}/CPAN/Meta/History.pm +%exclude %{privlib}/CPAN/Meta/Merge.pm +%exclude %{privlib}/CPAN/Meta/Prereqs.pm +%exclude %{privlib}/CPAN/Meta/Spec.pm +%exclude %{privlib}/CPAN/Meta/Validator.pm +%exclude %dir %{privlib}/Parse +%exclude %dir %{privlib}/Parse/CPAN +%exclude %{privlib}/Parse/CPAN/Meta.pm +%exclude %{_mandir}/man3/CPAN::Meta* +%exclude %{_mandir}/man3/Parse::CPAN::Meta.3* + +# CPAN-Meta-Requirements +%exclude %dir %{privlib}/CPAN +%exclude %dir %{privlib}/CPAN/Meta +%exclude %{privlib}/CPAN/Meta/Requirements.pm +%exclude %{_mandir}/man3/CPAN::Meta::Requirements.3* + +# CPAN-Meta-YAML +%exclude %dir %{privlib}/CPAN +%exclude %dir %{privlib}/CPAN/Meta +%exclude %{privlib}/CPAN/Meta/YAML.pm +%exclude %{_mandir}/man3/CPAN::Meta::YAML* + +# Compress-Raw-Bzip2 +%exclude %dir %{archlib}/Compress +%exclude %dir %{archlib}/Compress/Raw +%exclude %{archlib}/Compress/Raw/Bzip2.pm +%exclude %dir %{archlib}/auto/Compress +%exclude %dir %{archlib}/auto/Compress/Raw +%exclude %{archlib}/auto/Compress/Raw/Bzip2 +%exclude %{_mandir}/man3/Compress::Raw::Bzip2* + +# Compress-Raw-Zlib +%exclude %dir %{archlib}/Compress +%exclude %dir %{archlib}/Compress/Raw +%exclude %{archlib}/Compress/Raw/Zlib.pm +%exclude %dir %{archlib}/auto/Compress +%exclude %dir %{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* + +# Devel-Peek +%dir %exclude %{archlib}/Devel +%exclude %{archlib}/Devel/Peek.pm +%dir %exclude %{archlib}/auto/Devel +%exclude %{archlib}/auto/Devel/Peek +%exclude %{_mandir}/man3/Devel::Peek.* + +# Devel-PPPort +%exclude %{archlib}/Devel/PPPort.pm +%exclude %{_mandir}/man3/Devel::PPPort.3* + +# Devel-SelfStubber +%exclude %dir %{privlib}/Devel +%exclude %{privlib}/Devel/SelfStubber.pm +%exclude %{_mandir}/man3/Devel::SelfStubber.* + +# 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 %dir %{archlib}/Digest +%exclude %{archlib}/Digest/MD5.pm +%exclude %dir %{archlib}/auto/Digest +%exclude %{archlib}/auto/Digest/MD5 +%exclude %{_mandir}/man3/Digest::MD5.3* + +# Digest-SHA +%exclude %{_bindir}/shasum +%exclude %dir %{archlib}/Digest +%exclude %{archlib}/Digest/SHA.pm +%exclude %dir %{archlib}/auto/Digest +%exclude %{archlib}/auto/Digest/SHA +%exclude %{_mandir}/man1/shasum.1* +%exclude %{_mandir}/man3/Digest::SHA.3* + +# Encode +%exclude %{_bindir}/encguess +%exclude %{_bindir}/piconv +%exclude %{archlib}/Encode* +%exclude %{archlib}/auto/Encode* +%exclude %{privlib}/Encode +%exclude %{_mandir}/man1/encguess.1* +%exclude %{_mandir}/man1/piconv.1* +%exclude %{_mandir}/man3/Encode*.3* + +# encoding +%exclude %{archlib}/encoding.pm +%exclude %{_mandir}/man3/encoding.3* + +# Encode-devel +%exclude %{_bindir}/enc2xs +%exclude %dir %{privlib}/Encode +%exclude %{privlib}/Encode/*.e2x +%exclude %{privlib}/Encode/encode.h +%exclude %{_mandir}/man1/enc2xs.1* + +# Env +%exclude %{privlib}/Env.pm +%exclude %{_mandir}/man3/Env.3* + +# Errno +%exclude %{archlib}/Errno.pm +%exclude %{_mandir}/man3/Errno.* + +# Exporter +%exclude %{privlib}/Exporter* +%exclude %{_mandir}/man3/Exporter* + +# experimental +%exclude %{privlib}/experimental* +%exclude %{_mandir}/man3/experimental* + +# ExtUtils-CBuilder +%exclude %{privlib}/ExtUtils/CBuilder +%exclude %{privlib}/ExtUtils/CBuilder.pm +%exclude %{_mandir}/man3/ExtUtils::CBuilder* + +# ExtUtils-Command +%exclude %{privlib}/ExtUtils/Command.pm +%exclude %{_mandir}/man3/ExtUtils::Command.* + +# 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/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.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-Miniperl +%exclude %{privlib}/ExtUtils/Miniperl.pm +%exclude %{_mandir}/man3/ExtUtils::Miniperl.3* + +# ExtUtils-MM-Utils +%exclude %dir %{privlib}/ExtUtils/MM +%exclude %{privlib}/ExtUtils/MM/Utils.pm +%exclude %{_mandir}/man3/ExtUtils::MM::Utils.* + +# ExtUtils-ParseXS +%exclude %dir %{privlib}/ExtUtils/ParseXS +%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/Eval.pm +%exclude %{privlib}/ExtUtils/ParseXS/Utilities.pm +%exclude %dir %{privlib}/ExtUtils/Typemaps +%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::Eval.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-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 %dir %{archlib}/auto/Filter +%exclude %{archlib}/auto/Filter/Util +%exclude %dir %{archlib}/Filter +%exclude %{archlib}/Filter/Util +%exclude %{privlib}/pod/perlfilter.pod +%exclude %{_mandir}/man1/perlfilter.* +%exclude %{_mandir}/man3/Filter::Util::* + +# Filter-Simple +%exclude %dir %{privlib}/Filter +%exclude %{privlib}/Filter/Simple.pm +%exclude %{_mandir}/man3/Filter::Simple.3* + +# Getopt-Long +%exclude %{privlib}/Getopt/Long.pm +%exclude %{_mandir}/man3/Getopt::Long.3* + +# IO +%exclude %dir %{archlib}/IO +%exclude %{archlib}/IO.pm +%exclude %{archlib}/IO/Dir.pm +%exclude %{archlib}/IO/File.pm +%exclude %{archlib}/IO/Handle.pm +%exclude %{archlib}/IO/Pipe.pm +%exclude %{archlib}/IO/Poll.pm +%exclude %{archlib}/IO/Seekable.pm +%exclude %{archlib}/IO/Select.pm +%exclude %dir %{archlib}/IO/Socket +%exclude %{archlib}/IO/Socket/INET.pm +%exclude %{archlib}/IO/Socket/UNIX.pm +%exclude %{archlib}/IO/Socket.pm +%exclude %dir %{archlib}/auto/IO +%exclude %{archlib}/auto/IO/IO.so +%exclude %{_mandir}/man3/IO.* +%exclude %{_mandir}/man3/IO::Dir.* +%exclude %{_mandir}/man3/IO::File.* +%exclude %{_mandir}/man3/IO::Handle.* +%exclude %{_mandir}/man3/IO::Pipe.* +%exclude %{_mandir}/man3/IO::Poll.* +%exclude %{_mandir}/man3/IO::Seekable.* +%exclude %{_mandir}/man3/IO::Select.* +%exclude %{_mandir}/man3/IO::Socket::INET.* +%exclude %{_mandir}/man3/IO::Socket::UNIX.* +%exclude %{_mandir}/man3/IO::Socket.* + +# IO-Compress +%exclude %{_bindir}/zipdetails +%exclude %dir %{privlib}/IO +%exclude %dir %{privlib}/IO/Compress +%exclude %{privlib}/IO/Compress/FAQ.pod +%exclude %{_mandir}/man1/zipdetails.* +%exclude %{_mandir}/man3/IO::Compress::FAQ.* +# Compress-Zlib +%exclude %dir %{privlib}/Compress +%exclude %{privlib}/Compress/Zlib.pm +%exclude %{_mandir}/man3/Compress::Zlib* +# IO-Compress-Base +%exclude %{privlib}/File/GlobMapper.pm +%exclude %dir %{privlib}/IO +%exclude %dir %{privlib}/IO/Compress +%exclude %{privlib}/IO/Compress/Base +%exclude %{privlib}/IO/Compress/Base.pm +%exclude %dir %{privlib}/IO/Uncompress +%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 %dir %{privlib}/IO +%exclude %dir %{privlib}/IO/Compress +%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 %dir %{privlib}/IO/Uncompress +%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-Socket-IP +%exclude %dir %{privlib}/IO +%exclude %dir %{privlib}/IO/Socket +%exclude %{privlib}/IO/Socket/IP.pm +%exclude %{_mandir}/man3/IO::Socket::IP.* + +# IO-Zlib +%exclude %dir %{privlib}/IO +%exclude %{privlib}/IO/Zlib.pm +%exclude %{_mandir}/man3/IO::Zlib.* + +# HTTP-Tiny +%exclude %dir %{privlib}/HTTP +%exclude %{privlib}/HTTP/Tiny.pm +%exclude %{_mandir}/man3/HTTP::Tiny* + +# IPC-Cmd +%exclude %{privlib}/IPC/Cmd.pm +%exclude %{_mandir}/man3/IPC::Cmd.3* + +# IPC-SysV +%exclude %{archlib}/auto/IPC +%exclude %{archlib}/IPC/Msg.pm +%exclude %{archlib}/IPC/Semaphore.pm +%exclude %{archlib}/IPC/SharedMem.pm +%exclude %{archlib}/IPC/SysV.pm +%exclude %{_mandir}/man3/IPC::Msg.* +%exclude %{_mandir}/man3/IPC::Semaphore.* +%exclude %{_mandir}/man3/IPC::SharedMem.* +%exclude %{_mandir}/man3/IPC::SysV.* + +# JSON-PP +%exclude %{_bindir}/json_pp +%exclude %dir %{privlib}/JSON +%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* + +# libnet +%exclude %{privlib}/Net/Cmd.pm +%exclude %{privlib}/Net/Config.pm +%exclude %{privlib}/Net/Domain.pm +%exclude %{privlib}/Net/FTP +%exclude %{privlib}/Net/FTP.pm +%exclude %{privlib}/Net/libnetFAQ.pod +%exclude %{privlib}/Net/NNTP.pm +%exclude %{privlib}/Net/Netrc.pm +%exclude %{privlib}/Net/POP3.pm +%exclude %{privlib}/Net/SMTP.pm +%exclude %{privlib}/Net/Time.pm +%exclude %{_mandir}/man3/Net::Cmd.* +%exclude %{_mandir}/man3/Net::Config.* +%exclude %{_mandir}/man3/Net::Domain.* +%exclude %{_mandir}/man3/Net::FTP.* +%exclude %{_mandir}/man3/Net::libnetFAQ.* +%exclude %{_mandir}/man3/Net::NNTP.* +%exclude %{_mandir}/man3/Net::Netrc.* +%exclude %{_mandir}/man3/Net::POP3.* +%exclude %{_mandir}/man3/Net::SMTP.* +%exclude %{_mandir}/man3/Net::Time.* + +# libnetcfg +%exclude %{_bindir}/libnetcfg +%exclude %{_mandir}/man1/libnetcfg* + +# Locale-Maketext +%exclude %dir %{privlib}/Locale +%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 %dir %{privlib}/Locale +%exclude %dir %{privlib}/Locale/Maketext +%exclude %{privlib}/Locale/Maketext/Simple.pm +%exclude %{_mandir}/man3/Locale::Maketext::Simple.* + +# Math-BigInt +%exclude %{privlib}/Math/BigFloat.pm +%exclude %{privlib}/Math/BigInt.pm +%exclude %dir %exclude %{privlib}/Math/BigInt +%exclude %{privlib}/Math/BigInt/Calc.pm +%exclude %{privlib}/Math/BigInt/Lib.pm +%exclude %{_mandir}/man3/Math::BigFloat.* +%exclude %{_mandir}/man3/Math::BigInt.* +%exclude %{_mandir}/man3/Math::BigInt::Calc.* +%exclude %{_mandir}/man3/Math::BigInt::Lib.* + +# Math-BigInt-FastCalc +%exclude %{archlib}/Math +%exclude %{archlib}/auto/Math +%exclude %{_mandir}/man3/Math::BigInt::FastCalc.* + +# Math-BigRat +%exclude %{privlib}/Math/BigRat.pm +%exclude %{_mandir}/man3/Math::BigRat.* + +# Math-Complex +%dir %exclude %{privlib}/Math +%exclude %{privlib}/Math/Complex.pm +%exclude %{privlib}/Math/Trig.pm +%exclude %{_mandir}/man3/Math::Complex.* +%exclude %{_mandir}/man3/Math::Trig.* + +# Memoize +%exclude %{privlib}/Memoize +%exclude %{privlib}/Memoize.pm +%exclude %{_mandir}/man3/Memoize::* +%exclude %{_mandir}/man3/Memoize.* + +# MIME-Base64 +%exclude %{archlib}/auto/MIME +%exclude %{archlib}/MIME +%exclude %{_mandir}/man3/MIME::* + +# Module-CoreList +%exclude %dir %{privlib}/Module +%exclude %{privlib}/Module/CoreList +%exclude %{privlib}/Module/CoreList.pm +%exclude %{privlib}/Module/CoreList.pod +%exclude %{_mandir}/man3/Module::CoreList* + +# Module-CoreList-tools +%exclude %{_bindir}/corelist +%exclude %{_mandir}/man1/corelist* + +# Module-Load +%exclude %dir %{privlib}/Module +%exclude %{privlib}/Module/Load.pm +%exclude %{_mandir}/man3/Module::Load.* + +# Module-Load-Conditional +%exclude %dir %{privlib}/Module +%exclude %{privlib}/Module/Load +%exclude %{_mandir}/man3/Module::Load::Conditional* + +# Module-Loaded +%exclude %dir %{privlib}/Module +%exclude %{privlib}/Module/Loaded.pm +%exclude %{_mandir}/man3/Module::Loaded* + +# Module-Metadata +%exclude %dir %{privlib}/Module +%exclude %{privlib}/Module/Metadata.pm +%exclude %{_mandir}/man3/Module::Metadata.3pm* + +# Net-Ping +%exclude %{privlib}/Net/Ping.pm +%exclude %{_mandir}/man3/Net::Ping.* + +# 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* + +# perlfaq +%exclude %{privlib}/perlfaq.pm +%exclude %{privlib}/pod/perlfaq* +%exclude %{privlib}/pod/perlglossary.pod +%exclude %{_mandir}/man1/perlfaq* +%exclude %{_mandir}/man1/perlglossary.* + +# PerlIO-via-QuotedPrint +%exclude %{privlib}/PerlIO +%exclude %{_mandir}/man3/PerlIO::via::QuotedPrint.* + +# Perl-OSType +%exclude %dir %{privlib}/Perl +%exclude %{privlib}/Perl/OSType.pm +%exclude %{_mandir}/man3/Perl::OSType.3pm* + +# open +%exclude %{privlib}/open.pm +%exclude %{_mandir}/man3/open.3* + +# 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-Html +%exclude %{_bindir}/pod2html +%exclude %{privlib}/Pod/Html.pm +%exclude %{_mandir}/man1/pod2html.1* +%exclude %{_mandir}/man3/Pod::Html.* + +# 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}/Sub/ +%exclude %{archlib}/auto/List/ +%exclude %{_mandir}/man3/List::Util* +%exclude %{_mandir}/man3/Scalar::Util* +%exclude %{_mandir}/man3/Sub::Util* + +# SelfLoader +%exclude %{privlib}/SelfLoader.pm +%exclude %{_mandir}/man3/SelfLoader* + +# 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-ANSIColor +%exclude %{privlib}/Term/ANSIColor.pm +%exclude %{_mandir}/man3/Term::ANSIColor* + +# Term-Cap +%exclude %{privlib}/Term/Cap.pm +%exclude %{_mandir}/man3/Term::Cap.* + +# Test +%exclude %{privlib}/Test.pm +%exclude %{_mandir}/man3/Test.* + +# Test-Harness +%exclude %{_bindir}/prove +%exclude %dir %{privlib}/App +%exclude %{privlib}/App/Prove* +%exclude %{privlib}/TAP* +%exclude %dir %{privlib}/Test +%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}/ok* +%exclude %dir %{privlib}/Test +%exclude %{privlib}/Test/More* +%exclude %{privlib}/Test/Builder* +%exclude %{privlib}/Test/Tester* +%exclude %{privlib}/Test/Simple* +%exclude %{privlib}/Test/Tutorial* +%exclude %{privlib}/Test/use +%exclude %{privlib}/Test2* +%exclude %{_mandir}/man3/ok* +%exclude %{_mandir}/man3/Test::More* +%exclude %{_mandir}/man3/Test::Builder* +%exclude %{_mandir}/man3/Test::Tester* +%exclude %{_mandir}/man3/Test::Simple* +%exclude %{_mandir}/man3/Test::Tutorial* +%exclude %{_mandir}/man3/Test::use::* +%exclude %{_mandir}/man3/Test2* + +# Text-Balanced +%exclude %{privlib}/Text/Balanced.pm +%exclude %{_mandir}/man3/Text::Balanced.* + +# Text-ParseWords +%exclude %{privlib}/Text/ParseWords.pm +%exclude %{_mandir}/man3/Text::ParseWords.* + +# Text-Tabs+Wrap +%exclude %{privlib}/Text/Tabs.pm +%exclude %{privlib}/Text/Wrap.pm +%exclude %{_mandir}/man3/Text::Tabs.* +%exclude %{_mandir}/man3/Text::Wrap.* + +# Thread-Queue +%exclude %{privlib}/Thread/Queue.pm +%exclude %{_mandir}/man3/Thread::Queue.* + +# Time-HiRes +%exclude %dir %{archlib}/Time +%exclude %{archlib}/Time/HiRes.pm +%exclude %dir %{archlib}/auto/Time +%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 %dir %{archlib}/Time +%exclude %{archlib}/Time/Piece.pm +%exclude %{archlib}/Time/Seconds.pm +%exclude %dir %{archlib}/auto/Time +%exclude %{archlib}/auto/Time/Piece +%exclude %{_mandir}/man3/Time::Piece.3* +%exclude %{_mandir}/man3/Time::Seconds.3* + +# 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* + +# Unicode-Collate +%dir %exclude %{archlib}/auto/Unicode +%exclude %{archlib}/auto/Unicode/Collate +%dir %exclude %{archlib}/Unicode +%exclude %{archlib}/Unicode/Collate +%exclude %{archlib}/Unicode/Collate.pm +%exclude %{privlib}/Unicode/Collate +%exclude %{_mandir}/man3/Unicode::Collate.* +%exclude %{_mandir}/man3/Unicode::Collate::* + +# Unicode-Normalize +%exclude %{archlib}/auto/Unicode/Normalize +%exclude %{archlib}/Unicode/Normalize.pm +%exclude %{_mandir}/man3/Unicode::Normalize.* + +# 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 +%license Artistic Copying +%doc AUTHORS README Changes +%dir %{archlib} +%dir %{archlib}/auto +%{archlib}/auto/re +%dir %{archlib}/CORE +%{archlib}/CORE/libperl.so +%{archlib}/re.pm +%{_libdir}/libperl.so.* +%dir %{perl_vendorarch} +%dir %{perl_vendorarch}/auto +%dir %{privlib} +%{privlib}/integer.pm +%{privlib}/strict.pm +%{privlib}/unicore +%{privlib}/utf8.pm +%{privlib}/utf8_heavy.pl +%{privlib}/warnings.pm +%{privlib}/XSLoader.pm +%dir %{perl_vendorlib} +%{_mandir}/man3/integer.* +%{_mandir}/man3/re.* +%{_mandir}/man3/strict.* +%{_mandir}/man3/utf8.* +%{_mandir}/man3/warnings.* +%{_mandir}/man3/XSLoader.* + +%files devel +%{_bindir}/h2xs +%{_mandir}/man1/h2xs* +%{_bindir}/perlivp +%{_mandir}/man1/perlivp* +%{archlib}/CORE/*.h +%{_libdir}/libperl.so +%{_mandir}/man1/perlxs* +%if %{with perl_enables_systemtap} +%dir %{_datadir}/systemtap +%dir %{_datadir}/systemtap/tapset +%{tapsetdir}/%{libperl_stp} +%doc perl-example.stp +%endif + +%files macros +%{_rpmmacrodir}/macros.perl + +%files tests +%{perl5_testdir}/ + +%files utils +%{_bindir}/h2ph +%{_bindir}/perlbug +%{_bindir}/perlthanks +%{_bindir}/pl2pm +%{_bindir}/splain +%dir %{privlib}/pod +%{privlib}/pod/perlutil.pod +%{_mandir}/man1/h2ph.* +%{_mandir}/man1/perlbug.* +%{_mandir}/man1/perlthanks.* +%{_mandir}/man1/perlutil.* +%{_mandir}/man1/pl2pm.* +%{_mandir}/man1/splain.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Archive-Tar +%{_bindir}/ptar +%{_bindir}/ptardiff +%{_bindir}/ptargrep +%dir %{privlib}/Archive +%{privlib}/Archive/Tar +%{privlib}/Archive/Tar.pm +%{_mandir}/man1/ptar.1* +%{_mandir}/man1/ptardiff.1* +%{_mandir}/man1/ptargrep.1* +%{_mandir}/man3/Archive::Tar* +%endif + +%files Attribute-Handlers +%{privlib}/Attribute +%{_mandir}/man3/Attribute::Handlers.* + +%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 bignum +%{privlib}/bigint.pm +%{privlib}/bignum.pm +%{privlib}/bigrat.pm +%dir %{privlib}/Math +%{privlib}/Math/BigFloat +%dir %{privlib}/Math/BigInt +%{privlib}/Math/BigInt/Trace.pm +%{_mandir}/man3/bigint.* +%{_mandir}/man3/bignum.* +%{_mandir}/man3/bigrat.* + +%files Carp +%{privlib}/Carp +%{privlib}/Carp.* +%{_mandir}/man3/Carp.* + +%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 Config-Perl-V +%dir %{privlib}/Config +%{privlib}/Config/Perl +%{_mandir}/man3/Config::Perl::V.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files constant +%{privlib}/constant.pm +%{_mandir}/man3/constant.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files CPAN +%{_bindir}/cpan +%dir %{privlib}/App +%{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* +%endif + +%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 +%dir %{privlib}/CPAN/Meta/History +%{privlib}/CPAN/Meta/History/Meta* +%{privlib}/CPAN/Meta/History.pm +%{privlib}/CPAN/Meta/Merge.pm +%{privlib}/CPAN/Meta/Prereqs.pm +%{privlib}/CPAN/Meta/Spec.pm +%{privlib}/CPAN/Meta/Validator.pm +%dir %{privlib}/Parse/ +%dir %{privlib}/Parse/CPAN/ +%{privlib}/Parse/CPAN/Meta.pm +%{_mandir}/man3/CPAN::Meta* +%{_mandir}/man3/Parse::CPAN::Meta.3* +%exclude %{_mandir}/man3/CPAN::Meta::YAML* +%exclude %{_mandir}/man3/CPAN::Meta::Requirements* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files CPAN-Meta-Requirements +%dir %{privlib}/CPAN +%dir %{privlib}/CPAN/Meta +%{privlib}/CPAN/Meta/Requirements.pm +%{_mandir}/man3/CPAN::Meta::Requirements.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files CPAN-Meta-YAML +%dir %{privlib}/CPAN +%dir %{privlib}/CPAN/Meta +%{privlib}/CPAN/Meta/YAML.pm +%{_mandir}/man3/CPAN::Meta::YAML* +%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 + +%files Devel-Peek +%dir %{archlib}/Devel +%{archlib}/Devel/Peek.pm +%dir %{archlib}/auto/Devel +%{archlib}/auto/Devel/Peek +%{_mandir}/man3/Devel::Peek.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Devel-PPPort +%dir %{archlib}/Devel +%{archlib}/Devel/PPPort.pm +%{_mandir}/man3/Devel::PPPort.3* +%endif + +%files Devel-SelfStubber +%dir %{privlib}/Devel +%{privlib}/Devel/SelfStubber.pm +%{_mandir}/man3/Devel::SelfStubber.* + +%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 +%dir %{archlib}/Digest +%{archlib}/Digest/MD5.pm +%dir %{archlib}/auto/Digest +%{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 +%dir %{archlib}/auto/Digest +%{archlib}/auto/Digest/SHA +%{_mandir}/man1/shasum.1* +%{_mandir}/man3/Digest::SHA.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Encode +%{_bindir}/encguess +%{_bindir}/piconv +%{archlib}/Encode* +%{archlib}/auto/Encode* +%{privlib}/Encode +%exclude %{privlib}/Encode/*.e2x +%exclude %{privlib}/Encode/encode.h +%{_mandir}/man1/encguess.1* +%{_mandir}/man1/piconv.1* +%{_mandir}/man3/Encode*.3* + +%files encoding +%{archlib}/encoding.pm +%{_mandir}/man3/encoding.3* + +%files Encode-devel +%{_bindir}/enc2xs +%dir %{privlib}/Encode +%{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 + +%files Errno +%{archlib}/Errno.pm +%{_mandir}/man3/Errno.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Exporter +%{privlib}/Exporter* +%{_mandir}/man3/Exporter* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files experimental +%{privlib}/experimental* +%{_mandir}/man3/experimental* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files ExtUtils-CBuilder +%dir %{privlib}/ExtUtils +%{privlib}/ExtUtils/CBuilder +%{privlib}/ExtUtils/CBuilder.pm +%{_mandir}/man3/ExtUtils::CBuilder* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files ExtUtils-Command +%dir %{privlib}/ExtUtils +%{privlib}/ExtUtils/Command.pm +%{_mandir}/man3/ExtUtils::Command.* +%endif + +%files ExtUtils-Embed +%dir %{privlib}/ExtUtils +%{privlib}/ExtUtils/Embed.pm +%{_mandir}/man3/ExtUtils::Embed* + +%if %{dual_life} || %{rebuild_from_scratch} +%files ExtUtils-Install +%dir %{privlib}/ExtUtils +%{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* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files ExtUtils-Manifest +%dir %{privlib}/ExtUtils +%{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 +%dir %{privlib}/ExtUtils +%{privlib}/ExtUtils/Command/ +%{privlib}/ExtUtils/Liblist +%{privlib}/ExtUtils/Liblist.pm +%{privlib}/ExtUtils/MakeMaker +%{privlib}/ExtUtils/MakeMaker.pm +%{privlib}/ExtUtils/MM.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.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 + +%files ExtUtils-Miniperl +%dir %{privlib}/ExtUtils +%{privlib}/ExtUtils/Miniperl.pm +%{_mandir}/man3/ExtUtils::Miniperl.3* + +%if %{dual_life} || %{rebuild_from_scratch} +%files ExtUtils-MM-Utils +%dir %{privlib}/ExtUtils +%dir %{privlib}/ExtUtils/MM +%{privlib}/ExtUtils/MM/Utils.pm +%{_mandir}/man3/ExtUtils::MM::Utils.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files ExtUtils-ParseXS +%dir %{privlib}/ExtUtils +%dir %{privlib}/ExtUtils/ParseXS +%{privlib}/ExtUtils/ParseXS.pm +%{privlib}/ExtUtils/ParseXS.pod +%{privlib}/ExtUtils/ParseXS/Constants.pm +%{privlib}/ExtUtils/ParseXS/CountLines.pm +%{privlib}/ExtUtils/ParseXS/Eval.pm +%{privlib}/ExtUtils/ParseXS/Utilities.pm +%dir %{privlib}/ExtUtils/Typemaps +%{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::Eval.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-Fetch +%dir %{privlib}/File +%{privlib}/File/Fetch.pm +%{_mandir}/man3/File::Fetch.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files File-Path +%dir %{privlib}/File +%{privlib}/File/Path.pm +%{_mandir}/man3/File::Path.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files File-Temp +%dir %{privlib}/File +%{privlib}/File/Temp.pm +%{_mandir}/man3/File::Temp.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Filter +%dir %{archlib}/auto/Filter +%{archlib}/auto/Filter/Util +%dir %{archlib}/Filter +%{archlib}/Filter/Util +%{privlib}/pod/perlfilter.pod +%{_mandir}/man1/perlfilter.* +%{_mandir}/man3/Filter::Util::* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Filter-Simple +%dir %{privlib}/Filter +%{privlib}/Filter/Simple.pm +%{_mandir}/man3/Filter::Simple.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Getopt-Long +%dir %{privlib}/Getopt +%{privlib}/Getopt/Long.pm +%{_mandir}/man3/Getopt::Long.3* +%endif + +%files IO +%dir %{archlib}/IO +%{archlib}/IO.pm +%{archlib}/IO/Dir.pm +%{archlib}/IO/File.pm +%{archlib}/IO/Handle.pm +%{archlib}/IO/Pipe.pm +%{archlib}/IO/Poll.pm +%{archlib}/IO/Seekable.pm +%{archlib}/IO/Select.pm +%dir %{archlib}/IO/Socket +%{archlib}/IO/Socket/INET.pm +%{archlib}/IO/Socket/UNIX.pm +%{archlib}/IO/Socket.pm +%dir %{archlib}/auto/IO +%{archlib}/auto/IO/IO.so +%{_mandir}/man3/IO.* +%{_mandir}/man3/IO::Dir.* +%{_mandir}/man3/IO::File.* +%{_mandir}/man3/IO::Handle.* +%{_mandir}/man3/IO::Pipe.* +%{_mandir}/man3/IO::Poll.* +%{_mandir}/man3/IO::Seekable.* +%{_mandir}/man3/IO::Select.* +%{_mandir}/man3/IO::Socket::INET.* +%{_mandir}/man3/IO::Socket::UNIX.* +%{_mandir}/man3/IO::Socket.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files IO-Compress +# IO-Compress +%{_bindir}/zipdetails +%dir %{privlib}/IO +%dir %{privlib}/IO/Compress +%{privlib}/IO/Compress/FAQ.pod +%{_mandir}/man1/zipdetails.* +%{_mandir}/man3/IO::Compress::FAQ.* +# Compress-Zlib +%dir %{privlib}/Compress +%{privlib}/Compress/Zlib.pm +%{_mandir}/man3/Compress::Zlib* +#IO-Compress-Base +%dir %{privlib}/File +%{privlib}/File/GlobMapper.pm +%dir %{privlib}/IO +%dir %{privlib}/IO/Compress +%{privlib}/IO/Compress/Base +%{privlib}/IO/Compress/Base.pm +%dir %{privlib}/IO/Uncompress +%{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 +%dir %{privlib}/IO +%dir %{privlib}/IO/Compress +%{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 +%dir %{privlib}/IO/Uncompress +%{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 + +%if %{dual_life} || %{rebuild_from_scratch} +%files IO-Socket-IP +%dir %{privlib}/IO +%dir %{privlib}/IO/Socket +%{privlib}/IO/Socket/IP.pm +%{_mandir}/man3/IO::Socket::IP.* +%endif + +%files IO-Zlib +%dir %{privlib}/IO +%{privlib}/IO/Zlib.pm +%{_mandir}/man3/IO::Zlib.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files HTTP-Tiny +%dir %{privlib}/HTTP +%{privlib}/HTTP/Tiny.pm +%{_mandir}/man3/HTTP::Tiny* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files IPC-Cmd +%dir %{privlib}/IPC +%{privlib}/IPC/Cmd.pm +%{_mandir}/man3/IPC::Cmd.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files IPC-SysV +%{archlib}/auto/IPC +%dir %{archlib}/IPC +%{archlib}/IPC/Msg.pm +%{archlib}/IPC/Semaphore.pm +%{archlib}/IPC/SharedMem.pm +%{archlib}/IPC/SysV.pm +%{_mandir}/man3/IPC::Msg.* +%{_mandir}/man3/IPC::Semaphore.* +%{_mandir}/man3/IPC::SharedMem.* +%{_mandir}/man3/IPC::SysV.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files JSON-PP +%{_bindir}/json_pp +%dir %{privlib}/JSON +%{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 libnet +%dir %{privlib}/Net +%{privlib}/Net/Cmd.pm +%{privlib}/Net/Config.pm +%{privlib}/Net/Domain.pm +%{privlib}/Net/FTP +%{privlib}/Net/FTP.pm +%{privlib}/Net/libnetFAQ.pod +%{privlib}/Net/NNTP.pm +%{privlib}/Net/Netrc.pm +%{privlib}/Net/POP3.pm +%{privlib}/Net/SMTP.pm +%{privlib}/Net/Time.pm +%{_mandir}/man3/Net::Cmd.* +%{_mandir}/man3/Net::Config.* +%{_mandir}/man3/Net::Domain.* +%{_mandir}/man3/Net::FTP.* +%{_mandir}/man3/Net::libnetFAQ.* +%{_mandir}/man3/Net::NNTP.* +%{_mandir}/man3/Net::Netrc.* +%{_mandir}/man3/Net::POP3.* +%{_mandir}/man3/Net::SMTP.* +%{_mandir}/man3/Net::Time.* +%endif + +%files libnetcfg +%{_bindir}/libnetcfg +%{_mandir}/man1/libnetcfg* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Locale-Maketext +%dir %{privlib}/Locale +%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 +%dir %{privlib}/Locale +%dir %{privlib}/Locale/Maketext +%{privlib}/Locale/Maketext/Simple.pm +%{_mandir}/man3/Locale::Maketext::Simple.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Math-BigInt +%dir %{privlib}/Math +%{privlib}/Math/BigFloat.pm +%{privlib}/Math/BigInt.pm +%dir %{privlib}/Math/BigInt +%{privlib}/Math/BigInt/Calc.pm +%{privlib}/Math/BigInt/Lib.pm +%{_mandir}/man3/Math::BigFloat.* +%{_mandir}/man3/Math::BigInt.* +%{_mandir}/man3/Math::BigInt::Calc.* +%{_mandir}/man3/Math::BigInt::Lib.* + +%files Math-BigInt-FastCalc +%{archlib}/Math +%{archlib}/auto/Math +%{_mandir}/man3/Math::BigInt::FastCalc.* + +%files Math-BigRat +%dir %{privlib}/Math +%{privlib}/Math/BigRat.pm +%{_mandir}/man3/Math::BigRat.* +%endif + +%files Math-Complex +%dir %{privlib}/Math +%{privlib}/Math/Complex.pm +%{privlib}/Math/Trig.pm +%{_mandir}/man3/Math::Complex.* +%{_mandir}/man3/Math::Trig.* + +%files Memoize +%{privlib}/Memoize +%{privlib}/Memoize.pm +%{_mandir}/man3/Memoize::* +%{_mandir}/man3/Memoize.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files MIME-Base64 +%{archlib}/auto/MIME +%{archlib}/MIME +%{_mandir}/man3/MIME::* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Module-CoreList +%dir %{privlib}/Module +%{privlib}/Module/CoreList +%{privlib}/Module/CoreList.pm +%{privlib}/Module/CoreList.pod +%{_mandir}/man3/Module::CoreList* + +%files Module-CoreList-tools +%{_bindir}/corelist +%{_mandir}/man1/corelist* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Module-Load +%dir %{privlib}/Module +%{privlib}/Module/Load.pm +%{_mandir}/man3/Module::Load.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Module-Load-Conditional +%dir %{privlib}/Module +%{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 +%dir %{privlib}/Module +%{privlib}/Module/Metadata.pm +%{_mandir}/man3/Module::Metadata.3pm* +%endif + +%files Net-Ping +%dir %{privlib}/Net +%{privlib}/Net/Ping.pm +%{_mandir}/man3/Net::Ping.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files PathTools +%{archlib}/Cwd.pm +%dir %{archlib}/File +%{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 + +%files open +%{privlib}/open.pm +%{_mandir}/man3/open.3* + +%if %{dual_life} || %{rebuild_from_scratch} +%files parent +%{privlib}/parent.pm +%{_mandir}/man3/parent.3* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files perlfaq +%{privlib}/perlfaq.pm +%dir %{privlib}/pod +%{privlib}/pod/perlfaq* +%{privlib}/pod/perlglossary.pod +%{_mandir}/man1/perlfaq* +%{_mandir}/man1/perlglossary.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files PerlIO-via-QuotedPrint +%{privlib}/PerlIO +%{_mandir}/man3/PerlIO::via::QuotedPrint.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Perl-OSType +%dir %{privlib}/Perl +%{privlib}/Perl/OSType.pm +%{_mandir}/man3/Perl::OSType.3pm* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Pod-Checker +%{_bindir}/podchecker +%dir %{privlib}/Pod +%{privlib}/Pod/Checker.pm +%{_mandir}/man1/podchecker.* +%{_mandir}/man3/Pod::Checker.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Pod-Escapes +%dir %{privlib}/Pod +%{privlib}/Pod/Escapes.pm +%{_mandir}/man3/Pod::Escapes.* +%endif + +%files Pod-Html +%license Pod-Html-license-clarification +%dir %{privlib}/Pod +%{_bindir}/pod2html +%{privlib}/Pod/Html.pm +%{_mandir}/man1/pod2html.1* +%{_mandir}/man3/Pod::Html.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Pod-Parser +%{_bindir}/podselect +%dir %{privlib}/Pod +%{privlib}/Pod/Find.pm +%{privlib}/Pod/InputObjects.pm +%{privlib}/Pod/ParseUtils.pm +%{privlib}/Pod/Parser.pm +%{privlib}/Pod/PlainText.pm +%{privlib}/Pod/Select.pm +%{_mandir}/man1/podselect.1* +%{_mandir}/man3/Pod::Find.* +%{_mandir}/man3/Pod::InputObjects.* +%{_mandir}/man3/Pod::ParseUtils.* +%{_mandir}/man3/Pod::Parser.* +%{_mandir}/man3/Pod::PlainText.* +%{_mandir}/man3/Pod::Select.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Pod-Perldoc +%{_bindir}/perldoc +%{privlib}/pod/perldoc.pod +%dir %{privlib}/Pod +%{privlib}/Pod/Perldoc +%{privlib}/Pod/Perldoc.pm +%{_mandir}/man1/perldoc.1* +%{_mandir}/man3/Pod::Perldoc* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Pod-Usage +%{_bindir}/pod2usage +%dir %{privlib}/Pod +%{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 +%dir %{privlib}/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 +%dir %{privlib}/Pod +%{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}/Sub +%{archlib}/auto/List +%{_mandir}/man3/List::Util* +%{_mandir}/man3/Scalar::Util* +%{_mandir}/man3/Sub::Util* +%endif + +%files SelfLoader +%{privlib}/SelfLoader.pm +%{_mandir}/man3/SelfLoader* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Sys-Syslog +%dir %{archlib}/Sys +%{archlib}/Sys/Syslog.pm +%dir %{archlib}/auto/Sys +%{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-ANSIColor +%dir %{privlib}/Term +%{privlib}/Term/ANSIColor.pm +%{_mandir}/man3/Term::ANSIColor* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Term-Cap +%dir %{privlib}/Term +%{privlib}/Term/Cap.pm +%{_mandir}/man3/Term::Cap.* +%endif + +%files Test +%{privlib}/Test.pm +%{_mandir}/man3/Test.* + +%if %{dual_life} || %{rebuild_from_scratch} +%files Test-Harness +%{_bindir}/prove +%dir %{privlib}/App +%{privlib}/App/Prove* +%{privlib}/TAP* +%dir %{privlib}/Test +%{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}/ok* +%dir %{privlib}/Test +%{privlib}/Test/More* +%{privlib}/Test/Builder* +%{privlib}/Test/Tester* +%{privlib}/Test/Simple* +%{privlib}/Test/Tutorial* +%{privlib}/Test/use +%{privlib}/Test2* +%{_mandir}/man3/ok* +%{_mandir}/man3/Test::More* +%{_mandir}/man3/Test::Builder* +%{_mandir}/man3/Test::Tester* +%{_mandir}/man3/Test::Simple* +%{_mandir}/man3/Test::Tutorial* +%{_mandir}/man3/Test::use::* +%{_mandir}/man3/Test2* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Text-Balanced +%dir %{privlib}/Text +%{privlib}/Text/Balanced.pm +%{_mandir}/man3/Text::Balanced.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Text-ParseWords +%dir %{privlib}/Text +%{privlib}/Text/ParseWords.pm +%{_mandir}/man3/Text::ParseWords.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Text-Tabs+Wrap +%dir %{privlib}/Text +%{privlib}/Text/Tabs.pm +%{privlib}/Text/Wrap.pm +%{_mandir}/man3/Text::Tabs.* +%{_mandir}/man3/Text::Wrap.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Thread-Queue +%dir %{privlib}/Thread +%{privlib}/Thread/Queue.pm +%{_mandir}/man3/Thread::Queue.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Time-HiRes +%dir %{archlib}/Time +%{archlib}/Time/HiRes.pm +%dir %{archlib}/auto/Time +%{archlib}/auto/Time/HiRes +%{_mandir}/man3/Time::HiRes.* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Time-Local +%dir %{privlib}/Time +%{privlib}/Time/Local.pm +%{_mandir}/man3/Time::Local.* +%endif + +%files Time-Piece +%dir %{archlib}/Time +%{archlib}/Time/Piece.pm +%{archlib}/Time/Seconds.pm +%dir %{archlib}/auto/Time +%{archlib}/auto/Time/Piece +%{_mandir}/man3/Time::Piece.3* +%{_mandir}/man3/Time::Seconds.3* + +%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 +%dir %{archlib}/auto/threads +%{archlib}/auto/threads/shared* +%dir %{archlib}/threads +%{archlib}/threads/shared* +%{_mandir}/man3/threads::shared* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Unicode-Collate +%dir %{archlib}/auto/Unicode +%{archlib}/auto/Unicode/Collate +%dir %{archlib}/Unicode +%{archlib}/Unicode/Collate +%{archlib}/Unicode/Collate.pm +%dir %{privlib}/Unicode +%{privlib}/Unicode/Collate +%{_mandir}/man3/Unicode::Collate.* +%{_mandir}/man3/Unicode::Collate::* +%endif + +%if %{dual_life} || %{rebuild_from_scratch} +%files Unicode-Normalize +%dir %{archlib}/auto/Unicode +%{archlib}/auto/Unicode/Normalize +%dir %{archlib}/Unicode +%{archlib}/Unicode/Normalize.pm +%{_mandir}/man3/Unicode::Normalize.* +%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 + +# Old changelog entries are preserved in CVS. +%changelog +* Thu Dec 03 2020 Jitka Plesnikova - 4:5.30.1-452 +- Run-require perl(Encode) by perl-libs (bug #1903631) + +* Fri Jun 05 2020 Petr Pisar - 4:5.30.1-451 +- Fix CVE-2020-10543 (an integer overflow from nested regex quantifiers) + (bug #1837975) +- Fix CVE-2020-10878 (a corruption of a state of a compiled regular expression + due to an integer overflow) (bug #1837988) +- Fix CVE-2020-12723 (a corruption of a state of a compiled regular expression + due to recursive calls) (bug #1838000) + +* Fri Mar 13 2020 Petr Pisar - 4:5.30.1-450 +- Fix shebangs (bug #1813199) + +* Fri Nov 29 2019 Petr Pisar - 4:5.30.1-449 +- Fix a memory leak when compiling a regular expression with a non-word class + (GH#17218) + +* Tue Nov 12 2019 Petr Pisar - 4:5.30.1-448 +- Fix overloading for binary and octal floats (RT#125557) +- Fix handling undefined array members in Dumpvalue (RT#134441) +- Fix taint mode documentation regarding @INC +- Fix handling a layer argument in Tie::StdHandle::BINMODE() (RT#132475) +- Fix an unintended upgrade to UTF-8 in the middle of a transliteration +- Fix a race in File::stat() tests (GH#17234) +- Fix a buffer overread when parsing a number (GH#17279) +- Fix GCC 10 version detection (GH#17295) + +* Mon Nov 11 2019 Jitka Plesnikova - 4:5.30.1-447 +- 5.30.1 bump (see + for release notes) + +* Wed Sep 11 2019 Petr Pisar - 4:5.30.0-446 +- Fix a memory leak when matching a UTF-8 regular expression (RT#134390) +- Fix a detection for futimes (RT#134432) + +* Mon Sep 02 2019 Petr Pisar - 4:5.30.0-445 +- Adjust spec file to rpm-build-4.15.0-0.rc1.1 +- Fix parsing a Unicode property name when compiling a regular expression +- Fix a buffer overread when parsing a Unicode property while compiling + a regular expression (RT#134133) +- Do not interpret 0x and 0b prefixes when numifying strings (RT#134230) +- Fix a buffer overread when compiling a regular expression with many escapes + (RT#134325) +- Fix a buffer overflow when compiling a regular expression with many branches + (RT#134329) +- Correct a misspelling in perlrebackslash documentation (RT#134395) + +* Thu Aug 22 2019 Petr Pisar - 4:5.30.0-444 +- Fix a NULL pointer dereference in PerlIOVia_pushed() +- Fix a crash when setting $@ on unwinding a call stack (RT#134266) +- Fix parsing a denominator when parsing a Unicode property name +- Fix a documentation about a future API change +- Do not run File-Find tests in parallel + +* Wed Aug 07 2019 Petr Pisar - 4:5.30.0-443 +- Fix propagating non-string variables in an exception value (RT#134291) +- Include trailing zero in scalars holding trie data (RT#134207) +- Fix a use after free in /(?{...})/ (RT#134208) +- Fix a use after free in debugging output of a collation +- Fix file mode of a perl-example.stp example + +* Fri Jul 26 2019 Fedora Release Engineering - 4:5.30.0-442 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Jul 17 2019 Petr Pisar - 4:5.30.0-441 +- Fix a test for a crash in SIGALARM handler when waiting on a child process to + be closed (RT#122112) +- Fix a crash on an uninitialized warning when processing a multideref node + (RT#134275) +- Preserve append mode when opening anonymous files (RT#134221) +- Run Turkish locale tests + +* Tue Jun 25 2019 Petr Pisar - 4:5.30.0-440 +- Fix an out-of-buffer read while parsing a Unicode property name (RT#134134) +- Do not panic when outputting a warning (RT#134059) +- Fix memory handling when parsing string literals +- Fix an undefined behavior in shifting IV variables +- Fix stacking file test operators (CPAN RT#127073) +- Fix a crash in SIGALARM handler when waiting on a child process to be closed + (RT#122112) +- Fix a crash with a negative precision in sprintf function (RT#134008) +- Fix an erroneous assertion on OP_SCALAR (RT#134048) +- Prevent from wrapping a width in a numeric format string (RT#133913) +- Fix subroutine protypes to track reference aliases (RT#134072) +- Improve retrieving a scalar value of a variable modified in a signal handler + (RT#134035) +- Fix changing packet destination sent from a UDP IO::Socket object (RT#133936) +- Fix a stack underflow in readline() if passed an empty array as an argument + (#RT133989) +- Fix setting supplementar group IDs (RT#134169) +- Fix %%{^CAPTURE_ALL} to be an alias for %%- variable (RT#131867) +- Fix %%{^CAPTURE} value when used after @{^CAPTURE} (RT#134193) + +* Tue Jun 11 2019 Jitka Plesnikova - 4:5.30.0-439 +- Define %%perl_vendor*, %%perl_archlib, %%perl_privlib, because in rpm + 4.15 those are no longer defined + +* Sun Jun 02 2019 Jitka Plesnikova - 4:5.30.0-438 +- Perl 5.30 re-rebuild of bootstrapped packages + +* Wed May 22 2019 Jitka Plesnikova , Petr Pisar - 4:5.30.0-437 +- 5.30.0 bump (see + for release notes) +- Make site paths specific to Perl minor version (e.g. + /usr/local/share/perl5/5.30) to prevent from an ABI clash after upgrade + to an ABI-incompatible Perl + +* Tue Apr 23 2019 Jitka Plesnikova - 4:5.28.2-436 +- 5.28.2 bump (see + for release notes) + +* Fri Apr 05 2019 Petr Pisar - 4:5.28.1-435 +- Fix a leak when compiling a typed hash dereference +- Fix a buffer overread when handling a scope error in qr/\(?{/ (RT#133879) +- Fix a buffer overread when parsing a regular expression with an unknown + character name (RT#133880) +- Fix mbstate_t initialization in POSIX::mblen (RT#133928) +- Fix a memory leak when cloning a regular expression +- Fix a memory leak when spawning threads in a BEGIN phase +- Fix a memory leak when assigning a regular expression to a non-copy-on-write string +- Fix a memory leak when assignig to a localized ${^WARNING_BITS} +- Fix a memory leak when parsing misindented here-documents +- Fix a memory leak in package name lookup (RT#133977) +- Fix a memory leak when deletion in a tied hash dies +- Fix a crash when matching case insensitively (RT#133892) +- Fix a memory leak when warning about malformed UTF-8 string + +* Tue Mar 05 2019 Björn Esser - 4:5.28.1-434 +- Add explicit Requires: libxcrypt-devel to devel sub-package (bug #1666098) + +* Fri Feb 22 2019 Petr Pisar - 4:5.28.1-433 +- Fix a crash when parsing #line directives with large numbers in eval + (RT#131562) +- Fix setting magic when changing $^R (RT#133782) +- Fix a race when loading XS modules +- Fix extending a stack in Perl parser (RT#133778) + +* Fri Feb 01 2019 Fedora Release Engineering - 4:5.28.1-432 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Jan 16 2019 Petr Pisar - 4:5.28.1-431 +- Remove a fix for un undefined C behavior in NULL pointer arithmetics + (RT#133223) because it changes perl ABI + +* Mon Jan 14 2019 Petr Pisar - 4:5.28.1-430 +- Adjust tests to gdbm-1.15 using an upstream fix (RT#133295) +- Do not close an IPC pipe that already has a desired descriptor (RT#133726) +- Fix reporting a line number for non-terminated prototypes (RT#133524) +- Fix first eof() return value (RT#133721) +- Fix a crash when compiling a malformed form (RT#132158) +- Fix un undefined C behavior in NULL pointer arithmetics (RT#133223) +- Prevent long jumps from clobbering local variables (RT#133575) +- Fix a mismatch with a case-insesitive regular expression on a text with ligatures + (RT#133756) +- Fix the interpreter path if procfs is not mounted (RT#133573) + +* Mon Jan 14 2019 Björn Esser - 4:5.28.1-429 +- Rebuilt for libcrypt.so.2 (#1666033) + +* Sun Jan 13 2019 Björn Esser - 4:5.28.1-428 +- Add BuildRequires: gcc-c++ for tests + +* Fri Nov 30 2018 Petr Pisar - 4:5.28.1-427 +- Fix script run matching to allow ASCII digits in scripts that use their own in + addition (RT#133547) +- Fix PathTools tests to cope with ESTALE error (RT#133534) +- Fix an undefined behaviour in S_hv_delete_common() +- Fix in-place edit to replace files on a successful perl exit status + (bug #1650041) +- Fix compiling regular expressions that contain both compile- and run-time + compiled code blocks (RT#133687) + +* Fri Nov 30 2018 Jitka Plesnikova - 4:5.28.1-426 +- 5.28.1 bump +- Fix CVE-2018-18312 (heap-buffer-overflow write in regcomp.c) + +* Fri Nov 02 2018 Petr Pisar - 4:5.28.0-425 +- Install Encode developmental files when installing complete Perl + +* Thu Oct 25 2018 Jitka Plesnikova - 4:5.28.0-424 +- Fix annocheck failure by passing CFLAGS to dtrace + +* Mon Sep 24 2018 Petr Pisar - 4:5.28.0-423 +- Fix upack "u" of invalid data (RT#132655) + +* Mon Sep 10 2018 Petr Pisar - 4:5.28.0-422 +- Revert a fix for a buffer overrun in deprecated S_is_utf8_common() + (bug #1627091) + +* Wed Sep 05 2018 Petr Pisar - 4:5.28.0-421 +- Fix a buffer overrun in deprecated S_is_utf8_common() +- Fix a buffer overrun in deprecated utf8_to_uvchr() +- Fix a time race in Time-HiRes/t/itimer.t test +- Fix matching an ASCII digit followed by a non-ASCII digit using a script run +- Fix Time::Piece to handle objects in overloaded methods correctly +- Fix an assignment to a lexical variable in multiconcatenation expressions + (RT#133441) +- Fix a spurious warning about uninitialized value in warn (RT#132683) +- Require Devel::PPPort by perl-devel for h2xs script + +* Wed Aug 01 2018 Petr Pisar - 4:5.28.0-420 +- Fix a file descriptor leak in in-place edits (RT#133314) + +* Tue Jul 17 2018 Petr Pisar - 4:5.28.0-419 +- Fix index() and rindex() optimization in given-when boolean context + (RT#133368) +- Fix build conditions in locale.c + +* Fri Jul 13 2018 Fedora Release Engineering - 4:5.28.0-418 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Jul 09 2018 Petr Pisar - 4:5.28.0-417 +- Adjust tests to gdbm-1.15 (RT#133295) +- Fix an integer wrap when allocating memory for an environment variable + (RT#133204) +- Fix printing a warning about a wide character when matching a regular + expression while ISO-8859-1 locale is in effect +- Fix invoking a check for wide characters while ISO-8859-1 locale is in effect + +* Wed Jun 27 2018 Jitka Plesnikova - 4:5.28.0-416 +- Stop providing old perl(MODULE_COMPAT_5.26.*) + +* Tue Jun 26 2018 Jitka Plesnikova - 4:5.28.0-415 +- 5.28.0 bump (see + for release notes) + +* Fri May 25 2018 Petr Pisar - 4:5.26.2-414 +- Fix an infinite loop in the regular expression compiler (RT#133185) + +* Fri May 18 2018 Jitka Plesnikova - 4:5.26.2-413 +- Correct license tags of perl-libs (bug #1579524) + +* Thu Apr 19 2018 Petr Pisar - 4:5.26.2-412 +- perl-devel requires redhat-rpm-config because of hardened compiler profiles + (bug #1557667) +- Do not clobber file bytes in :encoding layer (RT#132833) +- Fix line numbers in multi-line s/// (RT#131930) +- Fix parsing extended bracketed character classes (RT#132167) +- Fix a possibly unitialized memory read in the Perl parser (RT#133074) + +* Mon Apr 16 2018 Petr Pisar - 4:5.26.2-411 +- 5.26.2 bump + +* Mon Mar 26 2018 Petr Pisar - 4:5.26.2-410.RC1 +- 5.26.2-RC1 bump +- Fix CVE-2018-6913 (heap buffer overflow in pp_pack.c) (bug #1567776) +- Fix CVE-2018-6798 (heap read overflow in regexec.c) (bug #1567777) +- Fix CVE-2018-6797 (heap write overflow in regcomp.c) (bug #1567778) + +* Thu Mar 1 2018 Florian Weimer - 4:5.26.1-409 +- Rebuild to pick up new build flags from redhat-rpm-config + +* Fri Feb 09 2018 Igor Gnatenko - 4:5.26.1-408 +- Escape macros in %%changelog + +* Tue Feb 06 2018 Petr Pisar - 4:5.26.1-407 +- Fix parsing braced subscript after parentheses (RT#8045) +- Fix a heap use after free when moving a stack (RT#131954) +- Call ldconfig scriptlets using a macro + +* Thu Feb 01 2018 Petr Pisar - 4:5.26.1-406 +- Correct shell bangs in tests + +* Mon Jan 29 2018 Petr Pisar - 4:5.26.1-405 +- Link XS modules to pthread library to fix linking with -z defs + +* Sat Jan 20 2018 Björn Esser - 4:5.26.1-404 +- Add patch to conditionalize a fix for an old and long fixed bug + in libcrypt / glibc (rhbz#1536752) + +* Mon Jan 15 2018 Petr Pisar - 4:5.26.1-403 +- Rebuild against glibc without nsl library + +* Tue Jan 09 2018 Petr Pisar - 4:5.26.1-402 +- Remove invalid macro definitions from macros.perl (bug #1532539) +- Fix an overflow in the lexer when reading a new line (RT#131793) +- Fix Term::ReadLine not to create spurious &STDERR files (RT#132008) +- Fix a crash when a match for inversely repeated group fails (RT#132017) +- Fix an overflow when parsing a character range with no preceding character + (RT#132245) +- Fix walking symbol table for ISA in Carp +- Fix handling file names with null bytes in stat and lstat functions + (RT#131895) +- Fix a crash when untying an object witout a stash +- Fix deparsing of transliterations with unprintable characters (RT#132405) +- Fix error reporting on do() on a directory (RT#125774) +- Fix stack manipulation when a lexical subroutine is defined in a do block in + a member of an iteration list (RT#132442) +- Fix setting $! when statting a closed file handle (RT#108288) +- Fix tainting of s/// with overloaded replacement (RT#115266) +- Expand system() arguments before a fork (RT#121105) +- Avoid undefined behavior when copying memory in Glob and pp_caller (RT#131746) + +* Mon Sep 25 2017 Jitka Plesnikova - 4:5.26.1-401 +- Update perl(:MODULE_COMPAT) + +* Mon Sep 25 2017 Jitka Plesnikova - 4:5.26.1-400 +- 5.26.1 bump (see + for release notes) + +* Tue Aug 22 2017 Petr Pisar - 4:5.26.0-399 +- Fix unreliable Time-HiRes tests (CPAN RT#122819) +- Do not require $Config{libs} providers by perl-devel package (bug #1481324) + +* Tue Aug 08 2017 Petr Pisar - 4:5.26.0-398 +- Fix reporting malformed UTF-8 character (RT#131646) +- Fix File::Glob rt131211.t test random failures +- Fix t/op/hash.t test random failures +- Parse caret variables with subscripts as normal variables inside ${...} + escaping (RT#131664) +- Do not display too many bytes when reporting malformed UTF-8 character +- Fix select called with a repeated magical variable (RT#131645) +- Fix error message for "our sub foo::bar" (RT#131679) +- Fix executing arybase::_tie_it() in Safe compartement (RT#131588) +- Fix handling attribute specification on our variables (RT#131597) +- Fix splitting non-ASCII strings if unicode_strings feature is enabled (RT#130907) +- Fix compiler warnings in code generated by ExtUtils::Constant + (CPAN RT#63832, CPAN RT#101487) +- Fix GCC version detection for -D_FORTIFY_SOURCE override (RT#131809) + +* Sat Jul 29 2017 Igor Gnatenko - 4:5.26.0-397 +- Enable separate debuginfo back + +* Thu Jul 27 2017 Fedora Release Engineering - 4:5.26.0-396 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jun 28 2017 Petr Pisar - 4:5.26.0-395 +- perl package installs all core modules, interpreter moved to + perl-interpreter package, perl-core package is obsolete + + (bug #1464903) + +* Mon Jun 19 2017 Petr Pisar - 4:5.26.0-394 +- Make File::Glob more resistant against degenerative matching (RT#131211) +- Fix a crash when calling a subroutine from a stash (RT#131085) +- Fix an improper cast of a negative integer to an unsigned 8-bit type (RT#131190) +- Fix cloning :via handles on thread creation (RT#131221) +- Fix glob UTF-8 flag on a glob reassignment (RT#131263) +- Fix a buffer overflow in my_atof2() (RT#131526) +- Fix handling backslashes in PATH environment variable when executing + "perl -S" (RT#129183) +- Fix a conditional jump on uninitilized memory in re_intuit_start() (RT#131575) +- Fix spurious "Assuming NOT a POSIX class" warning (RT#131522) +- Provide perl-interpreter RPM dependency symbol + + +* Tue Jun 06 2017 Jitka Plesnikova - 4:5.26.0-393 +- Stop providing old perl(MODULE_COMPAT_5.24.*) + +* Thu Jun 01 2017 Jitka Plesnikova - 4:5.26.0-392 +- 5.26.0 bump (see + for release notes) +- Update sub-packages +- Update or remove patches +- Enable hardening (bug #1238804) +- Use 64 bit ints on 32 bit platforms (bug #1268828) + +* Fri Mar 31 2017 Petr Pisar - 4:5.24.1-391 +- Introduce build-conditions for groff, systemtap, syslog tests, and tcsh + +* Wed Mar 08 2017 Petr Pisar - 4:5.24.1-390 +- Fix a null-pointer dereference on malformed code (RT#130815) +- Fix an use-after-free in substr() that modifies a magic variable (RT#129340) +- Fix a memory leak leak in Perl_reg_named_buff_fetch() (RT#130822) +- Fix an invalid memory read when parsing a loop variable (RT#130814) +- Fix a heap-use-after-free in four-arguments substr call (RT#130624) + +* Fri Feb 17 2017 Petr Pisar - 4:5.24.1-389 +- Adapt Compress::Raw::Zlib to zlib-1.2.11 (bug #1420326) +- Fix a heap buffer overflow when evaluating regexps with embedded code blocks + from more than one source (RT#129881) +- Fix a memory leak in list assignment from or to magic values (RT#130766) + +* Fri Feb 10 2017 Petr Pisar - 4:5.24.1-388 +- Adapt tests to zlib-1.2.11 (bug #1420326) +- Fix a crash when compiling a regexp with impossible quantifiers (RT#130561) +- Fix a buffer overrun with format and "use bytes" (RT#130703) +- Fix a buffer overflow when studying some regexps repeatedly + (RT#129281, RT#129061) + +* Thu Jan 26 2017 Petr Pisar - 4:5.24.1-387 +- Fix UTF-8 string handling in & operator (RT#129287) +- Fix recreation of *:: (RT#129869) +- Fix a memory leak in B::RHE->HASH method (RT#130504) +- Fix parsing goto statements in multicalled subroutine (RT#113938) +- Fix a heap overlow in parsing $# (RT#129274) + +* Fri Jan 20 2017 Petr Pisar - 4:5.24.1-386 +- Fix a buffer overflow in split in scalar context (RT#130262) +- Fix a heap overflow with pack "W" (RT129149) +- Fix a use-after-free when processing scalar variables in forms (RT#129125) +- Fix a heap overflow if invalid octal or hexadecimal number is used in + transliteration expression (RT#129342) +- Fix out-of-bound read in case of unmatched regexp backreference (RT#129377) + +* Mon Jan 16 2017 Jitka Plesnikova - 4:5.24.1-385 +- 5.24.1 bump (see + for release notes) + +* Thu Jan 12 2017 Igor Gnatenko - 4:5.24.0-384 +- Rebuild for readline 7.x + +* Fri Jan 06 2017 Petr Pisar - 4:5.24.0-383 +- Remove bundled Math-BigInt-FastCalc (bug #1408463) +- Remove bundled Math-BigRat (bug #1408467) +- Remove bundled bignum (bug #1409585) + +* Mon Dec 19 2016 Petr Pisar - 4:5.24.0-382 +- Fix a crash in optimized evaluation of "or ((0) x 0))" (RT#130247) +- Fix a memory leak in IO::Poll (RT#129788) +- Fix regular expression matching (RT#130307) + +* Thu Dec 01 2016 Petr Pisar - 4:5.24.0-381 +- Fix crash in Storable when deserializing malformed code reference + (RT#68348, RT#130098) +- Fix crash on explicit return from regular expression substitution (RT#130188) +- Tighten dependencies between architecture specific sub-packages to ISA +- Fix assigning split() return values to an array +- Fix const correctness in hv_func.h (bug #1242980) + +* Wed Nov 09 2016 Petr Pisar - 4:5.24.0-380 +- Tie perl-Errno release to interpreter build because of kernel version check + (bug #1393421) + +* Thu Nov 03 2016 Petr Pisar - 4:5.24.0-379 +- Fix crash in "evalbytes S" (RT#129196) +- Fix crash in splice (RT#129164, RT#129166, RT#129167) +- Fix string overrun in Perl_gv_fetchmethod_pvn_flags (RT#129267) +- Fix crash when matching UTF-8 string with non-UTF-8 substrings (RT#129350) +- Fix parsing perl options in shell bang line (RT#129336) +- Fix firstchar bitmap under UTF-8 with prefix optimization (RT#129950) +- Avoid infinite loop in h2xs tool if enum and type have the same name + (RT130001) +- Fix stack handling when calling chdir without an argument (RT#129130) + +* Fri Sep 02 2016 Petr Pisar - 4:5.24.0-378 +- perl-core depends on Parse::CPAN::Meta module instead of package name to allow + upgrading perl-CPAN-Meta to 2.150010 (bug #1370681) + +* Tue Aug 02 2016 Jitka Plesnikova - 4:5.24.0-377 +- Avoid loading of modules from current directory, CVE-2016-1238, (bug #1360425) + +* Thu Jul 28 2016 Petr Pisar - 4:5.24.0-376 +- Fix handling \N{} in tr for characters in range 128--255 (RT#128734) + +* Tue Jul 26 2016 Petr Pisar - 4:5.24.0-375 +- Fix building without perl in the build root +- Own systemtap directories by perl-devel + +* Tue Jul 12 2016 Petr Pisar - 4:5.24.0-374 +- Fix a crash in lexical scope warnings (RT#128597) + +* Fri Jul 08 2016 Petr Pisar - 4:5.24.0-373 +- Fix a crash in "Subroutine redefined" warning (RT#128257) + +* Thu Jul 07 2016 Petr Pisar - 4:5.24.0-372 +- Fix a crash when vivifying a stub in a deleted package (RT#128532) + +* Thu Jul 07 2016 Jitka Plesnikova - 4:5.24.0-371 +- Do not let XSLoader load relative paths (CVE-2016-6185) + +* Mon Jul 04 2016 Petr Pisar - 4:5.24.0-370 +- Fix line numbers with perl -x (RT#128508) + +* Fri Jun 24 2016 Petr Pisar - 4:5.24.0-369 +- Do not crash when inserting a non-stash into a stash (RT#128238) + +* Wed Jun 22 2016 Petr Pisar - 4:5.24.0-368 +- Do not use unitialized memory in $h{\const} warnings (RT#128189) +- Fix precedence in hv_ename_delete (RT#128086) +- Do not treat %%: as a stash (RT#128238) + +* Mon Jun 20 2016 Petr Pisar - 4:5.24.0-367 +- Fix compiling regular expressions like /\X*(?0)/ (RT#128109) + +* Thu Jun 16 2016 Petr Pisar - 4:5.24.0-366 +- Do not mangle errno from failed socket calls (RT#128316) + +* Tue Jun 14 2016 Petr Pisar - 4:5.24.0-365 +- Fix a memory leak when compiling a regular expression with a POSIX class + (RT#128313) + +* Thu May 19 2016 Petr Pisar - 4:5.24.0-364 +- Remove reflexive dependencies +- Use pregenerated dependencies on bootstrapping +- Specify more build-time dependencies + +* Wed May 18 2016 Jitka Plesnikova - 4:5.24.0-363 +- Stop providing old perl(MODULE_COMPAT_5.22.*) +- Update license tags + +* Wed May 11 2016 Jitka Plesnikova - 4:5.24.0-362 +- 5.24.0 bump (see + for release notes) +- Update sub-packages; Update or remove patches + +* Mon May 02 2016 Jitka Plesnikova - 4:5.22.6-361 +- 5.22.2 bump (see + for release notes) + +* Mon Apr 18 2016 Petr Pisar - 4:5.22.1-360 +- Weak perl-Encode-devel dependency on perl-devel to Recommends level + (bug #1129443) +- Remove perl-ExtUtils-ParseXS dependency on perl-devel (bug #1129443) +- Require perl-devel by perl-ExtUtils-MakeMaker +- Provide MM::maybe_command independently (bug #1129443) +- Replace ExtUtils::MakeMaker dependency with ExtUtils::MM::Utils in IPC::Cmd + (bug #1129443) +- Remove perl-ExtUtils-Install dependency on perl-devel (bug #1129443) +- Remove perl-ExtUtils-Manifest dependency on perl-devel (bug #1129443) + +* Tue Mar 15 2016 Petr Pisar - 4:5.22.1-359 +- Do not filter FCGI dependency, CGI is non-core now + +* Fri Mar 04 2016 Petr Pisar - 4:5.22.1-358 +- Remove bundled perl-IPC-SysV (bug #1308527) + +* Wed Mar 02 2016 Petr Pisar - 4:5.22.1-357 +- Fix CVE-2016-2381 (ambiguous environment variables handling) (bug #1313702) + +* Thu Feb 04 2016 Fedora Release Engineering - 4:5.22.1-356 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Dec 15 2015 Petr Pisar - 4:5.22.1-355 +- Remove bundled Math-BigInt (bug #1277203) + +* Mon Dec 14 2015 Jitka Plesnikova - 5.22.1-354 +- 5.22.1 bump (see + for release notes) + +* Tue Oct 20 2015 Petr Pisar - 4:5.22.0-353 +- Rebuild to utilize perl(:VERSION) dependency symbol + +* Tue Oct 13 2015 Petr Pisar - 4:5.22.0-352 +- Do not own IO::Socket::IP manual page by perl-IO + +* Fri Oct 09 2015 Petr Pisar - 4:5.22.0-351 +- Sub-package Attribute-Handlers +- Sub-package Devel-Peek +- Sub-package Devel-SelfStubber +- Sub-package SelfLoader +- Sub-package IO +- Sub-package Errno +- Correct perl-Digest-SHA dependencies +- Correct perl-Pod-Perldoc dependencies +- Move utf8 and dependencies to perl-libs +- Correct perl-devel and perl-CPAN dependencies +- Sub-package IPC-SysV +- Sub-package Test +- Sub-package utilities (splain) into perl-utils +- Provide perl version in perl(:VERSION) dependency symbol + +* Fri Aug 07 2015 Petr Pisar - 4:5.22.0-350 +- Sub-package Memoize +- Sub-package Net-Ping +- Sub-package Pod-Html + +* Thu Jul 16 2015 Petr Pisar - 4:5.22.0-349 +- Disable hardening due to some run-time failures (bug #1238804) + +* Mon Jul 13 2015 Petr Pisar - 4:5.22.0-348 +- Sub-package bignum +- Sub-package Math-BigRat +- Sub-package Math-BigInt-FastCalc +- Sub-package Math-Complex +- Remove bundled perl-Config-Perl-V (bug #1238203) +- Remove bundled perl-MIME-Base64 (bug #1238222) +- Remove bundled perl-PerlIO-via-QuotedPrint (bug #1238229) +- Remove bundled perl-Pod-Escapes (bug #1238237) +- Remove bundled perl-Term-Cap (bug #1238248) +- Remove bundled perl-Text-Balanced (bug #1238269) +- Remove bundled perl-libnet (bug #1238689) +- Remove bundled perl-perlfaq (bug #1238703) +- Remove bundled perl-Unicode-Normalize (bug #1238730) +- Remove bundled perl-Unicode-Collate (bug #1238760) + +* Wed Jul 08 2015 Petr Pisar - 4:5.22.0-347 +- Store distribution's linker and compiler flags to more Config's options + in order to apply them when linking executable programs (bug #1238804) +- Sub-package Config-Perl-V (bug #1238203) +- Sub-package MIME-Base64 (bug #1238222) +- Sub-package PerlIO-via-QuotedPrint (bug #1238229) +- Update Pod-Escapes metadata (bug #1238237) +- Sub-package Term-Cap (bug #1238248) +- Sub-package Text-Balanced (bug #1238269) +- Sub-package libnet (bug #1238689) +- Sub-package perlfaq (bug #1238703) +- Sub-package Unicode-Normalize (bug #1238730) +- Sub-package Unicode-Collate (bug #1238760) +- Sub-package Math-BigInt +- Do not provide Net/libnet.cfg (bug #1238689) +- Revert downstream change in Net::Config default configuration +- Move libnetcfg tool from perl-devel into perl-libnetcfg sub-package + +* Thu Jun 18 2015 Petr Pisar - 4:5.22.0-346 +- Subpackage "open" module in order to keep deprecated "encoding" module + optional (bug #1228378) +- Control building dual-lived sub-packages by perl_bootstrap macro +- Make PadlistNAMES() lvalue again (bug #1231165) +- Make magic vtable writable as a work-around for Coro (bug #1231165) +- Explain file break-down into RPM packages in perl package description + +* Thu Jun 18 2015 Fedora Release Engineering - 4:5.22.0-345 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Jun 10 2015 Jitka Plesnikova - 4:5.22.0-244 +- Stop providing old perl(MODULE_COMPAT_5.20.*) + +* Thu Jun 04 2015 Jitka Plesnikova - 4:5.22.0-243 +- Move ok and Test::Use::ok to perl-Test-Simple + +* Wed Jun 03 2015 Jitka Plesnikova - 4:5.22.0-242 +- Move bin/encguess to perl-Encode + +* Mon Jun 01 2015 Jitka Plesnikova - 4:5.22.0-241 +- 5.22.0 bump (see + for release notes) +- Update sub-packages and erase the removed modules from the core +- Clean patches, not needed with new version +- Update patches to work with new version + +* Wed Apr 15 2015 Jitka Plesnikova - 4:5.20.2-328 +- Sub-package perl-CGI-Fast and perl-Module-Build-Deprecated +- Add missing dual-life modules to perl-core + +* Thu Apr 02 2015 Petr Šabata - 4:5.20.2-327 +- Bump to make koji happy + +* Thu Apr 02 2015 Petr Šabata - 4:5.20.2-326 +- Correct license tags of the main package, CGI, Compress-Raw-Zlib, + Digest-MD5, Test-Simple and Time-Piece +- Package a Pod-Html license clarification email + +* Wed Mar 25 2015 Petr Pisar - 4:5.20.2-325 +- Sub-package Text-Tabs+Wrap (bug #910798) + +* Thu Mar 19 2015 Lubomir Rintel - 4:5.20.2-324 +- Add systemtap probes for new dtrace markers + +* Mon Mar 16 2015 Petr Pisar - 4:5.20.2-323 +- Move perl(:MODULE_COMPAT_*) symbol and include directories to perl-libs + package (bug #1174951) + +* Sat Feb 21 2015 Till Maas - 4:5.20.2-322 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Wed Feb 18 2015 Jitka Plesnikova - 4:5.20.2-321 +- Provide 5.20.2 MODULE_COMPAT +- Clean list of provided files +- Update names of changed patches + +* Tue Feb 17 2015 Jitka Plesnikova - 4:5.20.2-320 +- 5.20.2 bump (see + for release notes) +- Regenerate a2p.c (BZ#1177672) + +* Mon Feb 16 2015 Petr Pisar - 4:5.20.1-319 +- Improve h2ph fix for GCC 5.0 + +* Thu Feb 12 2015 Petr Pisar - 4:5.20.1-318 +- Fix regressions with GCC 5.0 + +* Tue Feb 03 2015 Jitka Plesnikova - 4:5.20.1-317 +- Sub-package inc-latest module + +* Fri Jan 23 2015 Petr Pisar - 4:5.20.1-316 +- Delete dual-living programs clashing on debuginfo files (bug #878863) + +* Mon Dec 01 2014 Petr Pisar - 4:5.20.1-315 +- Report inaccesible file on failed require (bug #1166504) +- Use stronger algorithm needed for FIPS in t/op/taint.t (bug #1128032) + +* Wed Nov 19 2014 Petr Pisar - 4:5.20.1-314 +- Consider Filter::Util::Call dependency as mandatory (bug #1165183) +- Sub-package encoding module +- Own upper directories by each package that installs a file there and + remove empty directories (bug #1165013) + +* Thu Nov 13 2014 Petr Pisar - 4:5.20.1-313 +- Freeze epoch at perl-Pod-Checker and perl-Pod-Usage (bug #1163490) +- Remove bundled perl-ExtUtils-Command (bug #1158536) +- Remove bundled perl-Filter-Simple (bug #1158542) + +* Wed Nov 12 2014 Petr Pisar - 4:5.20.1-312 +- Do not double-own perl-Pod-Usage' and perl-Pod-Checker' files by + perl-Pod-Parser on bootstrap +- Sub-package ExtUtils-Command (bug #1158536) +- Sub-package Filter-Simple (bug #1158542) +- Build-require groff-base instead of big groff + +* Wed Oct 29 2014 Petr Pisar - 4:5.20.1-311 +- Remove bundled perl-Devel-PPPort (bug #1143999) +- Remove bundled perl-B-Debug (bug #1142952) +- Remove bundled perl-ExtUtils-CBuilder (bug #1144033) +- Remove bundled perl-ExtUtils-Install (bug #1144068) + +* Thu Oct 23 2014 Petr Pisar - 4:5.20.1-310 +- Move all Module-CoreList files into perl-Module-CoreList +- Sub-package corelist(1) into perl-Module-CoreList-tools (bug #1142757) +- Remove bundled perl-Module-CoreList, and perl-Module-CoreList-tools + (bug #1142757) +- Sub-package Devel-PPPort (bug #1143999) +- Sub-package B-Debug (bug #1142952) +- Use native version for perl-ExtUtils-CBuilder +- Specify all dependencies for perl-ExtUtils-Install (bug #1144068) +- Require perl-ExtUtils-ParseXS by perl-ExtUtils-MakeMaker because of xsubpp + +* Tue Sep 16 2014 Petr Šabata - 4:5.20.1-309 +- Provide 5.20.0 MODULE_COMPAT + +* Mon Sep 15 2014 Jitka Plesnikova - 4:5.20.1-308 +- 5.20.1 bump (see + for release notes) +- Sub-package perl-ExtUtils-Miniperl (bug #1141222) + +* Wed Sep 10 2014 Petr Pisar - 4:5.20.0-307 +- Specify all dependencies for perl-CPAN (bug #1090112) +- Disable non-core modules at perl-CPAN when bootstrapping +- Remove bundled perl-CPAN (bug #1090112) + +* Sun Sep 07 2014 Jitka Plesnikova - 4:5.20.0-306 +- Stop providing old perl(MODULE_COMPAT_5.18.*) + +* Mon Aug 18 2014 Jitka Plesnikova - 4:5.20.0-305 +- Update to Perl 5.20.0 +- Clean patches, not needed with new version +- Update patches to work with new version +- Update version of sub-packages, remove the deleted sub-packages +- Sub-package perl-IO-Socket-IP, perl-experimental +- Disable BR perl(local::lib) for cpan tool when bootstraping + +* Sun Aug 17 2014 Fedora Release Engineering - 4:5.18.2-304 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Aug 08 2014 Petr Pisar - 4:5.18.2-303 +- Declare dependencies for cpan tool (bug #1122498) +- Use stronger algorithm needed for FIPS in t/op/crypt.t (bug #1128032) +- Make *DBM_File desctructors thread-safe (bug #1107543) + +* Tue Jul 29 2014 Jitka Plesnikova - 4:5.18.2-302 +- Sub-package perl-Term-ANSIColor and remove it (bug #1121924) + +* Fri Jun 27 2014 Petr Pisar - 4:5.18.2-301 +- Remove bundled perl-App-a2p, perl-App-find2perl, perl-App-s2p, and + perl-Package-Constants +- Correct perl-App-s2p license to ((GPL+ or Artistic) and App-s2p) + +* Thu Jun 19 2014 Petr Pisar - 4:5.18.2-300 +- Sub-package perl-App-find2perl (bug #1111196) +- Sub-package perl-App-a2p (bug #1111232) +- Sub-package perl-App-s2p (bug #1111242) + +* Sat Jun 07 2014 Fedora Release Engineering - 4:5.18.2-299 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu Apr 10 2014 Petr Pisar - 4:5.18.2-298 +- Pass -fwrapv to stricter GCC 4.9 (bug #1082957) + +* Fri Apr 04 2014 Petr Pisar - 4:5.18.2-297 +- Fix t/comp/parser.t not to load system modules (bug #1084399) + +* Mon Feb 03 2014 Petr Pisar - 4:5.18.2-296 +- Move macro files into %%{_rpmconfigdir}/macros.d + +* Wed Jan 29 2014 Petr Pisar - 4:5.18.2-295 +- Provide perl(CPAN::Meta::Requirements) with six decimal places + +* Tue Jan 21 2014 Petr Pisar - 4:5.18.2-294 +- Drop perl-Test-Simple-tests package is it is not delivered by dual-lived + version +- Hide dual-lived perl-Object-Accessor + +* Tue Jan 14 2014 Petr Pisar - 4:5.18.2-293 +- Use a macro to cover all 64-bit PowerPC architectures (bug #1052709) + +* Tue Jan 14 2014 Petr Pisar - 4:5.18.2-292 +- Use upstream patch to fix a test failure in perl5db.t when TERM=vt100 + +* Tue Dec 10 2013 Jitka Plesnikova - 4:5.18.2-291 +- 5.18.2 bump (see + for release notes) + +* Mon Dec 02 2013 Petr Pisar - 4:5.18.1-290 +- Document Math::BigInt::CalcEmu requires Math::BigInt (bug #959096) + +* Tue Oct 22 2013 Petr Pisar - 4:5.18.1-289 +- perl_default_filter macro does not need to filter private libraries from + provides (bug #1020809) +- perl_default_filter anchors the filter regular expressions +- perl_default_filter appends the filters instead of redefining them + +* Mon Sep 09 2013 Jitka Plesnikova - 4:5.18.1-288 +- Fix rules for parsing numeric escapes in regexes (bug #978233) +- Fix crash with \&$glob_copy (bug #989486) +- Fix coreamp.t's rand test (bug #970567) +- Reap child in case where exception has been thrown (bug #988805) +- Fix using regexes with multiple code blocks (bug #982131) + +* Tue Aug 13 2013 Jitka Plesnikova - 4:5.18.1-287 +- 5.18.1 bump (see + for release notes) +- Disable macro %%{rebuild_from_scratch} +- Fix regex seqfault 5.18 regression (bug #989921) +- Fixed interpolating downgraded variables into upgraded (bug #970913) +- SvTRUE returns correct value (bug #967463) +- Fixed doc command in perl debugger (bug #967461) +- Fixed unaligned access in slab allocator (bug #964950) + +* Sat Aug 03 2013 Fedora Release Engineering - 4:5.18.0-286 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jul 15 2013 Petr Pisar - 4:5.18.0-285 +- Stop providing old perl(MODULE_COMPAT_5.16.*) + +* Fri Jul 12 2013 Petr Pisar - 4:5.18.0-284 +- Perl 5.18 rebuild + +* Tue Jul 09 2013 Petr Pisar - 4:5.18.0-283 +- Define SONAME for libperl.so and move the libary into standard path +- Link XS modules to libperl.so on Linux (bug #960048) + +* Mon Jul 08 2013 Petr Pisar - 4:5.18.0-282 +- Do not load system Term::ReadLine::Gnu while running tests +- Disable ornaments on perl5db AutoTrace tests + +* Thu Jul 04 2013 Jitka Plesnikova - 4:5.18.0-281 +- Update to Perl 5.18.0 +- Clean patches, not needed with new version + +* 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 + + diff --git a/perl.stp b/perl.stp new file mode 100644 index 0000000..dbc51a8 --- /dev/null +++ b/perl.stp @@ -0,0 +1,71 @@ +/* + 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) + +} + + +/* + Fires when Perl has successfully loaded an individual file. + */ + +probe perl.loaded.file = process("LIBRARY_PATH").mark("loaded__file") +{ + filename = user_string($arg1) + +} + + +/* + Fires when Perl is about to load an individual file. + */ + +probe perl.loading.file = process("LIBRARY_PATH").mark("loading__file") +{ + filename = user_string($arg1) + +} + + +/* + Traces the execution of each opcode in the Perl runloop. + */ + +probe perl.op.entry = process("LIBRARY_PATH").mark("op__entry") +{ + opname = user_string($arg1) +} diff --git a/sources b/sources new file mode 100644 index 0000000..d9c37ac --- /dev/null +++ b/sources @@ -0,0 +1,2 @@ +SHA512 (perl-5.30.1-study_chunk-avoid-mutating-regexp-program-within-GOS.patch) = 40053baf5241860a115d53e6b8af1db3b2a70ddb87605ec38d581960b7dde946440a094d651d01bc4ed6e7e0f03b1264d15ff2c6414a8030d06c208530738ac9 +SHA512 (perl-5.30.1.tar.xz) = 8f3339efdcd1bb58fa58a90042181bef86bb09e4598c737e446ed43b56d2ab23d67eced5e36fb08fc61e076acfdb572a12e46a1277f5299a3f412054df0b88bf