From 8b8c882ce76a18decb2aea175d5ca6d8f77e0cab Mon Sep 17 00:00:00 2001 From: zyppe <210hcl@gmail.com> Date: Mon, 5 Feb 2024 14:47:08 +0800 Subject: [PATCH] Initialize for perl --- .gitignore | 1 + .perl.metadata | 1 + README.macros | 42 + baselibs.conf | 6 + macros.perl | 138 ++++ perl-5.18.2-overflow.diff | 13 + perl-5.22.0_wrong_rpm_provides.diff | 24 + perl-5.26.0.dif | 511 ++++++++++++ perl-HiRes.t-timeout.diff | 44 + ...Stabilize-Socket-VERSION-comparisons.patch | 56 ++ perl-archive-tar-dirtrav.diff | 27 + perl-cpan_verify_cert.diff | 10 + perl-extended-charclass-assert.diff | 234 ++++++ perl-file_path_rmtree_fchmod.diff | 134 +++ perl-fix2020.patch | 102 +++ perl-incfix.diff | 42 + perl-netcmdutf8.diff | 26 + perl-nroff.diff | 19 + perl-reg-node-overrun.diff | Bin 0 -> 1428 bytes perl-regcomp-strchr-memchr.diff | 35 + perl-regexp-refoverflow.diff | 13 + perl-reproducible.patch | 24 + perl-rpmlintrc | 5 + perl-saltbits.diff | 11 + perl-saverecontext.diff | 28 + perl-setenv-integer-wrap.diff | 147 ++++ perl-study.diff | 303 +++++++ perl.changes | 781 ++++++++++++++++++ perl.spec | 483 +++++++++++ perl_skip_flaky_tests_powerpc.patch | 130 +++ posix-sigaction.patch | 15 + skip_time_hires.patch | 12 + 32 files changed, 3417 insertions(+) create mode 100644 .gitignore create mode 100644 .perl.metadata create mode 100644 README.macros create mode 100644 baselibs.conf create mode 100644 macros.perl create mode 100644 perl-5.18.2-overflow.diff create mode 100644 perl-5.22.0_wrong_rpm_provides.diff create mode 100644 perl-5.26.0.dif create mode 100644 perl-HiRes.t-timeout.diff create mode 100644 perl-Stabilize-Socket-VERSION-comparisons.patch create mode 100644 perl-archive-tar-dirtrav.diff create mode 100644 perl-cpan_verify_cert.diff create mode 100644 perl-extended-charclass-assert.diff create mode 100644 perl-file_path_rmtree_fchmod.diff create mode 100644 perl-fix2020.patch create mode 100644 perl-incfix.diff create mode 100644 perl-netcmdutf8.diff create mode 100644 perl-nroff.diff create mode 100644 perl-reg-node-overrun.diff create mode 100644 perl-regcomp-strchr-memchr.diff create mode 100644 perl-regexp-refoverflow.diff create mode 100644 perl-reproducible.patch create mode 100644 perl-rpmlintrc create mode 100644 perl-saltbits.diff create mode 100644 perl-saverecontext.diff create mode 100644 perl-setenv-integer-wrap.diff create mode 100644 perl-study.diff create mode 100644 perl.changes create mode 100644 perl.spec create mode 100644 perl_skip_flaky_tests_powerpc.patch create mode 100644 posix-sigaction.patch create mode 100644 skip_time_hires.patch diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0c8b71d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +perl-5.26.1.tar.xz diff --git a/.perl.metadata b/.perl.metadata new file mode 100644 index 0000000..f87e373 --- /dev/null +++ b/.perl.metadata @@ -0,0 +1 @@ +78e11866a22352648dce1b9d1e5ed0aa15a19af3b693c678eddc764b1e9e76ad perl-5.26.1.tar.xz diff --git a/README.macros b/README.macros new file mode 100644 index 0000000..4a46a76 --- /dev/null +++ b/README.macros @@ -0,0 +1,42 @@ +README for perl-macros + +Author: Christian Wittmer + + +%perl_gen_filelist generates an rpmlint happy filelist of your installed files + +In most cases you only need to check the %doc part +sometimes there is a "Changes" or "ChangeLog",.... + +Requirements for %perl_gen_filelist +You have to define following parts inside your spec file + +Example: + +BuildRequires: perl-macros + +%install +%perl_make_install +%perl_process_packlist +%perl_gen_filelist + +%files -f %{name}.files +%defattr(-,root,root) +%doc Changes README + + +And here an Example of the generated filelist: + +%dir /usr/lib/perl5/vendor_perl/5.8.8/Algorithm +/usr/lib/perl5/vendor_perl/5.8.8/Algorithm/DiffOld.pm +/usr/lib/perl5/vendor_perl/5.8.8/Algorithm/diff.pl +/usr/lib/perl5/vendor_perl/5.8.8/Algorithm/Diff.pm +/usr/lib/perl5/vendor_perl/5.8.8/Algorithm/diffnew.pl +/usr/lib/perl5/vendor_perl/5.8.8/Algorithm/cdiff.pl +/usr/lib/perl5/vendor_perl/5.8.8/Algorithm/htmldiff.pl +%dir /usr/lib/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/Algorithm +%dir /usr/lib/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/Algorithm/Diff +/usr/lib/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/Algorithm/Diff/.packlist +/usr/share/man/man?/* +/var/adm/perl-modules/perl-Algorithm-Diff + diff --git a/baselibs.conf b/baselibs.conf new file mode 100644 index 0000000..02e8e15 --- /dev/null +++ b/baselibs.conf @@ -0,0 +1,6 @@ +perl + +lib(64)?/perl5/.*-linux-thread-multi.* +perl-base + +lib(64)?/perl5/.*-linux-thread-multi.* +perl-core-DB_File + +lib(64)?/perl5/.*-linux-thread-multi.* diff --git a/macros.perl b/macros.perl new file mode 100644 index 0000000..c3ba490 --- /dev/null +++ b/macros.perl @@ -0,0 +1,138 @@ +# macros.perl file +# macros for perl module building. handle with care. + +# Useful perl macros (from Artur Frysiak ) +# +%perl_sitearch %(eval "`%{__perl} -V:installsitearch`"; echo $installsitearch) +%perl_sitelib %(eval "`%{__perl} -V:installsitelib`"; echo $installsitelib) +%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) + +# More useful perl macros (from Raul Dias ) +# +%perl_version %(perl -V:version | sed "s!.*='!!;s!'.*!!") +%perl_man1ext %(perl -V:man1ext | sed "s!.*='!!;s!'.*!!") +%perl_man3ext %(perl -V:man3ext | sed "s!.*='!!;s!'.*!!") +%perl_man1dir %(perl -V:man1dir | sed "s!.*='!!;s!'.*!!") +%perl_man3dir %(perl -V:man3dir | sed "s!.*='!!;s!'.*!!") +%perl_installman1dir %(perl -V:installman1dir | sed "s!.*='!!;s!'.*!!") +%perl_installman3dir %(perl -V:installman3dir | sed "s!.*='!!;s!'.*!!") +%perl_installarchlib %(perl -V:installarchlib | sed "s!.*='!!;s!'.*!!") +%perl_prefix %{buildroot} + +# Macro to encapsulate perl requires (empty for fedora) +# we keep the complicated form even here to easy sync the other macros with +# perl-macros package +# +%perl_requires() \ +%if 0%{?suse_version} > 0 \ +Requires: perl(:MODULE_COMPAT_%{perl_version}) \ +%endif + +%libperl_requires() \ +%if 0%{?suse_version} > 0 \ +Requires: perl = %{perl_version} \ +%endif + +# suse specific macros +# +%perl_make_install make DESTDIR=$RPM_BUILD_ROOT install_vendor +%perl_process_packlist(n:) \ + if test -n "$RPM_BUILD_ROOT" -a -d $RPM_BUILD_ROOT%perl_vendorarch/auto; then \ + find $RPM_BUILD_ROOT%perl_vendorarch/auto -name .packlist -print0 | xargs -0 -r rm \ + if [ %{_target_cpu} == noarch ]; then \ + find $RPM_BUILD_ROOT%perl_vendorarch/auto -depth -type d -print0 | xargs -0 -r rmdir \ + fi \ + fi \ + rm -f $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod \ + %nil + +# macro: perl_gen_filelist (from Christian ) +# do the rpmlint happy filelist generation +# with %dir in front of directories +# +%perl_gen_filelist(n)\ +FILES=%{name}.files\ +# fgen_dir func\ +# IN: dir\ +fgen_dir(){\ +%{__cat} >> $FILES << EOF\ +%dir ${1}\ +EOF\ +}\ +# fgen_file func\ +# IN: file\ +fgen_file(){\ +%{__cat} >> $FILES << EOF\ +${1}\ +EOF\ +}\ +# check for files in %{perl_vendorlib}\ +RES=`find ${RPM_BUILD_ROOT}%{perl_vendorlib} -maxdepth 1 -type f`\ +if [ -n "$RES" ]; then\ + for file in $RES; do\ + fgen_file "%{perl_vendorlib}/$(basename ${file})"\ + done\ +fi\ +\ +# get all dirs into array\ +base_dir="${RPM_BUILD_ROOT}%{perl_vendorlib}/"\ +for dir in `find ${base_dir} -type d | sort`; do\ + if [ "$dir" = "${base_dir}" ]; then\ + continue\ + else\ + el=`echo $dir | %{__awk} -F"${base_dir}" '{print $2}'`\ + all_dir=(${all_dir[@]} $el)\ + fi\ +done\ +\ +# build filelist\ +for i in ${all_dir[@]}; do\ + # do not add "dir {perl_vendorlib/arch}/auto", included in perl package\ + if [ "${i}" = "auto" ]; then\ + continue\ + fi\ + if [ "%{perl_vendorlib}/${i}" = "%{perl_vendorarch}/auto" ]; then\ + continue\ + else\ + if [ -d ${base_dir}/${i} ]; then\ + RES=`find "${base_dir}/${i}" -maxdepth 1 -type f`\ + if [ -n "$RES" ]; then\ + fgen_dir "%{perl_vendorlib}/${i}"\ + for file in $RES; do\ + fgen_file "%{perl_vendorlib}/${i}/$(basename ${file})"\ + done\ + else\ + fgen_dir "%{perl_vendorlib}/${i}"\ + fi\ + fi\ + fi\ +done\ +# add man pages\ +# if exist :)\ +if [ -d "${RPM_BUILD_ROOT}%{_mandir}" ]; then\ +for file in `cd "${RPM_BUILD_ROOT}%{_mandir}" && find . -type f -name "*3pm*"`; do \ + if test -e "%{_mandir}/$file" -o -e "%{_mandir}/$file.gz"; then \ + mv ${RPM_BUILD_ROOT}%{_mandir}/$file ${RPM_BUILD_ROOT}%{_mandir}/${file/3pm/3pmc} \ + fi \ +done \ +fgen_file "%{_mandir}/man?/*"\ +fi\ +\ +# add packlist file\ +# generated fom perllocal.pod\ +if [ -f "${RPM_BUILD_ROOT}/var/adm/perl-modules/%{name}" ]; then\ + fgen_file "/var/adm/perl-modules/%{name}"\ +fi\ +\ +# check for files in %{_bindir}\ +if [ -d ${RPM_BUILD_ROOT}%{_bindir} ]; then\ + RES=`find "${RPM_BUILD_ROOT}%{_bindir}" -maxdepth 1 -type f`\ + if [ -n "$RES" ]; then\ + for file in $RES; do\ + fgen_file "%{_bindir}/$(basename ${file})"\ + done\ + fi\ +fi diff --git a/perl-5.18.2-overflow.diff b/perl-5.18.2-overflow.diff new file mode 100644 index 0000000..25444e1 --- /dev/null +++ b/perl-5.18.2-overflow.diff @@ -0,0 +1,13 @@ +Index: sv.c +=================================================================== +--- sv.c.orig ++++ sv.c +@@ -2153,7 +2153,7 @@ S_sv_2iuv_common(pTHX_ SV *const sv) + #ifndef NV_PRESERVES_UV + && SvIVX(sv) != IV_MIN /* avoid negating IV_MIN below */ + && (((UV)1 << NV_PRESERVES_UV_BITS) > +- (UV)(SvIVX(sv) > 0 ? SvIVX(sv) : -SvIVX(sv))) ++ (UV)(SvIVX(sv) > 0 ? (UV)SvIVX(sv) : -(UV)SvIVX(sv))) + /* Don't flag it as "accurately an integer" if the number + came from a (by definition imprecise) NV operation, and + we're outside the range of NV integer precision */ diff --git a/perl-5.22.0_wrong_rpm_provides.diff b/perl-5.22.0_wrong_rpm_provides.diff new file mode 100644 index 0000000..8ccb487 --- /dev/null +++ b/perl-5.22.0_wrong_rpm_provides.diff @@ -0,0 +1,24 @@ +--- ./cpan/Math-BigInt/lib/Math/BigInt/CalcEmu.pm.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./cpan/Math-BigInt/lib/Math/BigInt/CalcEmu.pm 2017-08-30 12:16:04.561183753 +0000 +@@ -6,7 +6,8 @@ use warnings; + + our $VERSION = '1.999806'; + +-package Math::BigInt; ++package Math::BigInt # line break to prevent wrong rpm provides ++; + + # See SYNOPSIS below. + +--- ./lib/sigtrap.pm.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./lib/sigtrap.pm 2017-08-30 12:16:04.561183753 +0000 +@@ -80,7 +80,8 @@ sub handler_die { + } + + sub handler_traceback { +- package DB; # To get subroutine args. ++ package DB # line break to prevent wrong rpm provides ++ ; # To get subroutine args. + $SIG{'ABRT'} = DEFAULT; + kill 'ABRT', $$ if $panic++; + syswrite(STDERR, 'Caught a SIG', 12); diff --git a/perl-5.26.0.dif b/perl-5.26.0.dif new file mode 100644 index 0000000..b1970cf --- /dev/null +++ b/perl-5.26.0.dif @@ -0,0 +1,511 @@ +--- ./Configure.orig 2017-05-30 09:57:56.000000000 +0000 ++++ ./Configure 2017-08-30 12:05:40.255184858 +0000 +@@ -117,7 +117,7 @@ paths="$paths /usr/5bin /etc /usr/gnu/bi + paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin" + paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb" + paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin" +-paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib" ++paths="$paths /etc /usr/lib /usr/lib64 /usr/ucblib /lib /usr/ccs/lib" + paths="$paths /sbin /usr/sbin /usr/libexec" + paths="$paths /system/gnu_library/bin" + +@@ -1464,7 +1464,7 @@ loclibpth="/usr/local/lib /opt/local/lib + loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib" + + : general looking path for locating libraries +-glibpth="/lib /usr/lib $xlibpth" ++glibpth="/lib /usr/lib /lib64 /usr/lib64 $xlibpth" + glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib" + test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth" + test -f /shlib/libc.so && glibpth="/shlib $glibpth" +@@ -2559,7 +2559,7 @@ uname + zip + " + pth=`echo $PATH | sed -e "s/$p_/ /g"` +-pth="$pth $sysroot/lib $sysroot/usr/lib" ++pth="$pth $sysroot/lib $sysroot/usr/lib $sysroot/lib64 $sysroot/usr/lib64" + for file in $loclist; do + eval xxx=\$$file + case "$xxx" in +@@ -11963,7 +11963,7 @@ void xxx(int n, ...) + va_start(args, n); + exit((unsigned long)vsprintf(buf,"%s",args) > 10L); + } +-int main() { xxx(1, "foo"); } ++int main() { xxx(1, "foo"); return 0; } + + #else /* I_VARARGS */ + +@@ -11975,7 +11975,7 @@ va_dcl + va_start(args); + exit((unsigned long)vsprintf(buf,"%s",args) > 10L); + } +-int main() { xxx("foo"); } ++int main() { xxx("foo"); return 0; } + + #endif + +@@ -20516,14 +20516,20 @@ int main(int argc, char *argv[]) + } + EOCP + set try ++ # this is really stupid, but we have to link in the -ldb to have ++ # the above program succeed ++ _old_libs="$libs" ++ libs="$libs -ldb" + if eval $compile_ok && $run ./try; then + echo 'Looks OK.' >&4 ++ libs="$_old_libs" + set `$run ./try 1` + db_version_major=$1 + db_version_minor=$2 + db_version_patch=$3 + else + echo "I can't use Berkeley DB with your . I'll disable Berkeley DB." >&4 ++ libs="$_old_libs" + i_db=$undef + case " $libs " in + *"-ldb "*) +@@ -20564,7 +20570,7 @@ int main() + } + #endif + EOCP +- if $cc $ccflags -c try.c >try.out 2>&1 ; then ++ if $cc $ccflags -c try.c -ldb >try.out 2>&1 ; then + if $contains warning try.out >>/dev/null 2>&1 ; then + db_hashtype='int' + else +@@ -20607,7 +20613,7 @@ int main() + } + #endif + EOCP +- if $cc $ccflags -c try.c >try.out 2>&1 ; then ++ if $cc $ccflags -c try.c -ldb >try.out 2>&1 ; then + if $contains warning try.out >>/dev/null 2>&1 ; then + db_prefixtype='int' + else +@@ -25304,7 +25310,7 @@ passcat='$passcat' + patchlevel='$patchlevel' + path_sep='$path_sep' + perl5='$perl5' +-perl='$perl' ++perl='perl' + perl_patchlevel='$perl_patchlevel' + perl_static_inline='$perl_static_inline' + perladmin='$perladmin' +--- ./SuSE/SuSEconfig.perl.orig 2017-08-30 12:05:40.265184858 +0000 ++++ ./SuSE/SuSEconfig.perl 2017-08-30 12:05:40.265184858 +0000 +@@ -0,0 +1,76 @@ ++#! /bin/bash ++# ++# Copyright (c) 1996 S.u.S.E. Gmbh Fuerth, Germany. All rights reserved. ++# ++# Author: Burchard Steinbild , 1996 ++# Martin Scherbaum , 5/1997 ++# Ruediger Oertel , 7/1998 ++ ++# ++# Variables in /etc/sysconfig/suseconfig used by this script are: ++# CREATE_PERLLOCAL_POD ++# ++# This script calls the scripts: ++# /usr/sbin/perllocal.suse which comes from the package perl ++# ++ ++# ++# check if we are started as root ++# only one of UID and USER must be set correctly ++# ++if test "$UID" != 0 -a "$USER" != root; then ++ echo "You must be root to start $0." ++ exit 1 ++fi ++ ++# ++# SuSEconfig sometimes sets the variable CHECK_NEWPACKAGE. If it is set ++# to false, we don't have to do anything. ++# ++test "$CHECK_NEWPACKAGE" = false && exit 0 ++ ++test -f /etc/sysconfig/suseconfig || { echo "No /etc/sysconfig/suseconfig found." && exit 1 ; } ++. /etc/sysconfig/suseconfig ++ ++# this skript only works in a running system. ++ ++test -n "$ROOT" && exit 0 ++ ++perl -e 'exit 0' 2>/dev/null || { echo "Perl not found." && exit 0 ; } ++ ++# ++# see if we may do any work ++# ++test -n "$CREATE_PERLLOCAL_POD" -a "$CREATE_PERLLOCAL_POD" = "yes" \ ++ || { echo "disabled in sysconfig/suseconfig" && exit 1 ; } ++ ++# ++# check if anything to add ++# ++PERLLOCAL_PATH=`perl -V:installarchlib | sed -e "s/.*='\(.*\)'.*/\1/"` ++ ++NEEDED="false" ++ ++if test -d /var/adm/perl-modules ; then ++ if test /var/adm/perl-modules -nt $PERLLOCAL_PATH/perllocal.pod ; then ++ NEEDED="true" ++ elif test ! -f $PERLLOCAL_PATH/perllocal.pod ; then ++ NEEDED="true" ++ fi ++fi ++ ++# ++# now call the working script ++# ++if "$NEEDED" = "true" ; then ++ if test -x /usr/lib/perl5/perllocal.SuSE ; then ++ /usr/lib/perl5/perllocal.SuSE ++ pod2man $PERLLOCAL_PATH/perllocal.pod | gzip > /usr/share/man/man3/perllocal.3pm.gz ++ else ++ echo "SuSEconfig.perl: /usr/lib/perl5/perllocal.SuSE not found!" ++ fi ++fi ++ ++# ++# end of file SuSEconfig.perl ++# +--- ./SuSE/perllocal.SuSE.orig 2017-08-30 12:05:40.264184858 +0000 ++++ ./SuSE/perllocal.SuSE 2017-08-30 12:05:40.264184858 +0000 +@@ -0,0 +1,84 @@ ++#!/usr/bin/perl ++# Copyright (c) 1998 S.u.S.E. Gmbh Fuerth, Germany. All rights reserved. ++# ++# Author: Ruediger Oertel , 1998 ++# ++ ++use Config; ++ ++sub ReadFile { ++ local (*IF,*modules) = @_; ++ ++ while() { ++ chomp ($_); ++ next if (/^$/); ++ if (/^=head2.*$/) { ++ ($front,$rear) = split (': ',$_); ++ $front =~ s/^=head2\s*//; ++ $modules{$rear} = "$front"; ++ } elsif (/^=over [0-9]*$/) { ++ ($dummy,$num) = split ('\s',$_); ++ $curnum = 0; ++ } elsif (/^C<.*:.*>$/) { ++ $entry = $_; ++ $curnum++; ++ $modules{$rear} .= "\0$entry"; ++ } elsif (/^=back$/) { ++ ; ++ } elsif (/^=item \*$/) { ++ ; ++ } else { ++ print "SuSEconfig.perl: parsing perllocal:\n"; ++ print "ignoring line: $_\n"; ++ } ++ } ++ return %modules; ++} ++ ++local (%allmodules); ++ ++if (open (IF, "<$Config{'installarchlib'}/perllocal.pod")) { ++ %allmodules = ReadFile(*IF,*allmodules); ++} ++close (IF); ++ ++opendir (DIR, "/var/adm/perl-modules"); ++while ($dirent = readdir(DIR)) { ++ next if ($dirent =~ /^\./); ++ open (IF , "/var/adm/perl-modules/$dirent"); ++ %allmodules = ReadFile(*IF,*allmodules); ++ close (IF); ++} ++closedir (DIR); ++ ++ ++if (open (OF, ">$Config{'installarchlib'}/perllocal.pod")) { ++ foreach $key (keys(%allmodules)) { ++ $name = $key; ++ $name =~ s/^.*L\$//; ++ $name =~ s/::/\//; ++ @entries = split ('\0',$allmodules{$key}); ++ $ipath = $entries[1]; ++ $ipath =~ s/^.*\:\s//; ++ $ipath =~ s/>$//; ++ ++ # test if the module is really there, else skip ++ if ( -d "$ipath/$Config{'archname'}/auto/$name" || ++ -d "$Config{'installarchlib'}/auto/$name" ) { ++ $num = $#entries; ++ print OF "=head2 ",shift(@entries),": $key\n\n"; ++ print OF "=over $num\n\n"; ++ while ($_ = shift(@entries)) { ++ print OF "=item *\n\n"; ++ print OF "$_\n\n"; ++ } ++ print OF "=back\n\n"; ++ } ++ } ++ close (OF); ++} else { ++ print "SuSEconfig.perl: Can't write to file $Config{'installarchlib'}/perllocal.pod !\n\n"; ++} ++ +--- ./SuSE/sysconfig.suseconfig-perl.orig 2017-08-30 12:05:40.265184858 +0000 ++++ ./SuSE/sysconfig.suseconfig-perl 2017-08-30 12:05:40.265184858 +0000 +@@ -0,0 +1,8 @@ ++## Path: System/SuSEconfig ++## Type: yesno ++## Default: yes ++## Config: perl ++# ++# May SuSEconfig modify your perllocal.pod? (yes/no) ++# ++CREATE_PERLLOCAL_POD="yes" +--- ./cpan/Compress-Raw-Zlib/config.in.orig 2017-02-28 12:36:42.000000000 +0000 ++++ ./cpan/Compress-Raw-Zlib/config.in 2017-08-30 12:05:40.256184858 +0000 +@@ -16,9 +16,9 @@ + # Setting the Gzip OS Code + # + +-BUILD_ZLIB = True +-INCLUDE = ./zlib-src +-LIB = ./zlib-src ++BUILD_ZLIB = False ++INCLUDE = /usr/include ++LIB = /usr/lib + + OLD_ZLIB = False + GZIP_OS_CODE = AUTO_DETECT +--- ./cpan/Encode/bin/enc2xs.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./cpan/Encode/bin/enc2xs 2017-08-30 12:05:40.257184858 +0000 +@@ -1094,7 +1094,7 @@ sub make_configlocal_pm { + $LocalMod{$enc} ||= $mod; + } + }; +- File::Find::find({wanted => $wanted}, @INC); ++ File::Find::find({wanted => $wanted}, grep {$_ ne '.'} @INC); + $_ModLines = ""; + for my $enc ( sort keys %LocalMod ) { + $_ModLines .= +--- ./cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm 2017-08-30 12:05:40.257184858 +0000 +@@ -207,8 +207,11 @@ foreach my $key (sort(keys(%{$self->{dat + { + if (! -e $key) + { +- push(@missing, $key); +- delete($self->{data}{$key}) if ($remove); ++ if (($key !~ m!/man/!) || ! -e "$key.gz") ++ { ++ push(@missing, $key); ++ delete($self->{data}{$key}) if ($remove); ++ } + } + } + return(@missing); +--- ./cpan/File-Temp/lib/File/Temp.pm.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./cpan/File-Temp/lib/File/Temp.pm 2017-08-30 12:05:40.258184858 +0000 +@@ -16,7 +16,7 @@ use Fcntl 1.03; + use IO::Seekable; # For SEEK_* + use Errno; + use Scalar::Util 'refaddr'; +-require VMS::Stdio if $^O eq 'VMS'; ++#require VMS::Stdio if $^O eq 'VMS'; + + # pre-emptively load Carp::Heavy. If we don't when we run out of file + # handles and attempt to call croak() we get an error message telling +--- ./cpan/Sys-Syslog/t/syslog.t.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./cpan/Sys-Syslog/t/syslog.t 2017-08-30 12:05:40.259184858 +0000 +@@ -221,6 +221,7 @@ SKIP: { + } + } + else { ++ $r = 1 unless -e '/dev/log'; + ok( $r, "setlogsock() should return true: '$r'" ); + } + +--- ./cpan/libnet/lib/Net/Config.pm.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./cpan/libnet/lib/Net/Config.pm 2017-08-30 12:05:40.259184858 +0000 +@@ -53,7 +53,7 @@ our %NetConfig = ( + { + ## no critic (BuiltinFunctions::ProhibitStringyEval) + $^O eq 'MacOS' and eval < + $self->{CCFLAGS} = $Config{ccflags} . ' -I/usr/include/libelf' + if -f "/usr/include/libelf/nlist.h"; ++# Some silly modules like mod_perl use DynaLoader.a in a shared ++# module, so add cccdlflags if we're going for a shared libperl ++$self->{CCFLAGS} = ($self->{CCFLAGS} || $Config{ccflags}) . " $Config{cccdlflags}" if $Config{'useshrplib'} eq 'true'; + 1; +--- ./ext/ODBM_File/Makefile.PL.orig 2017-02-28 12:36:42.000000000 +0000 ++++ ./ext/ODBM_File/Makefile.PL 2017-08-30 12:05:40.260184858 +0000 +@@ -1,7 +1,7 @@ + use ExtUtils::MakeMaker; + WriteMakefile( + NAME => 'ODBM_File', +- LIBS => ["-ldbm -lucb"], ++ LIBS => ["-lgdbm -lucb"], + XSPROTOARG => '-noprototypes', # XXX remove later? + VERSION_FROM => 'ODBM_File.pm', + ); +--- ./ext/ODBM_File/hints/linux.pl.orig 2017-02-28 12:36:42.000000000 +0000 ++++ ./ext/ODBM_File/hints/linux.pl 2017-08-30 12:05:40.259184858 +0000 +@@ -1,5 +1,5 @@ + # uses GDBM dbm compatibility feature - at least on SuSE 8.0 +-$self->{LIBS} = ['-lgdbm']; ++$self->{LIBS} = ['-lgdbm -lgdbm_compat']; + + # Debian/Ubuntu have libgdbm_compat.so but not this file, + # so linking may fail +--- ./hints/linux.sh.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./hints/linux.sh 2017-08-30 12:09:43.999184426 +0000 +@@ -53,7 +53,7 @@ ignore_versioned_solibs='y' + # BSD compatibility library no longer needed + # 'kaffe' has a /usr/lib/libnet.so which is not at all relevant for perl. + # bind causes issues with several reentrant functions +-set `echo X "$libswanted "| sed -e 's/ bsd / /' -e 's/ net / /' -e 's/ bind / /'` ++set `echo X "$libswanted "| sed -e 's/ bsd / /' -e 's/ net / /' -e 's/ bind / /' -e 's/ db / /' -e 's/ gdbm / /' -e 's/ ndbm / /'` + shift + libswanted="$*" + +@@ -64,6 +64,20 @@ if echo " $libswanted " | grep -q ' gdbm + libswanted="$libswanted gdbm_compat" + fi + ++if test -e /lib64/libc.so.6 ; then ++ libc=`ls -l /lib64/libc.so.6 | awk '{print $NF}'` ++ libc=/lib64/$libc ++ glibpth='/lib64 /usr/lib64 /usr/local/lib64' ++ libspath='/usr/local/lib64 /lib64 /usr/lib64' ++ loclibpth='/usr/local/lib64' ++ lddlflags='-shared -L/usr/local/lib64' ++ ldflags=' -L/usr/local/lib64' ++ libs='-lm -ldl -lcrypt' ++elif test -L /lib/libc.so.6; then ++ libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` ++ libc=/lib/$libc ++fi ++ + # Configure may fail to find lstat() since it's a static/inline + # function in . + d_lstat=define +@@ -147,6 +161,7 @@ case "$optimize" in + esac + ;; + esac ++ optimize="$optimize --pipe" + ;; + esac + +@@ -221,6 +236,33 @@ case "$libc" in + ;; + esac + ++man1dir=/usr/share/man/man1 ++man3dir=/usr/share/man/man3 ++man3ext=3pm ++ ++case `uname -m` in ++i?86) archname='i586-linux';; ++*) archname=`uname -m`-linux;; ++esac ++ ++case $archname in ++sparc64-linux) glibpth="/lib64 /usr/lib64";; ++esac ++ ++cf_email='none' ++#libs='-lgdbm -ldb -ldl -lm -lc' ++#libs='-ldl -lm -lc' ++ ++usedl='true' ++dlsrc='dl_dlopen.xs' ++d_dosuid='undef' ++d_bincompat3='y' ++ ++# We don't want to add /usr/local/include and /usr/local/lib to the search ++# paths, they are already searched by default. ++locincpth= ++loclibpth= ++ + if ${sh:-/bin/sh} -c exit; then + echo '' + echo 'You appear to have a working bash. Good.' +@@ -268,6 +310,9 @@ else + echo "Couldn't find tcsh. Csh-based globbing might be broken." + fi + fi ++csh='' ++d_csh='undef' ++full_csh='' + + # Shimpei Yamashita + # Message-Id: <33EF1634.B36B6500@pobox.com> +@@ -378,6 +423,8 @@ $define|true|[yY]*) + d_localtime_r_proto="$define" + d_random_r_proto="$define" + ++ test -e /lib64/libc.so.6 && libs='-lm -ldl -lcrypt -lpthread' ++ + ;; + esac + EOCBU +--- ./installperl.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./installperl 2017-08-30 12:05:40.261184858 +0000 +@@ -685,7 +685,7 @@ sub installlib { + return if $name eq 'ExtUtils/MakeMaker/version/regex.pm'; + + my $installlib = $installprivlib; +- if ($dir =~ /^auto\// || ++ if (($dir =~ /^auto\// && $dir ne 'auto/Compress/Zlib') || + ($name =~ /^(.*)\.(?:pm|pod)$/ && $archpms{$1}) || + ($name =~ /^(.*)\.(?:h|lib)$/i && ($Is_W32 || $Is_NetWare)) || + $name=~/^Config_(heavy|git)\.pl\z/ +--- ./lib/perl5db.pl.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./lib/perl5db.pl 2017-08-30 12:05:40.264184858 +0000 +@@ -2363,6 +2363,8 @@ sub _DB__handle_run_command_in_pager_com + open( OUT, ">&STDOUT" ) # XXX: lost message + || _db_warn("Can't restore DB::OUT"); + } ++ # tell readline the new OUT handle ++ $term->Attribs()->{outstream} = *OUT if defined &Term::ReadLine::Gnu::readline; + next CMD; + } ## end unless ($piped = open(OUT,... + +@@ -2467,6 +2469,9 @@ sub _DB__at_end_of_every_command { + $obj->selected(""); + } + ++ # tell readline the new OUT handle ++ $term->Attribs()->{outstream} = *OUT if defined &Term::ReadLine::Gnu::readline; ++ + # No pipes now. + $obj->piped(""); + } ## end if ($piped) +--- ./utils/perlbug.PL.orig 2017-04-19 13:37:06.000000000 +0000 ++++ ./utils/perlbug.PL 2017-08-30 12:05:40.265184858 +0000 +@@ -1042,6 +1042,7 @@ sub _message_headers { + $headers{'Cc'} = $cc if ($cc); + $headers{'Message-Id'} = $messageid if ($messageid); + $headers{'Reply-To'} = $from if ($from); ++ $headers{'X-Webfrontend'} = 'perlbug'; + $headers{'From'} = $from if ($from); + if ($have_attachment) { + $headers{'MIME-Version'} = '1.0'; diff --git a/perl-HiRes.t-timeout.diff b/perl-HiRes.t-timeout.diff new file mode 100644 index 0000000..2d4464f --- /dev/null +++ b/perl-HiRes.t-timeout.diff @@ -0,0 +1,44 @@ +--- ./dist/Time-HiRes/t/alarm.t.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./dist/Time-HiRes/t/alarm.t 2017-08-30 12:15:18.729183834 +0000 +@@ -8,7 +8,7 @@ BEGIN { require_ok "Time::HiRes"; } + + use Config; + +-my $limit = 0.25; # 25% is acceptable slosh for testing timers ++my $limit = 0.60; # 25% is acceptable slosh for testing timers + + my $xdefine = ''; + if (open(XDEFINE, "<", "xdefine")) { +--- ./dist/Time-HiRes/t/clock.t.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./dist/Time-HiRes/t/clock.t 2017-08-30 12:15:18.729183834 +0000 +@@ -29,7 +29,7 @@ printf("# have_clock = %d\n", + # completes fine with (say) 30% slosh, and fail otherwise. If you do that, + # consider changing over to test.pl at the same time. + # --A.D., Nov 27, 2001 +-my $limit = 0.25; # 25% is acceptable slosh for testing timers ++my $limit = 0.60; # 25% is acceptable slosh for testing timers + + SKIP: { + skip "no clock_gettime", 1 +--- ./dist/Time-HiRes/t/itimer.t.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./dist/Time-HiRes/t/itimer.t 2017-08-30 12:15:18.729183834 +0000 +@@ -29,7 +29,7 @@ use Test::More tests => 2; + BEGIN { push @INC, '.' } + use t::Watchdog; + +-my $limit = 0.25; # 25% is acceptable slosh for testing timers ++my $limit = 0.60; # 25% is acceptable slosh for testing timers + + my $i = 3; + my $r = [Time::HiRes::gettimeofday()]; +--- ./dist/Time-HiRes/t/usleep.t.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./dist/Time-HiRes/t/usleep.t 2017-08-30 12:15:18.730183834 +0000 +@@ -16,7 +16,7 @@ eval { Time::HiRes::usleep(-2) }; + like $@, qr/::usleep\(-2\): negative time not invented yet/, + "negative time error"; + +-my $limit = 0.25; # 25% is acceptable slosh for testing timers ++my $limit = 0.60; # 25% is acceptable slosh for testing timers + + my $one = CORE::time; + Time::HiRes::usleep(10_000); diff --git a/perl-Stabilize-Socket-VERSION-comparisons.patch b/perl-Stabilize-Socket-VERSION-comparisons.patch new file mode 100644 index 0000000..5521ada --- /dev/null +++ b/perl-Stabilize-Socket-VERSION-comparisons.patch @@ -0,0 +1,56 @@ +From 11be1db5e0fa09188bb049cabd6568eb8bf56bbe Mon Sep 17 00:00:00 2001 +From: Ali Abdallah +Date: Tue, 7 Dec 2021 18:12:22 +0100 +Subject: [PATCH] Stabilize Socket::VERSION comparisons + +This commit backports the following two upstream commits + +80388908f57e7b64b2e72c9d0973aa796626d7c5: Stabilize Socket::VERSION +comparisons +52f5670577550d05bb914beaca6a81069f88bc3c: Fix Socket::VERSION evaluation +--- + dist/Net-Ping/lib/Net/Ping.pm | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/dist/Net-Ping/lib/Net/Ping.pm b/dist/Net-Ping/lib/Net/Ping.pm +index 13cbe81..cb3d860 100644 +--- a/dist/Net-Ping/lib/Net/Ping.pm ++++ b/dist/Net-Ping/lib/Net/Ping.pm +@@ -45,6 +45,7 @@ my $IPPROTO_IPV6 = eval { Socket::IPPROTO_IPV6() }; + #my $IPV6_HOPLIMIT = eval { Socket::IPV6_HOPLIMIT() }; # ping6 -h 0-255 + my $qr_family = qr/^(?:(?:(:?ip)?v?(?:4|6))|${\AF_INET}|$AF_INET6)$/; + my $qr_family4 = qr/^(?:(?:(:?ip)?v?4)|${\AF_INET})$/; ++my $Socket_VERSION = eval $Socket::VERSION; + + if ($^O =~ /Win32/i) { + # Hack to avoid this Win32 spewage: +@@ -1798,7 +1799,7 @@ sub _resolv { + + # address check + # new way +- if ($Socket::VERSION >= 1.94) { ++ if ($Socket_VERSION > 1.94) { + my %hints = ( + family => $AF_UNSPEC, + protocol => IPPROTO_TCP, +@@ -1831,7 +1832,7 @@ sub _resolv { + + # resolve + # new way +- if ($Socket::VERSION >= 1.94) { ++ if ($Socket_VERSION >= 1.94) { + my %hints = ( + family => $family, + protocol => IPPROTO_TCP +@@ -1908,7 +1909,7 @@ sub _inet_ntoa { + ) = @_; + + my $ret; +- if ($Socket::VERSION >= 1.94) { ++ if ($Socket_VERSION >= 1.94) { + my ($err, $address) = Socket::getnameinfo($addr, $NI_NUMERICHOST); + if (defined($address)) { + $ret = $address; +-- +2.26.2 + diff --git a/perl-archive-tar-dirtrav.diff b/perl-archive-tar-dirtrav.diff new file mode 100644 index 0000000..9415901 --- /dev/null +++ b/perl-archive-tar-dirtrav.diff @@ -0,0 +1,27 @@ +--- ./cpan/Archive-Tar/lib/Archive/Tar.pm.orig 2018-06-27 14:13:08.131148055 +0000 ++++ ./cpan/Archive-Tar/lib/Archive/Tar.pm 2018-06-27 14:14:50.562873606 +0000 +@@ -842,9 +842,23 @@ sub _extract_file { + return; + } + ++ ### If a file system already contains a block device with the same name as ++ ### the being extracted regular file, we would write the file's content ++ ### to the block device. So remove the existing file (block device) now. ++ ### If an archive contains multiple same-named entries, the last one ++ ### should replace the previous ones. So remove the old file now. ++ ### If the old entry is a symlink to a file outside of the CWD, the new ++ ### entry would create a file there. This is CVE-2018-12015 ++ ### . ++ if (-l $full || -e _) { ++ if (!unlink $full) { ++ $self->_error( qq[Could not remove old file '$full': $!] ); ++ return; ++ } ++ } + if( length $entry->type && $entry->is_file ) { + my $fh = IO::File->new; +- $fh->open( '>' . $full ) or ( ++ $fh->open( $full, '>' ) or ( + $self->_error( qq[Could not open file '$full': $!] ), + return + ); diff --git a/perl-cpan_verify_cert.diff b/perl-cpan_verify_cert.diff new file mode 100644 index 0000000..322f34a --- /dev/null +++ b/perl-cpan_verify_cert.diff @@ -0,0 +1,10 @@ +--- cpan/CPAN/lib/CPAN/HTTP/Client.pm.orig 2023-07-05 12:31:35.911871898 +0000 ++++ cpan/CPAN/lib/CPAN/HTTP/Client.pm 2023-07-05 12:32:00.863830857 +0000 +@@ -32,6 +32,7 @@ sub mirror { + + my $want_proxy = $self->_want_proxy($uri); + my $http = HTTP::Tiny->new( ++ verify_SSL => 1, + $want_proxy ? (proxy => $self->{proxy}) : () + ); + diff --git a/perl-extended-charclass-assert.diff b/perl-extended-charclass-assert.diff new file mode 100644 index 0000000..031832c --- /dev/null +++ b/perl-extended-charclass-assert.diff @@ -0,0 +1,234 @@ +--- ./pod/perldiag.pod.orig 2017-07-18 23:00:00.000000000 +0000 ++++ ./pod/perldiag.pod 2018-11-21 13:46:06.998215887 +0000 +@@ -5904,7 +5904,7 @@ yourself. + a perl4 interpreter, especially if the next 2 tokens are "use strict" + or "my $var" or "our $var". + +-=item Syntax error in (?[...]) in regex m/%s/ ++=item Syntax error in (?[...]) in regex; marked by <-- HERE in m/%s/ + + (F) Perl could not figure out what you meant inside this construct; this + notifies you that it is giving up trying. +@@ -6402,6 +6402,31 @@ to find out why that isn't happening. + (F) The unexec() routine failed for some reason. See your local FSF + representative, who probably put it there in the first place. + ++=item Unexpected ']' with no following ')' in (?[... in regex; marked by <-- HERE in m/%s/ ++ ++(F) While parsing an extended character class a ']' character was encountered ++at a point in the definition where the only legal use of ']' is to close the ++character class definition as part of a '])', you may have forgotten the close ++paren, or otherwise confused the parser. ++ ++=item Expecting close paren for nested extended charclass in regex; marked by <-- HERE in m/%s/ ++ ++(F) While parsing a nested extended character class like: ++ ++ (?[ ... (?flags:(?[ ... ])) ... ]) ++ ^ ++ ++we expected to see a close paren ')' (marked by ^) but did not. ++ ++=item Expecting close paren for wrapper for nested extended charclass in regex; marked by <-- HERE in m/%s/ ++ ++(F) While parsing a nested extended character class like: ++ ++ (?[ ... (?flags:(?[ ... ])) ... ]) ++ ^ ++ ++we expected to see a close paren ')' (marked by ^) but did not. ++ + =item Unexpected binary operator '%c' with no preceding operand in regex; + marked by S<<-- HERE> in m/%s/ + +--- ./pod/perlrecharclass.pod.orig 2017-07-18 22:50:12.000000000 +0000 ++++ ./pod/perlrecharclass.pod 2018-11-21 13:46:06.998215887 +0000 +@@ -1128,8 +1128,8 @@ hence both of the following work: + Any contained POSIX character classes, including things like C<\w> and C<\D> + respect the Ca> (and Caa>) modifiers. + +-C<< (?[ ]) >> is a regex-compile-time construct. Any attempt to use +-something which isn't knowable at the time the containing regular ++Note that C<< (?[ ]) >> is a regex-compile-time construct. Any attempt ++to use something which isn't knowable at the time the containing regular + expression is compiled is a fatal error. In practice, this means + just three limitations: + +--- ./regcomp.c.orig 2018-11-21 13:45:49.814256819 +0000 ++++ ./regcomp.c 2018-11-21 13:46:07.002215878 +0000 +@@ -14820,8 +14820,9 @@ S_handle_regex_sets(pTHX_ RExC_state_t * + TRUE /* Force /x */ ); + + switch (*RExC_parse) { +- case '?': +- if (RExC_parse[1] == '[') depth++, RExC_parse++; ++ case '(': ++ if (RExC_parse[1] == '?' && RExC_parse[2] == '[') ++ depth++, RExC_parse+=2; + /* FALLTHROUGH */ + default: + break; +@@ -14878,9 +14879,9 @@ S_handle_regex_sets(pTHX_ RExC_state_t * + } + + case ']': +- if (depth--) break; +- RExC_parse++; +- if (*RExC_parse == ')') { ++ if (RExC_parse[1] == ')') { ++ RExC_parse++; ++ if (depth--) break; + node = reganode(pRExC_state, ANYOF, 0); + RExC_size += ANYOF_SKIP; + nextchar(pRExC_state); +@@ -14892,20 +14893,25 @@ S_handle_regex_sets(pTHX_ RExC_state_t * + + return node; + } +- goto no_close; ++ /* We output the messages even if warnings are off, because we'll fail ++ * the very next thing, and these give a likely diagnosis for that */ ++ if (posix_warnings && av_tindex_skip_len_mg(posix_warnings) >= 0) { ++ output_or_return_posix_warnings(pRExC_state, posix_warnings, NULL); ++ } ++ RExC_parse++; ++ vFAIL("Unexpected ']' with no following ')' in (?[..."); + } + + RExC_parse += UTF ? UTF8SKIP(RExC_parse) : 1; + } + +- no_close: + /* We output the messages even if warnings are off, because we'll fail + * the very next thing, and these give a likely diagnosis for that */ + if (posix_warnings && av_tindex_skip_len_mg(posix_warnings) >= 0) { + output_or_return_posix_warnings(pRExC_state, posix_warnings, NULL); + } + +- FAIL("Syntax error in (?[...])"); ++ vFAIL("Syntax error in (?[...])"); + } + + /* Pass 2 only after this. */ +@@ -15085,12 +15091,14 @@ redo_curchar: + * inversion list, and RExC_parse points to the trailing + * ']'; the next character should be the ')' */ + RExC_parse++; +- assert(UCHARAT(RExC_parse) == ')'); ++ if (UCHARAT(RExC_parse) != ')') ++ vFAIL("Expecting close paren for nested extended charclass"); + + /* Then the ')' matching the original '(' handled by this + * case: statement */ + RExC_parse++; +- assert(UCHARAT(RExC_parse) == ')'); ++ if (UCHARAT(RExC_parse) != ')') ++ vFAIL("Expecting close paren for wrapper for nested extended charclass"); + + RExC_parse++; + RExC_flags = save_flags; +--- ./t/lib/warnings/regcomp.orig 2017-07-18 23:00:00.000000000 +0000 ++++ ./t/lib/warnings/regcomp 2018-11-21 13:46:07.002215878 +0000 +@@ -59,21 +59,21 @@ Unmatched [ in regex; marked by <-- HERE + qr/(?[[[:word]]])/; + EXPECT + Assuming NOT a POSIX class since there is no terminating ':' in regex; marked by <-- HERE in m/(?[[[:word <-- HERE ]]])/ at - line 2. +-syntax error in (?[...]) in regex m/(?[[[:word]]])/ at - line 2. ++Unexpected ']' with no following ')' in (?[... in regex; marked by <-- HERE in m/(?[[[:word]] <-- HERE ])/ at - line 2. + ######## + # NAME qr/(?[ [[:digit: ])/ + # OPTION fatal + qr/(?[[[:digit: ])/; + EXPECT + Assuming NOT a POSIX class since no blanks are allowed in one in regex; marked by <-- HERE in m/(?[[[:digit: ] <-- HERE )/ at - line 2. +-syntax error in (?[...]) in regex m/(?[[[:digit: ])/ at - line 2. ++syntax error in (?[...]) in regex; marked by <-- HERE in m/(?[[[:digit: ]) <-- HERE / at - line 2. + ######## + # NAME qr/(?[ [:digit: ])/ + # OPTION fatal + qr/(?[[:digit: ])/ + EXPECT + Assuming NOT a POSIX class since no blanks are allowed in one in regex; marked by <-- HERE in m/(?[[:digit: ] <-- HERE )/ at - line 2. +-syntax error in (?[...]) in regex m/(?[[:digit: ])/ at - line 2. ++syntax error in (?[...]) in regex; marked by <-- HERE in m/(?[[:digit: ]) <-- HERE / at - line 2. + ######## + # NAME [perl #126141] + # OPTION fatal +--- ./t/re/reg_mesg.t.orig 2017-09-07 19:27:40.000000000 +0000 ++++ ./t/re/reg_mesg.t 2018-11-21 13:46:07.002215878 +0000 +@@ -213,8 +213,9 @@ my @death = + '/\b{gc}/' => "'gc' is an unknown bound type {#} m/\\b{gc{#}}/", + '/\B{gc}/' => "'gc' is an unknown bound type {#} m/\\B{gc{#}}/", + +- '/(?[[[::]]])/' => "Syntax error in (?[...]) in regex m/(?[[[::]]])/", +- '/(?[[[:w:]]])/' => "Syntax error in (?[...]) in regex m/(?[[[:w:]]])/", ++ ++ '/(?[[[::]]])/' => "Unexpected ']' with no following ')' in (?[... {#} m/(?[[[::]]{#}])/", ++ '/(?[[[:w:]]])/' => "Unexpected ']' with no following ')' in (?[... {#} m/(?[[[:w:]]{#}])/", + '/(?[[:w:]])/' => "", + '/([.].*)[.]/' => "", # [perl #127582] + '/[.].*[.]/' => "", # [perl #127604] +@@ -237,11 +238,12 @@ my @death = + '/(?[ \p{foo} ])/' => 'Can\'t find Unicode property definition "foo" {#} m/(?[ \p{foo}{#} ])/', + '/(?[ \p{ foo = bar } ])/' => 'Can\'t find Unicode property definition "foo = bar" {#} m/(?[ \p{ foo = bar }{#} ])/', + '/(?[ \8 ])/' => 'Unrecognized escape \8 in character class {#} m/(?[ \8{#} ])/', +- '/(?[ \t ]/' => 'Syntax error in (?[...]) in regex m/(?[ \t ]/', +- '/(?[ [ \t ]/' => 'Syntax error in (?[...]) in regex m/(?[ [ \t ]/', +- '/(?[ \t ] ]/' => 'Syntax error in (?[...]) in regex m/(?[ \t ] ]/', +- '/(?[ [ ] ]/' => 'Syntax error in (?[...]) in regex m/(?[ [ ] ]/', +- '/(?[ \t + \e # This was supposed to be a comment ])/' => 'Syntax error in (?[...]) in regex m/(?[ \t + \e # This was supposed to be a comment ])/', ++ '/(?[ \t ]/' => "Unexpected ']' with no following ')' in (?[... {#} m/(?[ \\t ]{#}/", ++ '/(?[ [ \t ]/' => "Syntax error in (?[...]) {#} m/(?[ [ \\t ]{#}/", ++ '/(?[ \t ] ]/' => "Unexpected ']' with no following ')' in (?[... {#} m/(?[ \\t ]{#} ]/", ++ '/(?[ [ ] ]/' => "Syntax error in (?[...]) {#} m/(?[ [ ] ]{#}/", ++ '/(?[ \t + \e # This was supposed to be a comment ])/' => ++ "Syntax error in (?[...]) {#} m/(?[ \\t + \\e # This was supposed to be a comment ]){#}/", + '/(?[ ])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[ {#}])/', + 'm/(?[[a-\d]])/' => 'False [] range "a-\d" {#} m/(?[[a-\d{#}]])/', + 'm/(?[[\w-x]])/' => 'False [] range "\w-" {#} m/(?[[\w-{#}x]])/', +@@ -427,10 +429,10 @@ my @death_utf8 = mark_as_utf8( + + '/ネ\p{}ネ/' => 'Empty \p{} {#} m/ネ\p{{#}}ネ/', + +- '/ネ(?[[[:ネ]]])ネ/' => "Syntax error in (?[...]) in regex m/ネ(?[[[:ネ]]])ネ/", +- '/ネ(?[[[:ネ: ])ネ/' => "Syntax error in (?[...]) in regex m/ネ(?[[[:ネ: ])ネ/", +- '/ネ(?[[[::]]])ネ/' => "Syntax error in (?[...]) in regex m/ネ(?[[[::]]])ネ/", +- '/ネ(?[[[:ネ:]]])ネ/' => "Syntax error in (?[...]) in regex m/ネ(?[[[:ネ:]]])ネ/", ++ '/ネ(?[[[:ネ]]])ネ/' => "Unexpected ']' with no following ')' in (?[... {#} m/ネ(?[[[:ネ]]{#}])ネ/", ++ '/ネ(?[[[:ネ: ])ネ/' => "Syntax error in (?[...]) {#} m/ネ(?[[[:ネ: ])ネ{#}/", ++ '/ネ(?[[[::]]])ネ/' => "Unexpected ']' with no following ')' in (?[... {#} m/ネ(?[[[::]]{#}])ネ/", ++ '/ネ(?[[[:ネ:]]])ネ/' => "Unexpected ']' with no following ')' in (?[... {#} m/ネ(?[[[:ネ:]]{#}])ネ/", + '/ネ(?[[:ネ:]])ネ/' => "", + '/ネ(?[ネ])ネ/' => 'Unexpected character {#} m/ネ(?[ネ{#}])ネ/', + '/ネ(?[ + [ネ] ])/' => 'Unexpected binary operator \'+\' with no preceding operand {#} m/ネ(?[ +{#} [ネ] ])/', +@@ -443,8 +445,9 @@ my @death_utf8 = mark_as_utf8( + '/(?[ \x{ネ} ])ネ/' => 'Non-hex character {#} m/(?[ \x{ネ{#}} ])ネ/', + '/(?[ \p{ネ} ])/' => 'Can\'t find Unicode property definition "ネ" {#} m/(?[ \p{ネ}{#} ])/', + '/(?[ \p{ ネ = bar } ])/' => 'Can\'t find Unicode property definition "ネ = bar" {#} m/(?[ \p{ ネ = bar }{#} ])/', +- '/ネ(?[ \t ]/' => 'Syntax error in (?[...]) in regex m/ネ(?[ \t ]/', +- '/(?[ \t + \e # ネ This was supposed to be a comment ])/' => 'Syntax error in (?[...]) in regex m/(?[ \t + \e # ネ This was supposed to be a comment ])/', ++ '/ネ(?[ \t ]/' => "Unexpected ']' with no following ')' in (?[... {#} m/ネ(?[ \\t ]{#}/", ++ '/(?[ \t + \e # ネ This was supposed to be a comment ])/' => ++ "Syntax error in (?[...]) {#} m/(?[ \\t + \\e # ネ This was supposed to be a comment ]){#}/", + 'm/(*ネ)ネ/' => q, + '/\cネ/' => "Character following \"\\c\" must be printable ASCII", + '/\b{ネ}/' => "'ネ' is an unknown bound type {#} m/\\b{ネ{#}}/", +--- ./t/re/regex_sets.t.orig 2017-07-18 22:50:18.000000000 +0000 ++++ ./t/re/regex_sets.t 2018-11-21 13:46:07.002215878 +0000 +@@ -158,13 +158,13 @@ for my $char ("٠", "٥", "٩") { + eval { $_ = '/(?[(\c]) /'; qr/$_/ }; + like($@, qr/^Syntax error/, '/(?[(\c]) / should not panic'); + eval { $_ = '(?[\c#]' . "\n])"; qr/$_/ }; +- like($@, qr/^Syntax error/, '/(?[(\c]) / should not panic'); ++ like($@, qr/^Unexpected/, '/(?[(\c]) / should not panic'); + eval { $_ = '(?[(\c])'; qr/$_/ }; + like($@, qr/^Syntax error/, '/(?[(\c])/ should be a syntax error'); + eval { $_ = '(?[(\c]) ]\b'; qr/$_/ }; +- like($@, qr/^Syntax error/, '/(?[(\c]) ]\b/ should be a syntax error'); ++ like($@, qr/^Unexpected/, '/(?[(\c]) ]\b/ should be a syntax error'); + eval { $_ = '(?[\c[]](])'; qr/$_/ }; +- like($@, qr/^Syntax error/, '/(?[\c[]](])/ should be a syntax error'); ++ like($@, qr/^Unexpected/, '/(?[\c[]](])/ should be a syntax error'); + like("\c#", qr/(?[\c#])/, '\c# should match itself'); + like("\c[", qr/(?[\c[])/, '\c[ should match itself'); + like("\c\ ", qr/(?[\c\])/, '\c\ should match itself'); diff --git a/perl-file_path_rmtree_fchmod.diff b/perl-file_path_rmtree_fchmod.diff new file mode 100644 index 0000000..ed48de9 --- /dev/null +++ b/perl-file_path_rmtree_fchmod.diff @@ -0,0 +1,134 @@ +--- cpan/ExtUtils-MakeMaker/t/eu_command.t.orig 2017-07-18 22:59:59.000000000 +0000 ++++ cpan/ExtUtils-MakeMaker/t/eu_command.t 2022-09-02 14:13:22.736782886 +0000 +@@ -151,19 +151,19 @@ BEGIN { + is( ((stat('testdir'))[2] & 07777) & 0700, + 0100, 'change a dir to execute-only' ); + +- # change a dir to read-only +- @ARGV = ( '0400', 'testdir' ); ++ # change a dir to write-only ++ @ARGV = ( '0200', 'testdir' ); + ExtUtils::Command::chmod(); + + is( ((stat('testdir'))[2] & 07777) & 0700, +- 0400, 'change a dir to read-only' ); ++ 0200, 'change a dir to write-only' ); + +- # change a dir to write-only +- @ARGV = ( '0200', 'testdir' ); ++ # change a dir to read-only ++ @ARGV = ( '0400', 'testdir' ); + ExtUtils::Command::chmod(); + + is( ((stat('testdir'))[2] & 07777) & 0700, +- 0200, 'change a dir to write-only' ); ++ 0400, 'change a dir to read-only' ); + + @ARGV = ('testdir'); + rm_rf; +--- cpan/File-Path/lib/File/Path.pm.orig 2017-07-18 22:59:59.000000000 +0000 ++++ cpan/File-Path/lib/File/Path.pm 2022-09-02 14:09:39.657163146 +0000 +@@ -354,21 +354,32 @@ sub _rmtree { + + # see if we can escalate privileges to get in + # (e.g. funny protection mask such as -w- instead of rwx) +- $perm &= oct '7777'; +- my $nperm = $perm | oct '700'; +- if ( +- !( +- $arg->{safe} +- or $nperm == $perm +- or chmod( $nperm, $root ) +- ) +- ) +- { +- _error( $arg, +- "cannot make child directory read-write-exec", $canon ); +- next ROOT_DIR; ++ # This uses fchmod to avoid traversing outside of the proper ++ # location (CVE-2017-6512) ++ my $root_fh; ++ if (open($root_fh, '<', $root)) { ++ my ($fh_dev, $fh_inode) = (stat $root_fh )[0,1]; ++ $perm &= oct '7777'; ++ my $nperm = $perm | oct '700'; ++ local $@; ++ if ( ++ !( ++ $arg->{safe} ++ or $nperm == $perm ++ or !-d _ ++ or $fh_dev ne $ldev ++ or $fh_inode ne $lino ++ or eval { chmod( $nperm, $root_fh ) } ++ ) ++ ) ++ { ++ _error($arg, ++ "cannot make child directory read-write-exec", $canon); ++ next ROOT_DIR; ++ } ++ close $root_fh; + } +- elsif ( !chdir($root) ) { ++ if ( !chdir($root) ) { + _error( $arg, "cannot chdir to child", $canon ); + next ROOT_DIR; + } +--- cpan/File-Path/t/Path.t.orig 2017-07-18 22:59:59.000000000 +0000 ++++ cpan/File-Path/t/Path.t 2022-09-02 15:26:48.353242370 +0000 +@@ -3,7 +3,7 @@ + + use strict; + +-use Test::More tests => 127; ++use Test::More tests => 126; + use Config; + use Fcntl ':mode'; + use lib 't/'; +@@ -301,13 +301,13 @@ is(rmtree($dir, 0, undef), 1, "removed d + $dir = catdir($tmp_base,'G'); + $dir = VMS::Filespec::unixify($dir) if $Is_VMS; + +-@created = mkpath($dir, undef, 0200); ++@created = mkpath($dir, undef, 0400); + +-is(scalar(@created), 1, "created write-only dir"); ++is(scalar(@created), 1, "created read-only dir"); + +-is($created[0], $dir, "created write-only directory cross-check"); ++is($created[0], $dir, "created read-only directory cross-check"); + +-is(rmtree($dir), 1, "removed write-only dir"); ++is(rmtree($dir), 1, "removed read-only dir"); + + # borderline new-style heuristics + if (chdir $tmp_base) { +@@ -458,11 +458,11 @@ SKIP : { + my $mode; + my $octal_mode; + my @inputs = ( +- 0777, 0700, 0070, 0007, +- 0333, 0300, 0030, 0003, +- 0111, 0100, 0010, 0001, +- 0731, 0713, 0317, 0371, 0173, 0137, +- 00 ); ++ 0777, 0700, 0470, 0407, ++ 0433, 0400, 0430, 0403, ++ 0111, 0100, 0110, 0101, ++ 0731, 0713, 0317, 0371, ++ 0173, 0137); + my $input; + my $octal_input; + $dir = catdir($tmp_base, 'chmod_test'); +--- t/porting/customized.dat.orig 2022-09-02 15:10:40.758917198 +0000 ++++ t/porting/customized.dat 2022-09-02 15:11:32.822828168 +0000 +@@ -1,7 +1,7 @@ + Digest cpan/Digest/Digest.pm 43f7f544cb11842b2f55c73e28930da50774e081 + Encode cpan/Encode/Unicode/Unicode.pm 9749692c67f7d69083034de9184a93f070ab4799 + ExtUtils::Constant cpan/ExtUtils-Constant/t/Constant.t a0369c919e216fb02767a637666bb4577ad79b02 +-File::Path cpan/File-Path/lib/File/Path.pm fd8ce4420a0c113d3f47dd3223859743655c1da8 ++File::Path cpan/File-Path/lib/File/Path.pm ff1817fcd4f88629e7be620f83cdbc4eaaf9211a + File::Path cpan/File-Path/t/Path_win32.t 94b9276557ce7f80b91f6fd9bfa7a0cd9bf9683e + JSON::PP cpan/JSON-PP/bin/json_pp a7b8de6c201ef177ee82624ee4ca6a47cc1a3b4f + JSON::PP cpan/JSON-PP/lib/JSON/PP.pm 86f697dae482106270fdd659b18c95a54af764ba diff --git a/perl-fix2020.patch b/perl-fix2020.patch new file mode 100644 index 0000000..b3e225b --- /dev/null +++ b/perl-fix2020.patch @@ -0,0 +1,102 @@ +submitted upstream + +Author: Bernhard M. Wiedemann +Date: 2018-03-18 +Subject: fix calls of timelocal to work after 2019 + +because year 70 then starts to mean 2070 + +https://bugzilla.opensuse.org/show_bug.cgi?id=1102840 trackerbug: build fails at + some time +https://rt.perl.org/Ticket/Display.html?id=132896 perl Net::NNTP +https://rt.perl.org/Ticket/Display.html?id=132898 perl Net::FTP => https://rt.cp +an.org/Public/Bug/Display.html?id=124534 +https://rt.perl.org/Ticket/Display.html?id=132897 perl doc + +--- ./cpan/Time-Local/t/Local.t.orig 2020-02-05 14:40:00.406521792 +0000 ++++ ./cpan/Time-Local/t/Local.t 2020-02-05 15:20:34.648804873 +0000 +@@ -96,8 +96,7 @@ SKIP: { + + # Test timelocal() + { +- my $year_in = $year < 70 ? $year + 1900 : $year; +- my $time = timelocal( $sec, $min, $hour, $mday, $mon, $year_in ); ++ my $time = timelocal( $sec, $min, $hour, $mday, $mon, $year + 1900 ); + + my ( $s, $m, $h, $D, $M, $Y ) = localtime($time); + +@@ -111,8 +110,7 @@ SKIP: { + + # Test timegm() + { +- my $year_in = $year < 70 ? $year + 1900 : $year; +- my $time = timegm( $sec, $min, $hour, $mday, $mon, $year_in ); ++ my $time = timegm( $sec, $min, $hour, $mday, $mon, $year + 1900 ); + + my ( $s, $m, $h, $D, $M, $Y ) = gmtime($time); + +@@ -138,19 +136,19 @@ for (@bad_time) { + + { + is( +- timelocal( 0, 0, 1, 1, 0, 90 ) - timelocal( 0, 0, 0, 1, 0, 90 ), 3600, ++ timelocal( 0, 0, 1, 1, 0, 1990 ) - timelocal( 0, 0, 0, 1, 0, 1990 ), 3600, + 'one hour difference between two calls to timelocal' + ); + + is( +- timelocal( 1, 2, 3, 1, 0, 100 ) - timelocal( 1, 2, 3, 31, 11, 99 ), ++ timelocal( 1, 2, 3, 1, 0, 2000 ) - timelocal( 1, 2, 3, 31, 11, 1999 ), + 24 * 3600, + 'one day difference between two calls to timelocal' + ); + + # Diff beween Jan 1, 1980 and Mar 1, 1980 = (31 + 29 = 60 days) + is( +- timegm( 0, 0, 0, 1, 2, 80 ) - timegm( 0, 0, 0, 1, 0, 80 ), ++ timegm( 0, 0, 0, 1, 2, 1980 ) - timegm( 0, 0, 0, 1, 0, 1980 ), + 60 * 24 * 3600, + '60 day difference between two calls to timegm' + ); +@@ -162,7 +160,7 @@ for (@bad_time) { + # treated like 03:00:00 rather than 01:00:00 - negative zone offsets used + # to do the latter + { +- my $hour = ( localtime( timelocal( 0, 0, 2, 7, 3, 102 ) ) )[2]; ++ my $hour = ( localtime( timelocal( 0, 0, 2, 7, 3, 2002 ) ) )[2]; + + # testers in US/Pacific should get 3, + # other testers should get 2 +--- ./cpan/libnet/lib/Net/FTP.pm.orig 2017-07-18 22:49:51.000000000 +0000 ++++ ./cpan/libnet/lib/Net/FTP.pm 2020-02-05 14:40:00.406521792 +0000 +@@ -264,7 +264,7 @@ sub mdtm { + + $ftp->_MDTM($file) + && $ftp->message =~ /((\d\d)(\d\d\d?))(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/ +- ? timegm($8, $7, $6, $5, $4 - 1, $2 eq '19' ? $3 : ($1 - 1900)) ++ ? timegm($8, $7, $6, $5, $4 - 1, $2 eq '19' ? ($3 + 1900) : $1) + : undef; + } + +--- ./cpan/libnet/lib/Net/NNTP.pm.orig 2017-07-18 22:49:51.000000000 +0000 ++++ ./cpan/libnet/lib/Net/NNTP.pm 2020-02-05 14:40:00.406521792 +0000 +@@ -598,7 +598,7 @@ sub date { + + $nntp->_DATE + && $nntp->message =~ /(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/ +- ? timegm($6, $5, $4, $3, $2 - 1, $1 - 1900) ++ ? timegm($6, $5, $4, $3, $2 - 1, $1) + : undef; + } + +--- ./pod/perlport.pod.orig 2020-02-05 14:45:01.949813224 +0000 ++++ ./pod/perlport.pod 2020-02-05 14:40:00.406521792 +0000 +@@ -670,7 +670,7 @@ When calculating specific times, such as + it may be appropriate to calculate an offset for the epoch. + + use Time::Local qw(timegm); +- my $offset = timegm(0, 0, 0, 1, 0, 70); ++ my $offset = timegm(0, 0, 0, 1, 0, 1970); + + The value for C<$offset> in Unix will be C<0>, but in Mac OS Classic + will be some large number. C<$offset> can then be added to a Unix time diff --git a/perl-incfix.diff b/perl-incfix.diff new file mode 100644 index 0000000..5ec6421 --- /dev/null +++ b/perl-incfix.diff @@ -0,0 +1,42 @@ +Index: perl.c +=================================================================== +--- perl.c.orig ++++ perl.c +@@ -4579,11 +4579,13 @@ S_init_perllib(pTHX) + # endif + #endif + ++#if 0 + #ifdef PERL_OTHERLIBDIRS + S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS), + INCPUSH_ADD_VERSIONED_SUB_DIRS|INCPUSH_NOT_BASEDIR + |INCPUSH_CAN_RELOCATE); + #endif ++#endif + + if (!TAINTING_get) { + #ifndef VMS +@@ -4625,20 +4627,19 @@ S_init_perllib(pTHX) + #if defined(SITELIB_STEM) && defined(PERL_INC_VERSION_LIST) + /* Search for version-specific dirs below here */ + S_incpush_use_sep(aTHX_ STR_WITH_LEN(SITELIB_STEM), +- INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE); ++ INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR|INCPUSH_CAN_RELOCATE); + #endif + + + #if defined(PERL_VENDORLIB_STEM) && defined(PERL_INC_VERSION_LIST) + /* Search for version-specific dirs below here */ + S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_VENDORLIB_STEM), +- INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE); ++ INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR|INCPUSH_CAN_RELOCATE); + #endif + + #ifdef PERL_OTHERLIBDIRS + S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS), +- INCPUSH_ADD_OLD_VERS|INCPUSH_ADD_ARCHONLY_SUB_DIRS +- |INCPUSH_CAN_RELOCATE); ++ INCPUSH_CAN_RELOCATE); + #endif + #endif /* !PERL_IS_MINIPERL */ + diff --git a/perl-netcmdutf8.diff b/perl-netcmdutf8.diff new file mode 100644 index 0000000..1f998a6 --- /dev/null +++ b/perl-netcmdutf8.diff @@ -0,0 +1,26 @@ +Index: cpan/libnet/lib/Net/Cmd.pm +=================================================================== +--- cpan/libnet/lib/Net/Cmd.pm.orig ++++ cpan/libnet/lib/Net/Cmd.pm +@@ -290,6 +290,10 @@ sub command { + $str = $cmd->toascii($str) if $tr; + $str .= "\015\012"; + ++ # encode to individual utf8 bytes if ++ # $str is a string (in internal UTF-8) ++ utf8::encode($str) if utf8::is_utf8($str); ++ + $cmd->debug_print(1, $str) + if ($cmd->debug); + +@@ -525,6 +529,10 @@ sub rawdatasend { + return 0 + if $cmd->_is_closed; + ++ # encode to individual utf8 bytes if ++ # $line is a string (in internal UTF-8) ++ utf8::encode($line) if utf8::is_utf8($line); ++ + return 1 + unless length($line); + diff --git a/perl-nroff.diff b/perl-nroff.diff new file mode 100644 index 0000000..0d6dfd7 --- /dev/null +++ b/perl-nroff.diff @@ -0,0 +1,19 @@ +--- ./cpan/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm.orig 2017-04-19 13:37:05.000000000 +0000 ++++ ./cpan/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm 2017-08-30 12:12:38.967184117 +0000 +@@ -64,7 +64,7 @@ sub _roffer_candidates { + my( $self ) = @_; + + if( $self->is_openbsd || $self->is_freebsd || $self->is_bitrig ) { qw( mandoc groff nroff ) } +- else { qw( groff nroff mandoc ) } ++ else { qw( nroff groff mandoc ) } + } + + sub _find_roffer { +@@ -232,6 +232,7 @@ sub _collect_nroff_switches { + # don't have a -c switch, so that unconditionally adding it here + # would presumably be a Bad Thing -- sburke@cpan.org + push @render_switches, '-c' if( $self->_is_roff and $self->is_cygwin ); ++ push @render_switches, '-c' if( $self->_is_nroff ); + + return @render_switches; + } diff --git a/perl-reg-node-overrun.diff b/perl-reg-node-overrun.diff new file mode 100644 index 0000000000000000000000000000000000000000..6ebd5dbfda0324b05be9c6ca1e3a9ce840e3f556 GIT binary patch literal 1428 zcmd5+ZEu?}5boFUD{f>HAi`@Xd1=!$syc1jq)FW-O)4pJ;Q~m2nQ>C8t^a*CY1gUB zrtMoTS$94^cRud9!?G-}9fny#tHw@j%8KlT?|Ku<^DN&3Z!|mfXThO84n02%-Czo) zE0$uK=I@SAeS%pK+S5re9gqF#6fE!1b4SB5m^&o|VPu%nIN7iyCv2v`zE!M2 z|8n+rd9nPgUz~SmaYI;(2E3euW@yHKCmCq_X8G=euAX-dCcLOKNJ`ow2zRVuO&Q!U z(lp3=y~dVf3fOV1Q=!O&l9IHoY8)w`So<=2%*HeYXy57~>yl(G%%LS)jQhhM&>7_v za#E)y##Ce`v^~f>#pv;n3!EQ>LP0wg_v&NeMluwfkUl z=KQHI$?~VcFS1TkBs_|xqePP=+)RY59Ruwgov-Ev%2bFl?crG+Y8}6GAX&b<$==Bl?o (I32)RExC_rx->nparens) { ++ if (num < 0 || num > (I32)RExC_rx->nparens) { + RExC_parse++; + vFAIL("Reference to nonexistent group"); + } diff --git a/perl-reproducible.patch b/perl-reproducible.patch new file mode 100644 index 0000000..a65555a --- /dev/null +++ b/perl-reproducible.patch @@ -0,0 +1,24 @@ +PATCH-FIX-OPENSUSE +Author: Bernhard M. Wiedemann +Date: 2017-12-04 + +replace hostname, username, time with fixed values + +Index: perl-5.26.1/Configure +=================================================================== +--- perl-5.26.1.orig/Configure ++++ perl-5.26.1/Configure +@@ -9234,6 +9234,13 @@ esac + set $myhostname + myhostname=$1 + ++if test -n "$SOURCE_DATE_EPOCH" ; then ++ cf_time="`LC_ALL=C LANGUAGE=C $date -u -d@$SOURCE_DATE_EPOCH`" ++ cf_by="reproducible" ++ myhostname="reproducible" ++ myuname="reproducible" ++fi ++ + : verify guess + if $test "$myhostname" ; then + dflt=y diff --git a/perl-rpmlintrc b/perl-rpmlintrc new file mode 100644 index 0000000..0c9ecf9 --- /dev/null +++ b/perl-rpmlintrc @@ -0,0 +1,5 @@ +# This line is mandatory to access the configuration functions +from Config import * + +addFilter("perl.* devel-file-in-non-devel-package") + diff --git a/perl-saltbits.diff b/perl-saltbits.diff new file mode 100644 index 0000000..1913921 --- /dev/null +++ b/perl-saltbits.diff @@ -0,0 +1,11 @@ +--- ./pp.c.orig 2020-10-30 11:45:18.797664301 +0000 ++++ ./pp.c 2020-10-30 11:46:28.237474681 +0000 +@@ -3745,8 +3745,6 @@ PP(pp_crypt) + #if defined(__GLIBC__) || defined(__EMX__) + if (PL_reentrant_buffer->_crypt_struct_buffer) { + PL_reentrant_buffer->_crypt_struct_buffer->initialized = 0; +- /* work around glibc-2.2.5 bug */ +- PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; + } + #endif + } diff --git a/perl-saverecontext.diff b/perl-saverecontext.diff new file mode 100644 index 0000000..d48e944 --- /dev/null +++ b/perl-saverecontext.diff @@ -0,0 +1,28 @@ +Index: regcomp.c +=================================================================== +--- regcomp.c.orig ++++ regcomp.c +@@ -19959,8 +19959,21 @@ Perl_save_re_context(pTHX) + + if (gvp) { + GV * const gv = *gvp; +- if (SvTYPE(gv) == SVt_PVGV && GvSV(gv)) +- save_scalar(gv); ++ if (SvTYPE(gv) == SVt_PVGV && GvSV(gv)) { ++ /* this is a copy of save_scalar() without the GETMAGIC call, RT#76538 */ ++ SV ** const sptr = &GvSVn(gv); ++ SV * osv = *sptr; ++ SV * nsv = newSV(0); ++ save_pushptrptr(SvREFCNT_inc_simple(gv), SvREFCNT_inc(osv), SAVEt_SV); ++ if (SvTYPE(osv) >= SVt_PVMG && SvMAGIC(osv)) { ++ if (SvGMAGICAL(osv)) { ++ SvFLAGS(osv) |= (SvFLAGS(osv) & ++ (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT; ++ } ++ mg_localize(osv, nsv, (bool)1); ++ } ++ *sptr = nsv; ++ } + } + } + } diff --git a/perl-setenv-integer-wrap.diff b/perl-setenv-integer-wrap.diff new file mode 100644 index 0000000..3e637e0 --- /dev/null +++ b/perl-setenv-integer-wrap.diff @@ -0,0 +1,147 @@ +--- ./util.c.orig 2017-08-23 20:21:09.000000000 +0000 ++++ ./util.c 2018-11-21 14:04:38.631559624 +0000 +@@ -2064,8 +2064,40 @@ Perl_new_warnings_bitfield(pTHX_ STRLEN + *(s+(nlen+1+vlen)) = '\0' + + #ifdef USE_ENVIRON_ARRAY +- /* VMS' my_setenv() is in vms.c */ ++ ++/* small wrapper for use by Perl_my_setenv that mallocs, or reallocs if ++ * 'current' is non-null, with up to three sizes that are added together. ++ * It handles integer overflow. ++ */ ++static char * ++S_env_alloc(void *current, Size_t l1, Size_t l2, Size_t l3, Size_t size) ++{ ++ void *p; ++ Size_t sl, l = l1 + l2; ++ ++ if (l < l2) ++ goto panic; ++ l += l3; ++ if (l < l3) ++ goto panic; ++ sl = l * size; ++ if (sl < l) ++ goto panic; ++ ++ p = current ++ ? safesysrealloc(current, sl) ++ : safesysmalloc(sl); ++ if (p) ++ return (char*)p; ++ ++ panic: ++ croak_memory_wrap(); ++} ++ ++ ++/* VMS' my_setenv() is in vms.c */ + #if !defined(WIN32) && !defined(NETWARE) ++ + void + Perl_my_setenv(pTHX_ const char *nam, const char *val) + { +@@ -2081,28 +2113,27 @@ Perl_my_setenv(pTHX_ const char *nam, co + #ifndef PERL_USE_SAFE_PUTENV + if (!PL_use_safe_putenv) { + /* most putenv()s leak, so we manipulate environ directly */ +- I32 i; +- const I32 len = strlen(nam); +- int nlen, vlen; ++ UV i; ++ Size_t vlen, nlen = strlen(nam); + + /* where does it go? */ + for (i = 0; environ[i]; i++) { +- if (strnEQ(environ[i],nam,len) && environ[i][len] == '=') ++ if (strnEQ(environ[i], nam, nlen) && environ[i][nlen] == '=') + break; + } + + if (environ == PL_origenviron) { /* need we copy environment? */ +- I32 j; +- I32 max; ++ UV j, max; + char **tmpenv; + + max = i; + while (environ[max]) + max++; +- tmpenv = (char**)safesysmalloc((max+2) * sizeof(char*)); ++ /* XXX shouldn't that be max+1 rather than max+2 ??? - DAPM */ ++ tmpenv = (char**)S_env_alloc(NULL, max, 2, 0, sizeof(char*)); + for (j=0; jin_gosub); + /* Peephole optimizer: */ + DEBUG_STUDYDATA("Peep:", data, depth); + DEBUG_PEEP("Peep", scan, depth); +@@ -4189,30 +4232,12 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_ + * parsing code, as each (?:..) is handled by a different invocation of + * reg() -- Yves + */ +- JOIN_EXACT(scan,&min_subtract, &unfolded_multi_char, 0); ++ if (mutate_ok) ++ 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; +- } ++ rck_elide_nothing(scan); + + /* The principal pseudo-switch. Cannot be a switch, since we + look into several different things. */ +@@ -4238,7 +4263,7 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_ + * NOTE we dont use the return here! */ + (void)study_chunk(pRExC_state, &scan, &minlen, + &deltanext, next, &data_fake, stopparen, +- recursed_depth, NULL, f, depth+1); ++ recursed_depth, NULL, f, depth+1, mutate_ok); + + scan = next; + } else +@@ -4305,7 +4330,7 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_ + /* we suppose the run is continuous, last=next...*/ + minnext = study_chunk(pRExC_state, &scan, minlenp, + &deltanext, next, &data_fake, stopparen, +- recursed_depth, NULL, f,depth+1); ++ recursed_depth, NULL, f,depth+1, mutate_ok); + + if (min1 > minnext) + min1 = minnext; +@@ -4373,7 +4398,7 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_ + } + + if (PERL_ENABLE_TRIE_OPTIMISATION && +- OP( startbranch ) == BRANCH ) ++ OP( startbranch ) == BRANCH && mutate_ok) + { + /* demq. + +@@ -4825,6 +4850,7 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_ + newframe->stopparen = stopparen; + newframe->prev_recursed_depth = recursed_depth; + newframe->this_prev_frame= frame; ++ newframe->in_gosub = ((frame && frame->in_gosub) || OP(scan) == GOSUB); + + DEBUG_STUDYDATA("frame-new:",data,depth); + DEBUG_PEEP("fnew", scan, depth); +@@ -5043,7 +5069,7 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_ + (mincount == 0 + ? (f & ~SCF_DO_SUBSTR) + : f) +- ,depth+1); ++ ,depth+1, mutate_ok); + + if (flags & SCF_DO_STCLASS) + data->start_class = oclass; +@@ -5091,6 +5117,12 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_ + (void)ReREFCNT_inc(RExC_rx_sv); + } + ++ 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); +@@ -5105,7 +5137,8 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_ + if ( OP(oscan) == CURLYX && data + && data->flags & SF_IN_PAR + && !(data->flags & SF_HAS_EVAL) +- && !deltanext && minnext == 1 ) { ++ && !deltanext && minnext == 1 ++ && mutate_ok ) { + /* Try to optimize to CURLYN. */ + regnode *nxt = NEXTOPER(oscan) + EXTRA_STEP_2ARGS; + regnode * const nxt1 = nxt; +@@ -5155,6 +5188,7 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_ + /* Nor characters whose fold at run-time may be + * multi-character */ + && ! (RExC_seen & REG_UNFOLDED_MULTI_SEEN) ++ && mutate_ok + ) { + /* XXXX How to optimize if data == 0? */ + /* Optimize to a simpler form. */ +@@ -5201,7 +5235,7 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_ + #endif + /* Optimize again: */ + study_chunk(pRExC_state, &nxt1, minlenp, &deltanext, nxt, +- NULL, stopparen, recursed_depth, NULL, 0,depth+1); ++ NULL, stopparen, recursed_depth, NULL, 0,depth+1, mutate_ok); + } + else + oscan->flags = 0; +@@ -5328,11 +5362,7 @@ Perl_re_printf( aTHX_ "LHS=%" UVuf " RH + 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: +@@ -5592,7 +5622,7 @@ Perl_re_printf( aTHX_ "LHS=%" UVuf " RH + nscan = NEXTOPER(NEXTOPER(scan)); + minnext = study_chunk(pRExC_state, &nscan, minlenp, &deltanext, + last, &data_fake, stopparen, +- recursed_depth, NULL, f, depth+1); ++ recursed_depth, NULL, f, depth+1, mutate_ok); + if (scan->flags) { + if (deltanext) { + FAIL("Variable length lookbehind not implemented"); +@@ -5681,7 +5711,7 @@ Perl_re_printf( aTHX_ "LHS=%" UVuf " RH + *minnextp = study_chunk(pRExC_state, &nscan, minnextp, + &deltanext, last, &data_fake, + stopparen, recursed_depth, NULL, +- f,depth+1); ++ f,depth+1, mutate_ok); + if (scan->flags) { + if (deltanext) { + FAIL("Variable length lookbehind not implemented"); +@@ -5841,7 +5871,7 @@ Perl_re_printf( aTHX_ "LHS=%" UVuf " RH + branches even though they arent otherwise used. */ + minnext = study_chunk(pRExC_state, &scan, minlenp, + &deltanext, (regnode *)nextbranch, &data_fake, +- stopparen, recursed_depth, NULL, f,depth+1); ++ stopparen, recursed_depth, NULL, f,depth+1, mutate_ok); + } + if (nextbranch && PL_regkind[OP(nextbranch)]==BRANCH) + nextbranch= regnext((regnode*)nextbranch); +@@ -7520,7 +7550,7 @@ Perl_re_op_compile(pTHX_ SV ** const pat + &data, -1, 0, NULL, + SCF_DO_SUBSTR | SCF_WHILEM_VISITED_POS | stclass_flag + | (restudied ? SCF_TRIE_DOING_RESTUDY : 0), +- 0); ++ 0, TRUE); + + + CHECK_RESTUDY_GOTO_butfirst(LEAVE_with_name("study_chunk")); +@@ -7666,7 +7696,7 @@ Perl_re_op_compile(pTHX_ SV ** const pat + SCF_DO_STCLASS_AND|SCF_WHILEM_VISITED_POS|(restudied + ? SCF_TRIE_DOING_RESTUDY + : 0), +- 0); ++ 0, TRUE); + + CHECK_RESTUDY_GOTO_butfirst(NOOP); + diff --git a/perl.changes b/perl.changes new file mode 100644 index 0000000..8217ea0 --- /dev/null +++ b/perl.changes @@ -0,0 +1,781 @@ +* Wed Jul 5 2023 mls@suse.de +- enable TLS cert verification in CPAN [bnc#1210999] [CVE-2023-31484] + new patch: perl-cpan_verify_cert.diff +* Fri Sep 2 2022 mls@suse.de +- fix File::Path rmtree/remove_tree race condition + [bnc#1047178] [CVE-2017-6512] + new patch: perl-file_path_rmtree_fchmod.diff +* Thu Mar 31 2022 ali.abdallah@suse.com +- Stabilize Socket::VERSION comparisons [bnc#1193489] + new patch: perl-Stabilize-Socket-VERSION-comparisons.patch +* Fri Oct 30 2020 mls@suse.de +- Split DB_File module into a seperate perl-core-DB_File package + [jsc#SLE-12212] + * add Recommends: perl-core-DB_File to the perl package +- Fix build with newer glibc versions + new patch: perl-saltbits.diff +* Tue Jun 9 2020 mls@suse.de +- Fix various security issues in the study_chunk function + [bnc#1171863] [CVE-2020-10543] + [bnc#1171864] [CVE-2020-10878] + [bnc#1171866] [CVE-2020-12723] + new patch: perl-study.diff +- Comment out bad warning in features.ph file [bnc#1172348] +* Wed Feb 5 2020 mls@suse.de +- Backport perl-fix2020.patch to make timelocal calls work in + the year 2020 [bnc#1102840] [bnc#1160039] + new patch: perl-fix2020.patch +* Wed Nov 21 2018 mls@suse.de +- fix heap-based buffer overflow in regex + [bnc#1114686] [CVE-2018-18314] + new patch: perl-extended-charclass-assert.diff +- fix heap-buffer-overflow read if regex contains \0 chars + [bnc#1114681] [CVE-2018-18313] + new patch: perl-regcomp-strchr-memchr.diff +- fix reg_node overrun + [bnc#1114675] [CVE-2018-18312] + new patch: perl-reg-node-overrun.diff +- fix integer overflow with oversize environment + [bnc#1114674] [CVE-2018-18311] + new patch: perl-setenv-integer-wrap.diff +* Wed Jun 27 2018 mls@suse.de +- fix Archive::Tar directory traversal vulnerability [bnc#1096718] + [CVE-2018-12015] + new patch: perl-archive-tar-dirtrav.diff +* Thu Feb 22 2018 fvogt@suse.com +- Use %%license (boo#1082318) +* Mon Jan 22 2018 schwab@suse.de +- posix-sigaction.patch: make sure Perl_sighandler is always installed + with SA_SIGINFO (bsc#1064697) +* Wed Jan 10 2018 normand@linux.vnet.ibm.com +- ignore make check transient errors for PowerPC + that are reported since 20170907 + bypass boo#1063176 + new patch: perl_skip_flaky_tests_powerpc.patch +* Mon Dec 4 2017 bwiedemann@suse.com +- Add perl-reproducible.patch to make build reproducible (boo#1047218) +* Thu Nov 23 2017 rbrown@suse.com +- Replace references to /var/adm/fillup-templates with new + %%_fillupdir macro (boo#1069468) +* Sat Sep 23 2017 coolo@suse.com +- update to perl-5.26.1 + * [CVE-2017-12837] Heap buffer overflow in regular expression compiler + * [CVE-2017-12883] Buffer over-read in regular expression parser + * tons of bug fixes +- update list of obsoletes +* Wed Aug 30 2017 mls@suse.de +- update to perl-5.26.0 + * "." no longer in @INC + * "do" may now warn + * regexp: a literal left brace "{" should be escaped + * lexical subroutines are no longer experimental + * indented Here-documents + * new regular expression modifier /xx + * declaring a reference to a variable + * unicode 9.0 is now supported + * new Hash Function For 64-bit Builds +- rename perl-5.24.0.dif to perl-5.26.0.dif +- remove obsolete perl-avoid-warnings.patch +- remove obsolete Compress-Raw-Zlib-2.071-zlib-1.2.11.patch +* Thu May 18 2017 tchvatal@suse.com +- Remove patch from previous commit, does not work: + * Compress-Raw-Zlib-2.071-Adapt-tests-to-zlib-1.2.11.patch +- Add patch taken from upstream release instead: + * Compress-Raw-Zlib-2.071-zlib-1.2.11.patch +* Wed May 10 2017 mpluskal@suse.com +- Fix building with zlib-1.2.10 (RT#119762): + * Compress-Raw-Zlib-2.071-Adapt-tests-to-zlib-1.2.11.patch +* Wed May 3 2017 coolo@suse.com +- Update to perl-5.24.1 + - Di switch is now required for PerlIO debugging output + Previously PerlIO debugging output would be sent to the file specified + by the "PERLIO_DEBUG" environment variable if perl wasn't running setuid + and the -T or -t switches hadn't been parsed yet. + If perl performed output at a point where it hadn't yet parsed its + switches this could result in perl creating or overwriting the file + named by "PERLIO_DEBUG" even when the -T switch had been supplied. + Perl now requires the -Di switch to produce PerlIO debugging output. By + default this is written to "stderr", but can optionally be redirected to + a file by setting the "PERLIO_DEBUG" environment variable. + If perl is running setuid or the -T switch was supplied "PERLIO_DEBUG" + is ignored and the debugging output is sent to "stderr" as for any other + - D switch. + Core modules and tools no longer search "." for optional modules + The tools and many modules supplied in core no longer search the default + current directory entry in @INC for optional modules. For example, + Storable will remove the final "." from @INC before trying to load + Log::Agent. + This prevents an attacker injecting an optional module into a process + run by another user where the current directory is writable by the + attacker, e.g. the /tmp directory. +- Refresh patches +* Sun Jun 26 2016 schwab@suse.de +- Move parent.pm to perl-base, used by File::Temp +* Thu Jun 2 2016 idonmez@suse.com +- Add perl-avoid-warnings.patch to fix a warning in cop.h, which + breaks perf build due to -Werror. Already upstream. +* Tue May 10 2016 mls@suse.de +- Update to perl-5.24.0 + * postfix dereferencing is no longer experimental + * unicode 8.0 is now supported + * perl will now croak when closing an in-place output file fails + * new "\b{lb}" boundary in regular expressions + * qr/(?[ ])/" now works in UTF-8 locales + * integer shift ("<<" and ">>") now more explicitly defined + * printf and sprintf now allow reordered precision arguments + * more fields provided to "sigaction" callback with "SA_SIGINFO" + * hashbang redirection to Perl 6 + * set proper umask before calling mkstemp(3) + * fix loss of taint in canonpath + * remove duplicate environment variables from "environ" +- rename patch perl-5.22.0.dif to perl-5.24.0.dif +* Fri Feb 12 2016 idonmez@suse.com +- Update to perl-5.22.1 + * Several bugs, including a segmentation fault, have been fixed + with the bounds checking constructs (introduced in Perl 5.22) + * Module::CoreList has been upgraded from version 5.20150520 to + 5.20151213. + * PerlIO::scalar has been upgraded from version 0.22 to 0.23. + * POSIX has been upgraded from version 1.53 to 1.53_01. + * Storable has been upgraded from version 2.53 to 2.53_01. + * warnings has been upgraded from version 1.32 to 1.34. + * See perldelta.pod for all the changes. +- Update perl-5.22.0.dif stop patching CPAN.pm, it was MacOS only + and was breaking tests (due to SHA-1 mismatch). +* Thu Jan 7 2016 bwiedemann@suse.com +- fix perl_gen_filelist macro to not fail on foo.1 man page +* Mon Dec 7 2015 opensuse@dstoecker.de +- prevent bad RPM provides for Math::BigInt and DB + (patch file perl-5.22.0_wrong_rpm_provides.diff) +* Mon Jun 22 2015 dimstar@opensuse.org +- Reformat baselibs.conf. +* Tue Jun 9 2015 hsk@imb-jena.de +- update to perl-5.22.0 + * several new experimental features + * new <<>> (double-diamond) operator + * new "\b" boundaries in REs, w.r.t. Unicode + * non-capturing RE flag "/n" + * Unicode 7.0 + * "defined(@array)", "defined(%%hash)" are now fatal + * unescaped literal "{" in a pattern results in deprecation warning + * several modules updated + * modules CGI, Module::Build no longer included + * for a complete list of changes see perldelta.pod +- perl-5.20.0.dif changed to fit 5.22.0, and renamed to perl-5.22.0.dif +- changed patches to fit 5.22.0: perl-5.18.2-overflow.diff, + perl-netcmdutf8.diff, perl-regexp-refoverflow.diff, + perl-saverecontext.diff +- dropped patches (now upstream): DataDumper-no-infinite-recursion.diff, + perl-5.20.2-Fix-Errno.pm-generation-for-gcc-5.0.patch, + perl-5.21.8-h2ph-correct-handling-of-hex-constants-for-the-pream.patch, + perl-5.21.8-lib-h2ph.t-to-test-generated-t-_h2ph_pre.ph-instead-.patch +* Mon Feb 23 2015 idonmez@suse.com +- Add multiple patches for gcc5 support, tracked by RT#123784 + * perl-5.20.2-Fix-Errno.pm-generation-for-gcc-5.0.patch + * perl-5.21.8-h2ph-correct-handling-of-hex-constants-for-the-pream.patch + * perl-5.21.8-lib-h2ph.t-to-test-generated-t-_h2ph_pre.ph-instead-.patch +* Thu Feb 5 2015 coolo@suse.com +- use rm with -f to avoid prompts for rpmbuild in terminals +* Wed Sep 17 2014 mls@suse.de +- update to perl-5.20.1 + * some performance improvements and bug fixes + * utf8, version, File::Copy, Exporter and other modules + have been updated +- fix infinite recursion in Data::Dumper [bnc#896715] + new patch: DataDumper-no-infinite-recursion.diff +* Sun Jun 8 2014 coolo@suse.com +- fix some obsoletes +* Mon Jun 2 2014 mls@suse.de +- update to perl-5.20.0 + * experimental subroutine signatures + * new slice syntax + * experimental postfix dereferencing + * unicode 6.3 support + * better 64-bit support + * do" can no longer be used to call subroutines + * tainting now conforms to documentation + * performance enhancements + * multiple modules updated to current version +- perl-5.18.0.dif renamed to perl-5.20.0.dif +- dropped patches: perl-db6.diff, perl-gracefull-net-ftp.diff, + perl-threads.t-timeout.diff +* Mon Apr 7 2014 mls@suse.de +- move English.pm into perl-base [bnc#869736] +* Tue Mar 25 2014 rguenther@suse.com +- perl-5.18.2-overflow.diff: avoid undefined overflow in S_sv_2iuv_common +* Sat Jan 18 2014 schwab@suse.de +- perl-threads.t-timeout.diff: increase timeout in t/op/threads.t +* Wed Jan 8 2014 mls@suse.de +- update to perl-5.18.2 + * updates for the B::Concise, English, File::Glob modules + * a lexical subs regression has been fixed + * a regression when using SUPER with AUTOLOAD has been fixed + * a buffer overflow with very long identifiers has been fixed + * some other minor bug fixes +- perl-reg89.diff is no longer needed +* Wed Sep 4 2013 mls@suse.de +- add libperl_requires macro +* Tue Sep 3 2013 mls@suse.de +- update to perl-5.18.1 + * B has been upgraded from 1.42 to 1.42_01 + * Digest::SHA has been upgraded from 5.84 to 5.84_01 + * Module::CoreList has been upgraded from 2.89 to 2.96 + * A number of memory leaks in regexp have been plugged + * The debugger's man command been fixed + * @_ is now correctly visible in the debugger + * Lexical constants no longer crash when inlined + * Deep recursion warnings no longer crash lexical subroutines +- backport backref fix from upstream +- fix INC containing directories multiple times +* Thu Aug 8 2013 dvaleev@suse.com +- skip itimer test from Timer-HiRes for powerpc. Build hosts + are overloaded, building locally shows tests are passed + (skip_time_hires.patch) +* Sat Jun 15 2013 jengelh@inai.de +- Add perl-db6.diff to bring the DB_File module up to version 1.828 + where it supports building with libdb-6.0. +* Tue Jun 11 2013 coolo@suse.com +- moving the provides of perl-macros to perl-doc so we can check + for duplicated man pages in the gen_filelist macro +* Tue Jun 11 2013 coolo@suse.com +- obsolete perl-PathTools and other modules in core +* Thu Jun 6 2013 mls@suse.de +- update to 5.18.0 + * new handling of experimental features + * new hash functions to improve security + * better hash randomization + * upgrade to Unicode 6.2 + * support for computed labels + * vertical tabs are now whitespace + * smartmatch is experimental again + * lots of bug fixes +- change perl_requires macro to use MODULE_COMPAT form +* Mon May 20 2013 schwab@suse.de +- Disable testsuite only on qemu user space build +* Fri Nov 16 2012 coolo@suse.com +- update to 5.16.2 + * has been upgraded from version 2.70 to version 2.76 + Perl 5.16.2 represents approximately 2 months of development since Perl + 5.16.1 and contains approximately 740 lines of changes across 20 files + from 9 authors. +* Wed Nov 14 2012 opensuse@dstoecker.de +- fix version for Module::Build obsoletes, so installing newer version is possible +* Tue Sep 4 2012 coolo@suse.com +- update to 5.16.1 + * an off-by-two error in Scalar-List-Util has been fixed + * many perl modules updated +* Tue Jun 12 2012 coolo@suse.com +- update perl-base file list +* Wed May 30 2012 coolo@suse.com +- provide a higher version for Module::Build to calm down rpm +* Wed May 23 2012 mls@suse.de +- update to 5.16.0 + * new __SUB__ token to reference current sub + * more consistent eval + * ties can now be weakended + * supports (almost) unicode 6.1 + * proper supports for unicode in symbol names + * new foldcase function fc() + * continue no longer requires the switch feature + * removed LinuxThreads hack for $$ and getppid + * performance optimizations +* Mon Apr 2 2012 coolo@suse.com +- correct license statement +* Fri Jan 13 2012 mls@suse.de +- bring back NDBM_File [bnc#732929] +* Tue Oct 25 2011 mls@suse.de +- update to 5.14.2 + * calling bsd_glob with GLOB_ALTDIRFUNC no longer segfaults + * a heap overflow in decode_xs was fixed + * a memory leak in caller() was fixed + * modules were updated to their latest version + * several other bug fixes, see perldelta +* Fri Jun 17 2011 mls@suse.de +- update to 5.14.1 + - B::Deparse has been upgraded + - Pod::Perldoc has been upgraded + - given, when and default are now listed in perlfunc + - multiple other doc fixes and clarifications + - several bug fixes +* Thu May 26 2011 mls@suse.de +- backport CBuilder fix that keeps it from overwriting ccflags + from the perl config if CCFLAGS is set in the environment +* Tue May 17 2011 mls@suse.de +- Test::Simple is actually 0.98 +* Mon May 16 2011 mls@suse.de +- update to 5.14.0 + * unicode version 6.0 is now supported (mostly) + * any unsigned value can be encoded as a character + * some regexp enhancements, e.g. s///r option + * array and hash container functions accept references + * package block syntax + * overridable tie functions + * assignment to $0 works again + * improved IPv6 support in the Socket module +- fix regexp crash in reg_numbered_buff_fetch [bnc#676086] + [CVE-2010-4777] +- move unicode files from perl-doc to perl again [bnc#678877] +- remove feedback@suse.de mail address, it no longer exists + [bnc#657625] +- support unversioned site_perl include directory +* Wed Feb 23 2011 mls@suse.de +- versionify perl-Test-Simple provides/obsoletes +* Mon Feb 14 2011 mls@suse.de +- update to perl-5.12.3 final +- remove obsolete perl-cgi-injection.diff +- remove obsolete perl-constprint.diff +* Fri Jan 28 2011 lnussel@suse.de +- Suggest instead of Recommend perl-doc. It's not useful on a + end-user system and saves 20MB on a minimal installation. +* Fri Jan 14 2011 mls@suse.de +- update to perl-5.12.3-RC1 + * bug fix only release + * lvalue sub return values are now COW +- fix CGI injection bugs, CVE-2010-2761, CVE-2010-4410, + CVE-2010-4411 [bnc#657343] +* Tue Nov 30 2010 coolo@novell.com +- added a new macro %%perl_requires +* Mon Nov 29 2010 coolo@novell.com +- simplify macro logic a bit +* Mon Nov 22 2010 chris@computersalat.de +- rework process_packlist macro + o remove .packlist, perllocal.pod file + hence no /var/adm/perl-modules/perl-{cpan_name} +* Wed Nov 17 2010 meissner@suse.de +- increase the t/HiRes.t skew (for ppc). +* Mon Sep 27 2010 coolo@novell.com +- update to perl-5.12.2 + This release contains minor bug fixes and updates of several + core modules, as well as minor documentation updates. +* Wed Jul 28 2010 mls@suse.de +- fix constant print issue [bnc#621856] +- fix h2ph so that _h2ph_pre.ph doesn't lead to warnings +- do not add vendorlib/auto to filelist [bnc#624628] +* Mon Jun 28 2010 jengelh@medozas.de +- use %%_smp_mflags +* Fri Jun 18 2010 mls@suse.de +- update to perl-5.12.1 + * updated CGI.pm to 3.49 + * updated Pod::Simple to 3.13 + * updated Safe to 2.27 + * fixed a couple of bugs and regressions (see perldelta) +* Mon May 24 2010 bg@novell.com +- fix for hppa [deb#543731] +* Fri May 21 2010 mls@suse.de +- also run h2ph on /usr/include/linux [bnc#603840] +* Tue Apr 13 2010 mls@suse.de +- update to perl-5.12.0 final +- move Compress::Zlib.pm back into perlpriv directory, + moved autosplit file into it as well +* Fri Apr 9 2010 mls@suse.de +- update to perl-5.12.0-RC4 + * documentation updates + * don't initialize end in pp_reverse when begin is NULL + * fix eval + feature.pm + syntax error segfault +- move Compress::Zlib.pm into perlarch directory +* Sun Apr 4 2010 aj@suse.de +- Provide perl-base = pversion-release as well since this is + required by some packages. +* Wed Mar 31 2010 mls@suse.de +- update to perl-5.12.0-RC1 + * mostly documentation updates + * some regression fixes +* Wed Mar 24 2010 mls@suse.de +- update to perl-5.12.0-RC0 + * new ... operator + * unicode improvements + * "each" now also works on arrays + * support for "delete local" + * suidperl was dropped +* Fri Feb 12 2010 chris@computersalat.de +- fix for macros.perl + o only add mandir if exist :) +* Thu Jan 28 2010 rguenther@suse.de +- add libbz2-devel to BuildRequires +* Sun Dec 13 2009 jengelh@medozas.de +- enable parallel building +- package documentation as noarch +* Sun Oct 25 2009 coolo@novell.com +- update to perl-5.10.1 again +* Tue Sep 8 2009 mls@suse.de +- backport upstream fixes for POSIX module to avoid clashes + with Fcntl [bnc#446098], [bnc#515948] +- backport upstream fix for ISA assertion failure [bnc#528423] +- move unicode files from perl-doc to perl, otherwise some + perl modules will not work +* Sat Sep 5 2009 coolo@novell.com +- revert to 5.10.0, too many problems (10 failures and 162 + cyclic dependencies for d:l:p) +* Thu Sep 3 2009 mls@suse.de +- update to perl-5.10.1 to get rid of some patches + (the update mostly consists of changes in the + experimental features) +* Tue Jul 7 2009 coolo@novell.com +- disable as-needed as it breaks at least make test +* Tue Jul 7 2009 coolo@novell.com +- fix macros file +* Mon Jun 29 2009 chris@computersalat.de +- spec mods + o added lost Provides/Obsoletes perl-macros + o cleanup tags +* Fri Jun 26 2009 chris@computersalat.de +- fix for perl_gen_filelist + o add test for + - f "${RPM_BUILD_ROOT}/var/adm/perl-modules/{name}" +* Fri Jun 26 2009 mls@suse.de +- add macros.perl, README.macros files contributed by + Christian +- move perl specific macros from rpm macro file to macros.perl +* Wed Jun 10 2009 mls@suse.de +- fixed off-by-one in zlib inflate code [bnc#511241] +- fixed errorcount initialization [bnc#498425] +- fixed utf8 handling in Net::Cmd [bnc#493978] +- fixed performace degradation in syslog [bnc#489114] +* Wed Jan 14 2009 mls@suse.de +- work around nroff change [bnc#463444] +- fix another rmtree vulnerability [bnc#450385] +* Wed Jan 7 2009 olh@suse.de +- obsolete old -XXbit packages (bnc#437293) +* Wed Nov 26 2008 mls@suse.de +- add perl-base to baselibs.conf [bnc#448884] +- include everything arch dependand in baselibs packages +* Wed Nov 19 2008 mls@suse.de +- fix ph file generation [bnc#413218] +* Fri Aug 29 2008 rguenther@suse.de +- Add Tie/Hash.pm to perl-base. [bnc#421191] +* Mon Jul 14 2008 schwab@suse.de +- Fix another regexp backref overflow crash. +- Reenable testsuite on ppc64. +* Mon Jul 14 2008 mls@suse.de +- fix regexp backref overflow crash fix +* Fri Jul 11 2008 mls@suse.de +- fix bug File:Path that made synlink targets world-writable [bnc#402660] +- fix regexp backref overflow crash [bnc#372331] +* Tue May 6 2008 aj@suse.de +- Fix missing return value in configure script to silence rpmlint + checks. +* Fri Apr 11 2008 mls@suse.de +- compile with -DPERL_USE_SAFE_PUTENV [bnc#377543] +* Thu Apr 10 2008 ro@suse.de +- added baselibs.conf file to build xxbit packages + for multilib support +* Mon Mar 17 2008 coolo@suse.de +- fix path for generated perl bindings (bnc#371713) +* Sat Mar 15 2008 coolo@suse.de +- pod/perldiag.pod is needed in the base distribution +* Tue Mar 11 2008 coolo@suse.de +- after several discussions on how to decrease size of perl + distribution: split out perl-doc +- preparing blacklists for temporarly autorequires +* Mon Mar 10 2008 pth@suse.de +- Fix call to dbmclose in ext/ODBM_File/ODBM_File.xs +- Run 'make check' in %%check +* Tue Feb 19 2008 mls@suse.de +- fix bug in regexp engine [bnc#355233] +* Fri Jan 18 2008 mls@suse.de +- obsolete more packages +- fix bug in enc2xs [#354424] +* Tue Jan 15 2008 schwab@suse.de +- Remove broken test. +* Mon Jan 7 2008 mls@suse.de +- update to perl-5.10.0 + * happy 20th birthday, perl! + * many new features, e.g. say, switch, state, dor, smart match + * regular expressions now even more convoluted + * some modules are now in core, e.g. zlib, digest::sha + * modules updated to current version + * see perldelta to know all of the glorious details +* Tue Nov 6 2007 mls@suse.de +- fix buffer overflow in regex engine CVE-2007-5116 (#332199) +* Wed Oct 31 2007 dmueller@suse.de +- update rpmlintrc +* Fri May 25 2007 ro@suse.de +- added rpmlintrc: ignore some devel files in perl package +* Mon May 21 2007 rguenther@suse.de +- Include Config_heavy.pl in perl-base. +* Fri May 11 2007 rguenther@suse.de +- Add all required directories to perl-base. +* Mon Apr 23 2007 rguenther@suse.de +- Split off a perl-base package containing /usr/bin/perl and + some basic modules. +- Depend on perl-base from perl. +* Mon Mar 26 2007 rguenther@suse.de +- Add gdbm-devel, ncurses-devel and zlib-devel BuildRequires. +* Wed Dec 27 2006 schwab@suse.de +- Fix makedepend. +* Wed Dec 20 2006 jw@suse.de +- graceful-net-ftp patch added. + Lousy FTP server responses could trigger silly error messages in Net::FTP + and had no usable status_line in LWP. + Now it is 500 + whatever message the server responded. +* Fri Feb 17 2006 mls@suse.de +- suppress prototype warning in autouse [#151459] +* Wed Feb 1 2006 mls@suse.de +- update to perl-5.8.8 +- enable use64bitint on ppc/ppc64 +* Sun Jan 29 2006 mls@suse.de +- converted neededforbuild to BuildRequires +* Sat Jan 28 2006 mls@suse.de +- update to perl-5.8.8-RC1 +* Fri Dec 9 2005 mls@suse.de +- fix sprintf format string issues CVE-2005-3962 (#136360) +- added workaround for hanging debugger (#135559) +- moved SuSEconfig script to /usr/lib/perl5 (#130762) +* Tue Sep 6 2005 mls@suse.de +- fix infinite warn recursion by backporting change from bleadperl + [#115402] +* Thu Aug 18 2005 mls@suse.de +- remove postun, handle it with ghosts +* Thu Jul 28 2005 mls@suse.de +- deal with new Config_heavy.pl +* Mon Jul 25 2005 mls@suse.de +- add rmtree patch (CAN-2005-0448) +* Fri Jul 22 2005 lmuelle@suse.de +- update to perl-5.8.7 +* Wed Apr 6 2005 meissner@suse.de +- moved # icecream 0 tag where it does not get removed by checkin. +* Wed Apr 6 2005 meissner@suse.de +- Disable icecream to avoid problem with gcc4 / libperl.so preload. +* Thu Mar 24 2005 uli@suse.de +- fixed to build on ARM +* Fri Feb 18 2005 mls@suse.de +- fix perlbug mail sending +* Thu Feb 17 2005 mls@suse.de +- fix broken :encoding(utf8) +* Fri Feb 4 2005 mls@suse.de +- fix CAN-2005-0155/CAN-2005-0156 (PERLIO_DEBUG) +- fix CAN-2004-0452 (File::Path::rmtree) +* Mon Nov 29 2004 mls@suse.de +- update to perl-5.8.6 +* Thu Aug 26 2004 schwab@suse.de +- Remove gratuitous use of kernel header. +- Fix mkdir race. +* Wed Jul 28 2004 mls@suse.de +- update to perl-5.8.5 +* Tue Mar 16 2004 mls@suse.de +- fix instmodsh tmp file usage +* Fri Feb 27 2004 mls@suse.de +- update to perl-5.8.3 +* Mon Dec 8 2003 mls@suse.de +- fix setenv issue by making perl behave differently if used + embedded in an application (turns on PERL_USE_SAFE_PUTENV). + [#32548] +* Sun Nov 2 2003 adrian@suse.de +- add missing Requires for gzip (used in SuSEconfig.perl) +- make it possible to build as non-root +* Mon Oct 6 2003 mls@suse.de +- update to perl-5.8.1 +- fix srand initialization problem [perl change #21397] +* Mon Sep 22 2003 mls@suse.de +- update to perl-5.8.1-RC5 +* Fri Aug 22 2003 mls@suse.de +- update to perl-5.8.1-RC4 +- added sysconfig metadata +- use /usr/lib/perl* in the filelist so /usr/lib/debug doesn't get + picked up +* Thu Aug 21 2003 mjancar@suse.cz +- use $RPM_OPT_FLAGS +* Fri Aug 1 2003 mls@suse.de +- fixed perlcc +* Thu Jul 31 2003 mls@suse.de +- update to perl-5.8.1-RC3 +* Mon Jul 14 2003 mls@suse.de +- MM_Unix: fix vendor/siteman default path +* Fri Jul 11 2003 mls@suse.de +- create auto dirs in vendor_perl +* Fri Jul 11 2003 mls@suse.de +- update to perl-5.8.1-RC2 +- use buildroot +* Wed Jun 11 2003 kukuk@suse.de +- Add auto subdirectory for perl modules +* Fri May 9 2003 ro@suse.de +- fix build with db-4.1 +* Thu Feb 6 2003 mls@suse.de +- add sysconfig metadata to sysconfig.suseconfig-perl +- fix memory leak in socket creation +- restart stdio read/write when receiving EINTR +* Thu Jan 9 2003 mls@suse.de +- link with -lgdbm_compat when building ODBM_File +* Tue Sep 17 2002 ro@suse.de +- get all ph-files for bi-arch platforms +* Tue Sep 17 2002 mls@suse.de +- work around a bug in .ph file generation (#19664) +* Mon Sep 9 2002 mls@suse.de +- fix permissions of libperl.so +- added missing enc2xs binary +- create more .ph header files +- fixed h2ph enum handling +- (fixes bug #19175) +* Fri Aug 23 2002 mls@suse.de +- Fix bug in conversion of literals to floating point +- Add workaround for glibc crypt_r() bug +* Fri Aug 9 2002 mls@suse.de +- fix libs to include pthreads if threads are selected and + /lib64/libc.so.6 exists +* Thu Aug 8 2002 mls@suse.de +- enabled thread support +* Wed Aug 7 2002 mls@suse.de +- corrected file list, added obsolete entries also to provides +* Wed Jul 31 2002 mls@suse.de +- Added Obsoletes line to obsolete all modules now packed + with the core perl +* Fri Jul 26 2002 kukuk@suse.de +- Add a Provide "perl-base" [Bug #17259] +* Tue Jul 23 2002 mls@suse.de +- Allow missing tests in 'make test' +- delete broken lib/File/Find/t/find.t test +* Tue Jul 23 2002 mls@suse.de +- MM_Unix.pm: use INSTALLARCHLIB instead of INSTALLSITEARCH to + store the site perllocal.pod file, like the printed message says +- added missing man3 pages +* Mon Jul 22 2002 mls@suse.de +- MM_Unix.pm: allow to overwrite PREFIX in the makefile, use + better default for installsiteman{1,3}dir +* Fri Jul 19 2002 mls@suse.de +- update to perl-5.8.0 +* Fri Jul 5 2002 kukuk@suse.de +- Use %%ix86 macro +* Tue Jun 18 2002 uli@suse.de +- disable check on armv4l +* Mon Jun 10 2002 mls@suse.de +- Pod::Man: don't put the generation date in the man pages +* Thu Jun 6 2002 olh@suse.de +- disable make check on ppc64, enable lfs test on ppc +* Thu Mar 14 2002 mls@suse.de +- Allow XSUBs as AUTOLOAD functions, worked in 5.6.0, needed + for perl-Qt +* Fri Feb 22 2002 mls@suse.de +- Fixed File::Find if no_chdir is set (Ticket 20020213990000277) +* Wed Feb 20 2002 mls@suse.de +- Build DynaLoader.a with -fPIC to make mod_perl work on s390x +* Wed Feb 6 2002 coolo@suse.de +- patch Configure to also use -fPIC on Linux - prevents crashes on + s390x +- ported over the hints patch from 7.2-lib64 +* Tue Feb 5 2002 mls@suse.de +- Use Config.pm of libperl.so build, so that apps use the right + link options. +* Mon Feb 4 2002 mls@suse.de +- Added generation of libperl.so +* Thu Jan 24 2002 schwab@suse.de +- Fix h2ph for gcc 3. +* Mon Jan 14 2002 mls@suse.de +- Moved rc.config variable to sysconfig/suseconfig +* Mon Jan 7 2002 schwab@suse.de +- Fix dependency generation for gcc 3.1 again. +* Thu Dec 6 2001 schwab@suse.de +- Don't add /usr/local/lib and /usr/local/include to the search paths. +- Fix dependency generation for gcc 3.1. +* Tue Nov 20 2001 schwab@suse.de +- Don't generate h2ph, h2xs, pod2man manpages by hand. +* Thu Sep 27 2001 mls@suse.de +- Fixed generation of perllocal.pod, also create perllocal.3pm +* Wed Sep 12 2001 mls@suse.de +- Fixed h2ph macro expansion/redefinition bugs. +- Moved *.ph creation from SuSEconfig to spec file. +* Fri Aug 31 2001 schwab@suse.de +- Remove ia64 workarounds. +* Wed Jun 20 2001 mls@suse.de +- bzip2 source +* Wed Jun 20 2001 mls@suse.de +- Update to perl-5.6.1 +- Merged linux-alpha.sh and linux-sparc.sh into linux.sh +- axp compiler workaround: add -mieee +- use /lib64:/usr/lib64 on sparc64 +* Mon Jun 11 2001 schwab@suse.de +- Remove ElectricFence from neededforbuild (got added by accident). +* Fri Apr 13 2001 schwab@suse.de +- Build with -O0 on ia64. +* Mon Mar 26 2001 schwab@suse.de +- Fix equality operator for systems that don't have NV_PRESERVES_UV. +- Reenable some tests on ia64. +* Thu Feb 22 2001 schwab@suse.de +- Fix POSIX module. +* Tue Dec 5 2000 schwab@suse.de +- Disable some problematic tests on ia64. +- Merge ia64 configuration with generic linux. +* Thu Oct 26 2000 ro@suse.de +- use new db for DB_File +- perl binary is no longer linked to any db lib +* Tue Oct 10 2000 ro@suse.de +- Config.pm: set $perl to 'perl' +- bzipped sources +- added some mandir patches +* Mon Sep 25 2000 ro@suse.de +- no test for lfs on ppc +* Wed Aug 16 2000 ro@suse.de +- update to 5.6.0 +* Tue Aug 15 2000 ro@suse.de +- Security fix (/bin/mail+suidperl) added (from draht@suse.de) +* Fri Jul 14 2000 kukuk@suse.de +- Add license information and group tag (Bug #3454) +* Tue Jul 11 2000 ro@suse.de +- make perllocal.SuSE script more flexible +* Sat Apr 1 2000 bk@suse.de +- some tests don't pass on s390 too, known. +* Fri Mar 3 2000 schwab@suse.de +- Add support for ia64. +* Wed Jan 19 2000 ro@suse.de +- man -> /usr/share/man ; affects all perl packages +* Tue Dec 14 1999 kukuk@suse.de +- Fixed for SPARC +* Tue Nov 2 1999 ro@suse.de +- do h2ph for stdarg and stddef (BUG#785) +* Tue Oct 19 1999 ro@suse.de +- don't print error if /usr/src/linux is not owned by a package + (BUG#215) +* Mon Sep 13 1999 bs@suse.de +- ran old prepare_spec on spec file to switch to new prepare_spec. +* Fri Aug 27 1999 ro@suse.de +- added "gnu","net" and "rpc" to directories for h2ph +* Fri Jul 9 1999 ro@suse.de +- added "bits" to directories for h2ph (closing BUG 58) +* Thu Jul 8 1999 ro@suse.de +- fix for perldoc +- update to 5.005_03 +* Mon Mar 1 1999 ro@suse.de +- t/lib/anydbm: removed test 12 : create empty record: invalid for db2 +* Thu Jan 7 1999 ro@suse.de +- alpha changes ; dont "make test" on alpha for now :-( +* Mon Nov 16 1998 ro@suse.de +- update to 5.00502 +- fixed manpages for h2ph, h2xs, pod2man +- use configure.gnu +- keep SuSEconfig.perl from using more time than needed +* Fri Aug 28 1998 ro@suse.de +- updated to version perl5.004_05-MAINT_TRIAL_5 +- updated filelist +- temporarily disablet test op/group.t for nobody/nogroup problem +* Wed Aug 19 1998 ro@suse.de +- added security-patches for pstruct and perldoc +* Fri Jul 24 1998 bs@suse.de +- enabled bincompat3 +* Thu Jul 9 1998 ro@suse.de +- added some security and glib-patches (doio.c, perl.c) +- re-added support for gdbm +* Mon Jul 6 1998 ro@suse.de +- added rc.config.perl with variables: + CREATE_PERLLOCAL_POD="yes" + GENERATE_PERL_SYSTEM_INCLUDES="yes" +* Mon Jul 6 1998 ro@suse.de +- added SuSEconfig.perl and perllocal.SuSE + + check if kernel-sources have changed and call h2ph + + check installed modules and add/delete entries in perllocal.pod +* Thu Jan 22 1998 florian@suse.de +- use a fixed path as architecture name +* Tue Nov 11 1997 florian@suse.de +- fixed file list +- update to perl 5.004_04 +* Tue Oct 14 1997 ro@suse.de +- ready for autobuild + updated file list +* Thu Oct 9 1997 florian@suse.de +- prepare for autobuild +* Tue May 20 1997 florian@suse.de +- update to version 5.004 +- disable hooks to csh in perl, it is not installed on all systems +* Thu Jan 2 1997 bs@suse.de + h2ph call in doinst.sh added. +* Thu Jan 2 1997 florian@suse.de + update to version 5.003 + security fix for suidperl diff --git a/perl.spec b/perl.spec new file mode 100644 index 0000000..b4cbe4a --- /dev/null +++ b/perl.spec @@ -0,0 +1,483 @@ +# +# spec file for package perl +# +# Copyright (c) 2022-2023 ZhuningOS +# +# icecream 0 + + +#Compat macro for new _fillupdir macro introduced in Nov 2017 +%if ! %{defined _fillupdir} + %define _fillupdir /var/adm/fillup-templates +%endif + +Name: perl +Summary: The Perl interpreter +License: Artistic-1.0 or GPL-2.0+ +Group: Development/Languages/Perl +Version: 5.26.1 +Release: 150300.17.14.1 +%define pversion 5.26.1 +Url: http://www.perl.org/ +Source: http://www.cpan.org/src/5.0/perl-%{version}.tar.xz +Source1: %name-rpmlintrc +Source2: macros.perl +Source3: README.macros +Source4: baselibs.conf +Patch0: perl-5.26.0.dif +Patch2: perl-regexp-refoverflow.diff +Patch3: perl-nroff.diff +Patch4: perl-netcmdutf8.diff +Patch5: perl-HiRes.t-timeout.diff +Patch6: perl-saverecontext.diff +# PATCH-FIX-OPENSUSE perl-5.22.0_wrong_rpm_provides.diff Prevent generating bad RPM provides +Patch7: perl-5.22.0_wrong_rpm_provides.diff +Patch8: skip_time_hires.patch +Patch9: perl-incfix.diff +Patch11: perl-5.18.2-overflow.diff +# PATCH-FIX-OPENSUSE +Patch12: perl-reproducible.patch +Patch13: perl_skip_flaky_tests_powerpc.patch +Patch14: posix-sigaction.patch +Patch15: perl-archive-tar-dirtrav.diff +Patch16: perl-extended-charclass-assert.diff +Patch17: perl-regcomp-strchr-memchr.diff +Patch18: perl-reg-node-overrun.diff +Patch19: perl-setenv-integer-wrap.diff +Patch20: perl-fix2020.patch +Patch21: perl-study.diff +Patch22: perl-saltbits.diff +Patch23: perl-Stabilize-Socket-VERSION-comparisons.patch +Patch24: perl-file_path_rmtree_fchmod.diff +Patch25: perl-cpan_verify_cert.diff +BuildRoot: %{_tmppath}/%{name}-%{version}-build +PreReq: perl-base = %version +#PreReq: %fillup_prereq +BuildRequires: db-devel +BuildRequires: gdbm-devel +BuildRequires: libbz2-devel +BuildRequires: ncurses-devel +BuildRequires: xz +BuildRequires: zlib-devel +#Requires: gzip # needed in SuSEconfig.perl +Suggests: perl-doc = %version +Recommends: perl-core-DB_File +# +%if "%version" != "%pversion" +Provides: perl = %pversion-%release +%endif +Provides: perl-500 +Provides: perl(:MODULE_COMPAT_%pversion) +%global versionlist %nil +Provides: perl-Filter-Simple = 0.93 +Obsoletes: perl-Filter-Simple <= 0.93 +Provides: perl-I18N-LangTags = 0.42 +Obsoletes: perl-I18N-LangTags <= 0.42 +Provides: perl-MIME-Base64 = 3.15 +Obsoletes: perl-MIME-Base64 <= 3.15 +Provides: perl-Storable = 2.62 +Obsoletes: perl-Storable <= 2.62 +Provides: perl-Test-Simple = 1.302073 +Obsoletes: perl-Test-Simple <= 1.302073 +Provides: perl-Text-Balanced = 2.03 +Obsoletes: perl-Text-Balanced <= 2.03 +Provides: perl-Time-HiRes = 1.9741 +Obsoletes: perl-Time-HiRes <= 1.9741 +Provides: perl-libnet = 3.08 +Obsoletes: perl-libnet <= 3.08 +Provides: perl-Compress-Raw-Zlib = 2.074 +Obsoletes: perl-Compress-Raw-Zlib <= 2.074 +Provides: perl-Compress-Zlib = 2.074 +Obsoletes: perl-Compress-Zlib <= 2.074 +Provides: perl-IO-Compress-Base = 2.074 +Obsoletes: perl-IO-Compress-Base <= 2.074 +Provides: perl-IO-Compress-Zlib = 2.074 +Obsoletes: perl-IO-Compress-Zlib <= 2.074 +Provides: perl-IO-Zlib = 1.10 +Obsoletes: perl-IO-Zlib <= 1.10 +Provides: perl-Archive-Tar = 2.24 +Obsoletes: perl-Archive-Tar <= 2.24 +Provides: perl-Locale-Maketext-Simple = 0.21 +Obsoletes: perl-Locale-Maketext-Simple <= 0.21 +Provides: perl-Pod-Escapes = 1.07 +Obsoletes: perl-Pod-Escapes <= 1.07 +Provides: perl-Pod-Simple = 3.35 +Obsoletes: perl-Pod-Simple <= 3.35 +Provides: perl-ExtUtils-ParseXS = 3.34 +Obsoletes: perl-ExtUtils-ParseXS <= 3.34 +Provides: perl-CPAN-Meta = 2.150010 +Obsoletes: perl-CPAN-Meta <= 2.150010 +Provides: perl-CPAN-Meta-YAML = 0.018 +Obsoletes: perl-CPAN-Meta-YAML <= 0.018 +Provides: perl-ExtUtils-CBuilder = 0.280225 +Obsoletes: perl-ExtUtils-CBuilder <= 0.280225 +Provides: perl-IO-Socket-IP = 0.38 +Obsoletes: perl-IO-Socket-IP <= 0.38 +Provides: perl-Parse-CPAN-Meta = 1.4417 +Obsoletes: perl-Parse-CPAN-Meta <= 1.4417 +Provides: perl-PathTools = 3.63 +Obsoletes: perl-PathTools <= 3.63 +Provides: perl-autodie = 2.29 +Obsoletes: perl-autodie <= 2.29 +Provides: perl-Test-Harness = 3.38 +Obsoletes: perl-Test-Harness <= 3.38 +Provides: perl-version = 0.9917 +Obsoletes: perl-version <= 0.9917 + +%description +perl - Practical Extraction and Report Language + +Perl is optimized for scanning arbitrary text files, extracting +information from those text files, and printing reports based on that +information. It is also good for many system management tasks. Perl is +intended to be practical (easy to use, efficient, and complete) rather +than beautiful (tiny, elegant, and minimal). + +Some of the modules available on CPAN can be found in the "perl" +series. + +%package base +Summary: The Perl interpreter +Group: Development/Languages/Perl +Provides: perl-Digest +Provides: perl-Digest-MD5 +%if "%version" != "%pversion" +Provides: perl-base = %pversion-%release +%endif +# bug437293 +%ifarch ppc64 +Obsoletes: perl-64bit +%endif +# + +%description base +perl - Practical Extraction and Report Language + +Perl is optimized for scanning arbitrary text files, extracting +information from those text files, and printing reports based on that +information. It is also good for many system management tasks. + +Perl is intended to be practical (easy to use, efficient, and complete) +rather than beautiful (tiny, elegant, and minimal). + +This package contains only some basic modules and the perl binary +itself. + +%package core-DB_File +Summary: Perl 5 interface to Berkeley DB +Group: Development/Languages/Perl +Requires: perl = %version-%release + +%description core-DB_File +perl-core-DB_File - Perl 5 interface to Berkeley DB + +Perl is optimized for scanning arbitrary text files, extracting +information from those text files, and printing reports based on that +information. It is also good for many system management tasks. + +Perl is intended to be practical (easy to use, efficient, and complete) +rather than beautiful (tiny, elegant, and minimal). + +This package contains perl's DB_File module. + +%package doc +Summary: Perl Documentation +Group: Development/Languages/Perl +Requires: perl = %{version} +Provides: perl:/usr/share/man/man3/CORE.3pm.gz +%if 0%{?suse_version} >= 1120 +BuildArch: noarch +%endif +Provides: perl-macros = 2.0 +Obsoletes: perl-macros < 2.0 + +%description doc +Perl man pages and pod files. + +%prep +%setup -q -n perl-%{pversion} +cp -p %{S:3} . +%patch0 +%patch2 +%patch3 +%patch4 +%patch5 +%patch6 +%patch7 +%ifarch ppc ppc64 ppc64le +%patch8 -p1 +%patch13 -p1 +%endif +%patch9 +%patch11 +%patch12 -p1 +%patch14 -p1 +%patch15 +%patch16 +%patch17 +%patch18 +%patch19 +%patch20 +%patch21 +%patch22 +%patch23 -p1 +%patch24 +%patch25 + +%build +cp -a lib savelib +export SUSE_ASNEEDED=0 +export BZIP2_LIB=%{_libdir} +export BZIP2_INCLUDE=%{_includedir} +export BUILD_BZIP2=0 +options="-Doptimize='$RPM_OPT_FLAGS -Wall -pipe'" +%ifarch alpha +# -mieee needed for bad alpha gcc optimization +options="-Doptimize='$RPM_OPT_FLAGS -Wall -pipe -mieee'" +%endif +%ifarch ppc ppc64 +options="$options -Duse64bitint" +%endif +# this needs an installed perl, sorry +archname=%(perl -V:archname | sed "s!.*='!!;s!'.*!!") +test -n "$archname" +versionlist= +for v in %{?versionlist} ; do + test "$v" == none || versionlist="$versionlist $v/$archname $v" +done +test -n "$versionlist" || versionlist=none +versionlist=${versionlist# } +# always use glibc's setenv +options="$options -Accflags='-DPERL_USE_SAFE_PUTENV'" +options="$options -Dotherlibdirs=/usr/lib/perl5/site_perl -Dinc_version_list='$versionlist'" +chmod 755 ./configure.gnu +./configure.gnu --prefix=/usr -Dvendorprefix=/usr -Dinstallusrbinperl -Dusethreads -Di_db -Di_dbm -Di_ndbm -Di_gdbm -Dd_dbm_open -Duseshrplib=\'true\' $options +make %{?_smp_mflags} +cp -p libperl.so savelibperl.so +cp -p lib/Config.pm saveConfig.pm +cp -p lib/Config_heavy.pl saveConfig_heavy.pl +##make clean > /dev/null +make clobber +rm -rf lib +mv savelib lib +./configure.gnu --prefix=/usr -Dvendorprefix=/usr -Dinstallusrbinperl -Dusethreads -Di_db -Di_dbm -Di_ndbm -Di_gdbm -Dd_dbm_open $options +make %{?_smp_mflags} + +%check +%if !0%{?qemu_user_space_build} +export SUSE_ASNEEDED=0 +make test +%endif + +%install +make install DESTDIR=$RPM_BUILD_ROOT +cp -a $RPM_BUILD_ROOT/usr/lib/perl5/site_perl $RPM_BUILD_ROOT/usr/lib/perl5/vendor_perl +cpa=`echo $RPM_BUILD_ROOT/usr/lib/perl5/*/*/CORE | sed -e 's@/CORE$@@'` +cp=`echo "$cpa" | sed -e 's@/[^/]*$@@'` +vpa=`echo $cpa | sed -e 's@/perl5/@/perl5/vendor_perl/@'` +vp=`echo "$vpa" | sed -e 's@/[^/]*$@@'` +install -d $vp/auto +install -d $vpa/auto +install -m 555 savelibperl.so $cpa/CORE/libperl.so +install -m 444 saveConfig.pm $cpa/Config.pm +install -m 444 saveConfig_heavy.pl $cpa/Config_heavy.pl +#install -d $RPM_BUILD_ROOT/var/adm/SuSEconfig/bin +#install -d $RPM_BUILD_ROOT/sbin/conf.d +#install -d $RPM_BUILD_ROOT%{_fillupdir} +#install -m 755 SuSE/perllocal.SuSE $RPM_BUILD_ROOT/usr/lib/perl5 +#install -m 755 SuSE/SuSEconfig.perl $RPM_BUILD_ROOT/sbin/conf.d +#install -m 755 SuSE/sysconfig.suseconfig-perl $RPM_BUILD_ROOT%{_fillupdir} +# install macros.perl file +install -D -m 644 %{S:2} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.perl +pushd /usr/include +( rpm -ql glibc-devel | fgrep '.h' + find /usr/include/asm/ -name \*.h + find /usr/include/asm-generic -name \*.h + find /usr/include/linux -name \*.h +) | while read f; do + $RPM_BUILD_ROOT/usr/bin/perl -I$cp -I$cpa $RPM_BUILD_ROOT/usr/bin/h2ph -d $vpa ${f/\/usr\/include\//} || : +done +popd +d="`gcc -print-file-name=include`" +test -f "$d/stdarg.h" && (cd $d ; $RPM_BUILD_ROOT/usr/bin/perl -I$cp -I$cpa $RPM_BUILD_ROOT/usr/bin/h2ph -d $vpa stdarg.h stddef.h float.h) +# comment out bad warning from features.ph +sed -i -e '/requires. compiling. with. optimization/s/^/#/' $vpa/features.ph +# remove broken pm - we don't have the module +rm -f $RPM_BUILD_ROOT/usr/lib/perl5/*/Pod/Perldoc/ToTk.pm +# we don't need this in here +rm -f $RPM_BUILD_ROOT/usr/lib/perl5/*/*/CORE/libperl.a +#touch $RPM_BUILD_ROOT/usr/share/man/man3/perllocal.3pm +#touch $cpa/perllocal.pod +# test CVE-2007-5116 +$RPM_BUILD_ROOT/usr/bin/perl -e '$r=chr(128)."\\x{100}";/$r/' +# test perl-regexp-refoverflow.diff, should not crash or hang +$RPM_BUILD_ROOT/usr/bin/perl -e 'eval "/\\6666666666/"' +$RPM_BUILD_ROOT/usr/bin/perl -e '0 =~ /0(?n)|()(()(()(?0)|(?0)))(0)/' +$RPM_BUILD_ROOT/usr/bin/perl -e '0 =~ /0(?n)|()(()((?0)|(?0)))0*\N0/' +$RPM_BUILD_ROOT/usr/bin/perl -e '"000000"=~/0(?0)|0(?|0|0)/' +%if 0 +# remove unrelated target/os manpages +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlaix.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlamiga.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlapollo.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlbeos.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlbs2000.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlcygwin.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perldgux.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perldos.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlepoc.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlfreebsd.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlhpux.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlhurd.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlirix.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlmachten.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlmacos.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlmacosx.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlmint.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlnetware.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlopenbsd.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlos2.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlos390.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlos400.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlplan9.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlqnx.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlsolaris.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perltru64.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perluts.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlvmesa.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlvms.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlvos.1* +rm -f $RPM_BUILD_ROOT/usr/share/man/man1/perlwin32.1* +%endif +cat << EOF > perl-base-filelist +/usr/lib/perl5/%pversion/B/Deparse.pm +/usr/lib/perl5/%pversion/Carp.pm +/usr/lib/perl5/%pversion/Carp/ +/usr/lib/perl5/%pversion/Class/ +/usr/lib/perl5/%pversion/Config/ +/usr/lib/perl5/%pversion/Digest.pm +/usr/lib/perl5/%pversion/Digest/ +/usr/lib/perl5/%pversion/English.pm +/usr/lib/perl5/%pversion/Exporter.pm +/usr/lib/perl5/%pversion/Exporter/ +/usr/lib/perl5/%pversion/File/ +/usr/lib/perl5/%pversion/Getopt/ +/usr/lib/perl5/%pversion/IPC/ +/usr/lib/perl5/%pversion/Text/ +/usr/lib/perl5/%pversion/Tie/Hash.pm +/usr/lib/perl5/%pversion/XSLoader.pm +/usr/lib/perl5/%pversion/warnings.pm +/usr/lib/perl5/%pversion/warnings/ +/usr/lib/perl5/%pversion/AutoLoader.pm +/usr/lib/perl5/%pversion/FileHandle.pm +/usr/lib/perl5/%pversion/SelectSaver.pm +/usr/lib/perl5/%pversion/Symbol.pm +/usr/lib/perl5/%pversion/base.pm +/usr/lib/perl5/%pversion/bytes.pm +/usr/lib/perl5/%pversion/bytes_heavy.pl +/usr/lib/perl5/%pversion/constant.pm +/usr/lib/perl5/%pversion/fields.pm +/usr/lib/perl5/%pversion/feature.pm +/usr/lib/perl5/%pversion/integer.pm +/usr/lib/perl5/%pversion/locale.pm +/usr/lib/perl5/%pversion/overload.pm +/usr/lib/perl5/%pversion/overloading.pm +/usr/lib/perl5/%pversion/parent.pm +/usr/lib/perl5/%pversion/strict.pm +/usr/lib/perl5/%pversion/unicore/Heavy.pl +/usr/lib/perl5/%pversion/utf8.pm +/usr/lib/perl5/%pversion/utf8_heavy.pl +/usr/lib/perl5/%pversion/vars.pm +/usr/lib/perl5/%pversion/version.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/Data/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/Digest/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/File/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/List/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/Scalar/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/IO.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/IO/Dir.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/IO/File.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/IO/Handle.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/IO/Pipe.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/IO/Poll.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/IO/Seekable.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/IO/Select.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/IO/Socket.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/IO/Socket/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/B.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/Config.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/Config_heavy.pl +/usr/lib/perl5/%pversion/*-linux-thread-multi*/Cwd.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/DynaLoader.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/Errno.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/Fcntl.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/POSIX.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/Socket.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/attributes.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/auto/Data/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/auto/Digest/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/auto/Fcntl/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/auto/File/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/auto/IO/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/auto/List/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/auto/Cwd/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/auto/Socket/ +/usr/lib/perl5/%pversion/*-linux-thread-multi*/auto/POSIX/POSIX.so +/usr/lib/perl5/%pversion/*-linux-thread-multi*/lib.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/re.pm +EOF +{ + sed -e 's/^/%%exclude /' perl-base-filelist + (cd $RPM_BUILD_ROOT + for i in usr/lib/perl5/*/pod/*; do + case $i in */perldiag.pod) ;; + *) echo "%%exclude /$i" ;; + esac + done) +} > perl-base-excludes +#%%post +#%%{fillup_only -an suseconfig} + +%files base -f perl-base-filelist +%defattr(-,root,root) +%license Copying Artistic +%dir /usr/lib/perl5 +%dir /usr/lib/perl5/%pversion +%dir /usr/lib/perl5/%pversion/B +%dir /usr/lib/perl5/%pversion/*-linux-thread-multi* +%dir /usr/lib/perl5/%pversion/*-linux-thread-multi*/auto +%dir /usr/lib/perl5/%pversion/*-linux-thread-multi*/auto/POSIX +/usr/bin/perl +/usr/bin/perl%pversion +%doc /usr/share/man/man1/perl.1.gz + +%files -f perl-base-excludes +%defattr(-,root,root) +%exclude /usr/bin/perl +%exclude /usr/bin/perl%pversion +%exclude /usr/lib/perl5/%pversion/*-linux-thread-multi*/DB_File.pm +%exclude /usr/lib/perl5/%pversion/*-linux-thread-multi*/auto/DB_File +/usr/bin/* +/usr/lib/perl5/* +%config %{_sysconfdir}/rpm/macros.perl +#/sbin/conf.d/SuSEconfig.perl +#%{_fillupdir}/sysconfig.suseconfig-perl +#%ghost /usr/lib/perl*/*/*/perllocal.pod +#%ghost %doc /usr/share/man/man3/perllocal.3pm.gz + +%files core-DB_File +%defattr(-,root,root) +%license Copying Artistic +/usr/lib/perl5/%pversion/*-linux-thread-multi*/DB_File.pm +/usr/lib/perl5/%pversion/*-linux-thread-multi*/auto/DB_File + +%files doc +%defattr(-,root,root) +%doc README.macros +%exclude /usr/share/man/man1/perl.1.gz +%exclude /usr/lib/perl5/*/pod/perldiag.pod +%doc /usr/share/man/man1/* +%doc /usr/share/man/man3/* +%doc /usr/lib/perl5/*/pod + +%changelog diff --git a/perl_skip_flaky_tests_powerpc.patch b/perl_skip_flaky_tests_powerpc.patch new file mode 100644 index 0000000..f7973ca --- /dev/null +++ b/perl_skip_flaky_tests_powerpc.patch @@ -0,0 +1,130 @@ +From: Michel Normand +Subject: perl skip flaky tests powerpc +Date: Wed, 10 Jan 2018 12:55:38 +0100 + +skip flaky tests powerpc +as bypass https://bugzilla.suse.com/show_bug.cgi?id=1063176 + +Signed-off-by: Michel Normand +--- + cpan/Memoize/t/expmod_t.t | 1 + + dist/Time-HiRes/t/alarm.t | 2 +- + dist/Time-HiRes/t/clock.t | 2 +- + dist/Time-HiRes/t/nanosleep.t | 2 +- + dist/Time-HiRes/t/usleep.t | 2 +- + t/op/alarm.t | 1 + + t/op/sigsystem.t | 1 + + t/op/sselect.t | 2 ++ + t/op/stat.t | 1 + + 9 files changed, 10 insertions(+), 4 deletions(-) + +Index: perl-5.26.1/cpan/Memoize/t/expmod_t.t +=================================================================== +--- perl-5.26.1.orig/cpan/Memoize/t/expmod_t.t ++++ perl-5.26.1/cpan/Memoize/t/expmod_t.t +@@ -1,5 +1,6 @@ + #!/usr/bin/perl + ++use Test::More skip_all => "ppc workers are too busy"; + use lib '..'; + use Memoize; + BEGIN { +Index: perl-5.26.1/dist/Time-HiRes/t/alarm.t +=================================================================== +--- perl-5.26.1.orig/dist/Time-HiRes/t/alarm.t ++++ perl-5.26.1/dist/Time-HiRes/t/alarm.t +@@ -1,6 +1,6 @@ + use strict; + +-use Test::More tests => 10; ++use Test::More skip_all => "ppc workers are too busy"; + BEGIN { push @INC, '.' } + use t::Watchdog; + +Index: perl-5.26.1/dist/Time-HiRes/t/nanosleep.t +=================================================================== +--- perl-5.26.1.orig/dist/Time-HiRes/t/nanosleep.t ++++ perl-5.26.1/dist/Time-HiRes/t/nanosleep.t +@@ -8,7 +8,7 @@ BEGIN { + } + } + +-use Test::More tests => 3; ++use Test::More skip_all => "ppc workers are too busy"; + BEGIN { push @INC, '.' } + use t::Watchdog; + +Index: perl-5.26.1/dist/Time-HiRes/t/usleep.t +=================================================================== +--- perl-5.26.1.orig/dist/Time-HiRes/t/usleep.t ++++ perl-5.26.1/dist/Time-HiRes/t/usleep.t +@@ -8,7 +8,7 @@ BEGIN { + } + } + +-use Test::More tests => 6; ++use Test::More skip_all => "ppc workers are too busy"; + BEGIN { push @INC, '.' } + use t::Watchdog; + +Index: perl-5.26.1/t/op/alarm.t +=================================================================== +--- perl-5.26.1.orig/t/op/alarm.t ++++ perl-5.26.1/t/op/alarm.t +@@ -11,6 +11,7 @@ use Config; + if ( !$Config{d_alarm} ) { + skip_all("alarm() not implemented on this platform"); + } ++skip_all("ppc workers are too busy"); + + plan tests => 5; + my $Perl = which_perl(); +Index: perl-5.26.1/t/op/sigsystem.t +=================================================================== +--- perl-5.26.1.orig/t/op/sigsystem.t ++++ perl-5.26.1/t/op/sigsystem.t +@@ -11,6 +11,7 @@ use strict; + use constant TRUE => ($^X, '-e', 'exit 0'); + use Data::Dumper; + ++skip_all("ppc workers are too busy"); + plan tests => 4; + + SKIP: { +Index: perl-5.26.1/t/op/stat.t +=================================================================== +--- perl-5.26.1.orig/t/op/stat.t ++++ perl-5.26.1/t/op/stat.t +@@ -7,6 +7,7 @@ BEGIN { + } + + use Config; ++skip_all("ppc workers are too busy"); + + my ($Null, $Curdir); + if(eval {require File::Spec; 1}) { +Index: perl-5.26.1/t/op/sselect.t +=================================================================== +--- perl-5.26.1.orig/t/op/sselect.t ++++ perl-5.26.1/t/op/sselect.t +@@ -11,6 +11,8 @@ BEGIN { + skip_all("Win32 miniperl has no socket select") + if $^O eq "MSWin32" && is_miniperl(); + ++skip_all("ppc workers are too busy"); ++ + plan (16); + + my $blank = ""; +Index: perl-5.26.1/dist/Time-HiRes/t/clock.t +=================================================================== +--- perl-5.26.1.orig/dist/Time-HiRes/t/clock.t ++++ perl-5.26.1/dist/Time-HiRes/t/clock.t +@@ -1,6 +1,6 @@ + use strict; + +-use Test::More tests => 5; ++use Test::More skip_all => "ppc workers are too busy"; + BEGIN { push @INC, '.' } + use t::Watchdog; + diff --git a/posix-sigaction.patch b/posix-sigaction.patch new file mode 100644 index 0000000..faa02d9 --- /dev/null +++ b/posix-sigaction.patch @@ -0,0 +1,15 @@ +Index: perl-5.26.1/ext/POSIX/POSIX.xs +=================================================================== +--- perl-5.26.1.orig/ext/POSIX/POSIX.xs ++++ perl-5.26.1/ext/POSIX/POSIX.xs +@@ -3158,6 +3158,10 @@ sigaction(sig, optaction, oldaction = 0) + /* Set up any desired flags. */ + svp = hv_fetchs(action, "FLAGS", FALSE); + act.sa_flags = svp ? SvIV(*svp) : 0; ++#ifdef SA_SIGINFO ++ /* Perl_sighandler depends on the extra arguments. */ ++ act.sa_flags |= SA_SIGINFO; ++#endif + + /* Don't worry about cleaning up *sigsvp if this fails, + * because that means we tried to disposition a diff --git a/skip_time_hires.patch b/skip_time_hires.patch new file mode 100644 index 0000000..3bcf986 --- /dev/null +++ b/skip_time_hires.patch @@ -0,0 +1,12 @@ +Index: perl-5.18.0/dist/Time-HiRes/t/itimer.t +=================================================================== +--- perl-5.18.0.orig/dist/Time-HiRes/t/itimer.t ++++ perl-5.18.0/dist/Time-HiRes/t/itimer.t +@@ -1,5 +1,7 @@ + use strict; + ++use Test::More skip_all => "ppc workers are too busy"; ++ + sub has_symbol { + my $symbol = shift; + eval "use Time::HiRes qw($symbol)";