Sync from SUSE:ALP:Source:Standard:1.0 perl revision be25d643c612cda9a29bcb16b7cb2044

This commit is contained in:
Adrian Schröter 2023-12-21 13:42:06 +01:00
commit aa4e6a624b
21 changed files with 3129 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

42
README.macros Normal file
View File

@ -0,0 +1,42 @@
README for perl-macros
Author: Christian Wittmer <chris@computersalat.de>
%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

3
_multibuild Normal file
View File

@ -0,0 +1,3 @@
<multibuild>
<flavor>testsuite</flavor>
</multibuild>

4
baselibs.conf Normal file
View File

@ -0,0 +1,4 @@
perl
+lib(64)?/perl5/.*-linux-thread-multi.*
perl-base
+lib(64)?/perl5/.*-linux-thread-multi.*

136
macros.perl Normal file
View File

@ -0,0 +1,136 @@
# macros.perl file
# macros for perl module building. handle with care.
# Useful perl macros (from Artur Frysiak <wiget@t17.ds.pwr.wroc.pl>)
#
%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 <rsd@swi.com.br>)
#
%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 <chris@computersalat.de>)
# 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=${dir#$base_dir}\
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\
if [ "%{perl_vendorlib}/${i}" != "%{perl_vendorarch}" ]; then\
fgen_dir "%{perl_vendorlib}/${i}"\
fi\
RES=`find "${base_dir}/${i}" -maxdepth 1 -type f`\
for file in $RES; do\
fgen_file "%{perl_vendorlib}/${i}/$(basename ${file})"\
done\
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

11
perl-5.18.2-overflow.diff Normal file
View File

@ -0,0 +1,11 @@
--- ./sv.c.orig 2022-05-21 21:26:59.000000000 +0000
+++ ./sv.c 2022-06-23 11:53:50.561877702 +0000
@@ -2002,7 +2002,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 */

View File

@ -0,0 +1,12 @@
--- ./lib/sigtrap.pm.orig 2019-10-24 20:18:05.000000000 +0000
+++ ./lib/sigtrap.pm 2019-11-19 13:38:25.304577027 +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.
my $use_print;
$SIG{'ABRT'} = DEFAULT;
kill 'ABRT', $$ if $panic++;

492
perl-5.38.0.diff Normal file
View File

@ -0,0 +1,492 @@
--- Configure.orig 2023-06-02 01:12:22.000000000 +0000
+++ Configure 2023-07-19 12:31:54.415128119 +0000
@@ -114,7 +114,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"
@@ -1476,7 +1476,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"
@@ -2581,7 +2581,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
@@ -20673,14 +20673,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 <db.h>. I'll disable Berkeley DB." >&4
+ libs="$_old_libs"
i_db=$undef
case " $libs " in
*"-ldb "*)
@@ -20718,7 +20724,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 $compiler_warning try.out >>/dev/null 2>&1 ; then
db_hashtype='int'
else
@@ -20758,7 +20764,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 $compiler_warning try.out >>/dev/null 2>&1 ; then
db_prefixtype='int'
else
@@ -25564,7 +25570,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'
perl_thread_local='$perl_thread_local'
--- SuSE/SuSEconfig.perl.orig 2023-07-19 12:31:54.415128119 +0000
+++ SuSE/SuSEconfig.perl 2023-07-19 12:31:54.415128119 +0000
@@ -0,0 +1,76 @@
+#! /bin/bash
+#
+# Copyright (c) 1996 S.u.S.E. Gmbh Fuerth, Germany. All rights reserved.
+#
+# Author: Burchard Steinbild <bs@suse.de>, 1996
+# Martin Scherbaum <maddin@suse.de>, 5/1997
+# Ruediger Oertel <ro@suse.de>, 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 2023-07-19 12:31:54.415128119 +0000
+++ SuSE/perllocal.SuSE 2023-07-19 12:31:54.415128119 +0000
@@ -0,0 +1,83 @@
+#!/usr/bin/perl
+# Copyright (c) 1998 S.u.S.E. Gmbh Fuerth, Germany. All rights reserved.
+#
+# Author: Ruediger Oertel <ro@suse.de>, 1998
+#
+
+use Config;
+
+sub ReadFile {
+ local (*IF,*modules) = @_;
+
+ while(<IF>) {
+ 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/.*\|//;
+ $name =~ s/>$//;
+ $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 2023-07-19 12:31:54.415128119 +0000
+++ SuSE/sysconfig.suseconfig-perl 2023-07-19 12:31:54.415128119 +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 2023-05-26 01:05:34.000000000 +0000
+++ cpan/Compress-Raw-Zlib/config.in 2023-07-19 12:31:54.415128119 +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
USE_ZLIB_NG = False
--- cpan/Encode/bin/enc2xs.orig 2022-05-28 15:29:53.000000000 +0000
+++ cpan/Encode/bin/enc2xs 2023-07-19 12:31:54.419128114 +0000
@@ -1080,7 +1080,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 2023-05-26 01:05:34.000000000 +0000
+++ cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm 2023-07-19 12:31:54.419128114 +0000
@@ -206,8 +206,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 2020-12-28 16:57:43.000000000 +0000
+++ cpan/File-Temp/lib/File/Temp.pm 2023-07-19 12:31:54.419128114 +0000
@@ -151,7 +151,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 2020-12-28 16:57:43.000000000 +0000
+++ cpan/Sys-Syslog/t/syslog.t 2023-07-19 12:31:54.419128114 +0000
@@ -222,6 +222,7 @@ SKIP: {
}
}
else {
+ $r = 1 unless -e '/dev/log';
ok( $r, "setlogsock() should return true: '$r'" );
}
--- cpan/libnet/lib/Net/Config.pm.orig 2023-05-26 01:05:34.000000000 +0000
+++ cpan/libnet/lib/Net/Config.pm 2023-07-19 12:31:54.419128114 +0000
@@ -51,7 +51,7 @@ our %NetConfig = (
{
## no critic (BuiltinFunctions::ProhibitStringyEval)
$^O eq 'MacOS' and eval <<TRY_INTERNET_CONFIG;
-use Mac::InternetConfig;
+#use Mac::InternetConfig;
{
my %nc = (
--- ext/DynaLoader/hints/linux.pl.orig 2017-06-16 19:49:10.000000000 +0000
+++ ext/DynaLoader/hints/linux.pl 2023-07-19 12:31:54.419128114 +0000
@@ -2,4 +2,7 @@
# Some Linux releases like to hide their <nlist.h>
$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 2019-02-18 09:59:22.000000000 +0000
+++ ext/ODBM_File/Makefile.PL 2023-07-19 12:31:54.419128114 +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 2019-02-18 09:59:22.000000000 +0000
+++ ext/ODBM_File/hints/linux.pl 2023-07-19 12:31:54.419128114 +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 2023-05-26 01:05:34.000000000 +0000
+++ hints/linux.sh 2023-07-19 12:31:54.419128114 +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 <sys/stat.h>.
d_lstat=define
@@ -147,6 +161,7 @@ case "$optimize" in
esac
;;
esac
+ optimize="$optimize --pipe"
;;
esac
@@ -234,6 +249,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.'
@@ -281,6 +323,9 @@ else
echo "Couldn't find tcsh. Csh-based globbing might be broken."
fi
fi
+csh=''
+d_csh='undef'
+full_csh=''
# Shimpei Yamashita <shimpei@socrates.patnet.caltech.edu>
# Message-Id: <33EF1634.B36B6500@pobox.com>
@@ -391,6 +436,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 2022-05-28 15:29:53.000000000 +0000
+++ installperl 2023-07-19 12:31:54.419128114 +0000
@@ -650,7 +650,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) ||
$name=~/^Config_(heavy|git)\.pl\z/
--- lib/perl5db.pl.orig 2023-05-26 01:05:34.000000000 +0000
+++ lib/perl5db.pl 2023-07-19 12:31:54.419128114 +0000
@@ -2369,6 +2369,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,...
@@ -2473,6 +2475,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 2023-05-26 01:05:34.000000000 +0000
+++ utils/perlbug.PL 2023-07-19 12:31:54.419128114 +0000
@@ -1066,6 +1066,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';

BIN
perl-5.38.2.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

44
perl-HiRes.t-timeout.diff Normal file
View File

@ -0,0 +1,44 @@
--- ./dist/Time-HiRes/t/alarm.t.orig 2020-06-14 23:01:25.000000000 +0000
+++ ./dist/Time-HiRes/t/alarm.t 2020-10-27 10:52:36.824741858 +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 2020-06-14 23:01:25.000000000 +0000
+++ ./dist/Time-HiRes/t/clock.t 2020-10-27 10:52:36.824741858 +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 2020-06-14 23:01:25.000000000 +0000
+++ ./dist/Time-HiRes/t/itimer.t 2020-10-27 10:52:36.824741858 +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 2020-06-14 23:01:25.000000000 +0000
+++ ./dist/Time-HiRes/t/usleep.t 2020-10-27 10:52:36.824741858 +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);

39
perl-incfix.diff Normal file
View File

@ -0,0 +1,39 @@
diff -ur perl-5.34.0/perl_inc_macro.h perl-5.34.0_fix/perl_inc_macro.h
--- perl-5.34.0/perl_inc_macro.h 2021-01-21 00:04:44.000000000 +0100
+++ perl-5.34.0_fix/perl_inc_macro.h 2021-08-28 14:20:24.781533820 +0200
@@ -83,10 +83,12 @@
# define INCPUSH_PRIVLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(PRIVLIB_EXP), INCPUSH_CAN_RELOCATE);
#endif
+#if 0
#ifdef PERL_OTHERLIBDIRS
# define INCPUSH_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
/* submacros for INCPUSH_PERL5LIB */
@@ -133,19 +135,19 @@
#if defined(SITELIB_STEM) && defined(PERL_INC_VERSION_LIST)
/* Search for version-specific dirs below here */
# define INCPUSH_SITELIB_STEM 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 */
# define INCPUSH_PERL_VENDORLIB_STEM 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
# define INCPUSH_PERL_OTHERLIBDIRS_ARCHONLY 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

26
perl-netcmdutf8.diff Normal file
View File

@ -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);

19
perl-nroff.diff Normal file
View File

@ -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;
}

24
perl-reproducible.patch Normal file
View File

@ -0,0 +1,24 @@
PATCH-FIX-OPENSUSE
Author: Bernhard M. Wiedemann <bwiedemann suse de>
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

13
perl-reproducible2.patch Normal file
View File

@ -0,0 +1,13 @@
--- ./dist/Storable/stacksize.orig 2020-06-14 23:01:25.000000000 +0000
+++ ./dist/Storable/stacksize 2020-10-27 10:57:33.147900085 +0000
@@ -164,8 +164,8 @@ my $max_depth_hash = $n;
# be fairly aggressive in trimming this, smoke testing showed
# several apparently random failures here, eg. working in one
# configuration, but not in a very similar configuration.
-$max_depth = int(0.6 * $max_depth);
-$max_depth_hash = int(0.6 * $max_depth_hash);
+$max_depth = int(0.6 * $max_depth) & ~31;
+$max_depth_hash = int(0.6 * $max_depth_hash) & ~31;
my $stack_reserve = $^O eq "MSWin32" ? 32 : 16;
if ($] ge "5.016" && !($^O eq "cygwin" && $ptrsize == 8)) {

5
perl-rpmlintrc Normal file
View File

@ -0,0 +1,5 @@
# This line is mandatory to access the configuration functions
from Config import *
addFilter("perl.* devel-file-in-non-devel-package")

28
perl-saverecontext.diff Normal file
View File

@ -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;
+ }
}
}
}

1711
perl.changes Normal file

File diff suppressed because it is too large Load Diff

389
perl.spec Normal file
View File

@ -0,0 +1,389 @@
#
# spec file
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define flavor @BUILD_FLAVOR@%{nil}
%if "%{?flavor}" != "" && "%{?flavor}" != ("@BUILD_" + "FLAVOR@")
%define name_suffix -%{flavor}
%else
%define name_suffix %{nil}
%endif
%define pversion 5.38.2
# set to nil when equal to pversion
%global versionlist 5.38.0
Name: perl%{?name_suffix}
Version: 5.38.2
Release: 0
Summary: The Perl interpreter
License: Artistic-1.0 OR GPL-1.0-or-later
Group: Development/Languages/Perl
URL: https://www.perl.org/
Source: https://www.cpan.org/src/5.0/perl-%{version}.tar.xz
Source1: perl-rpmlintrc
Source2: macros.perl
Source3: README.macros
Source4: baselibs.conf
Patch0: perl-5.38.0.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 prevent changing package when rebuilding
Patch12: perl-reproducible.patch
# PATCH-FIX-OPENSUSE skip flaky tests powerpc as bypass https://bugzilla.suse.com/show_bug.cgi?id=1063176
Patch13: perl_skip_flaky_tests_powerpc.patch
# PATCH-FIX-UPSTREAM unmerged https://www.nntp.perl.org/group/perl.perl5.porters/2018/12/msg253240.html
Patch18: perl-reproducible2.patch
BuildRequires: db-devel
BuildRequires: gdbm-devel
BuildRequires: libbz2-devel
BuildRequires: ncurses-devel
# For t/op/magic and dist/threads/t/join - but because perl is a bootstrap package don't use it
#BuildRequires: procps
BuildRequires: xz
BuildRequires: zlib-devel
Requires: perl-base = %{version}
Suggests: perl-doc = %{version}
Provides: perl-500
Provides: perl-Archive-Tar = 2.40
Provides: perl(:MODULE_COMPAT_%{pversion})
%if "%{versionlist}" != ""
Provides: perl(:MODULE_COMPAT_%{versionlist})
%endif
Obsoletes: perl-Archive-Tar <= 2.40
Provides: perl-autodie = 2.36
Obsoletes: perl-autodie <= 2.36
Provides: perl-Compress-Raw-Zlib = 2.204
Obsoletes: perl-Compress-Raw-Zlib <= 2.204
Provides: perl-Compress-Zlib = 2.204
Obsoletes: perl-Compress-Zlib <= 2.204
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.280238
Obsoletes: perl-ExtUtils-CBuilder <= 0.280238
Provides: perl-ExtUtils-ParseXS = 3.51
Obsoletes: perl-ExtUtils-ParseXS <= 3.51
Provides: perl-Filter-Simple = 0.96
Obsoletes: perl-Filter-Simple <= 0.96
Provides: perl-I18N-LangTags = 0.45
Obsoletes: perl-I18N-LangTags <= 0.45
Provides: perl-IO-Compress-Base = 2.204
Obsoletes: perl-IO-Compress-Base <= 2.204
Provides: perl-IO-Compress-Zlib = 2.204
Obsoletes: perl-IO-Compress-Zlib <= 2.204
Provides: perl-IO-Socket-IP = 0.41
Obsoletes: perl-IO-Socket-IP <= 0.41
Provides: perl-IO-Zlib = 1.14
Obsoletes: perl-IO-Zlib <= 1.14
Provides: perl-libnet = 3.15
Obsoletes: perl-libnet <= 3.15
Provides: perl-Locale-Maketext-Simple = 0.21
Obsoletes: perl-Locale-Maketext-Simple <= 0.21
Provides: perl-MIME-Base64 = 3.16
Obsoletes: perl-MIME-Base64 <= 3.16
Provides: perl-Parse-CPAN-Meta = 2.150010
Obsoletes: perl-Parse-CPAN-Meta <= 2.150010
Provides: perl-PathTools = 3.88
Obsoletes: perl-PathTools <= 3.88
Provides: perl-Pod-Escapes = 1.07
Obsoletes: perl-Pod-Escapes <= 1.07
Provides: perl-Pod-Simple = 3.43
Obsoletes: perl-Pod-Simple <= 3.43
Provides: perl-Storable = 3.32
Obsoletes: perl-Storable <= 3.32
Provides: perl-Test-Harness = 3.44
Obsoletes: perl-Test-Harness <= 3.44
Provides: perl-Test-Simple = 1.302194
Obsoletes: perl-Test-Simple <= 1.302194
Provides: perl-Text-Balanced = 2.06
Obsoletes: perl-Text-Balanced <= 2.06
Provides: perl-Time-HiRes = 1.9775
Obsoletes: perl-Time-HiRes <= 1.9775
Provides: perl-version = 0.9929
Obsoletes: perl-version <= 0.9929
%if "%{version}" != "%{pversion}"
Provides: perl = %{pversion}-%{release}
%endif
%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 = 2.55
%if "%{version}" != "%{pversion}"
Provides: perl-base = %{pversion}-%{release}
%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 doc
Summary: Perl Documentation
Group: Development/Languages/Perl
Requires: perl = %{version}
Provides: perl-macros = 2.0
Provides: perl:%{_mandir}/man3/CORE.3pm.gz
Obsoletes: perl-macros < 2.0
BuildArch: noarch
%description doc
Perl man pages and pod files.
%prep
%setup -q -n perl-%{pversion}
cp -p %{SOURCE3} .
%patch0
%patch3
%patch4
%patch5
%patch6
%patch7
%ifarch ppc ppc64 ppc64le
%patch8 -p1
%patch13
%endif
%patch9 -p1
%patch11
%patch12 -p1
%patch18
%build
%define _lto_cflags %{nil}
cp -a lib savelib
export BZIP2_LIB=%{_libdir}
export BZIP2_INCLUDE=%{_includedir}
export BUILD_BZIP2=0
options="-Doptimize='%{optflags} -Wall -pipe'"
%ifarch alpha
# -mieee needed for bad alpha gcc optimization
options="-Doptimize='%{optflags} -Wall -pipe -mieee'"
%endif
# Use 64-bit integers everywhere
options="$options -Duse64bitint"
# 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# }
options="$options -Dotherlibdirs=/usr/lib/perl5/site_perl -Dinc_version_list='$versionlist'"
chmod 755 ./configure.gnu
./configure.gnu --prefix=%{_prefix} -Dvendorprefix=%{_prefix} -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 -j1 clobber
rm -rf lib
mv savelib lib
./configure.gnu --prefix=%{_prefix} -Dvendorprefix=%{_prefix} -Dinstallusrbinperl -Dusethreads -Di_db -Di_dbm -Di_ndbm -Di_gdbm -Dd_dbm_open $options
make %{?_smp_mflags}
%check
%if 0%{?qemu_user_space_build}
# Disable tests that are difficult to emulate
echo 'print "1..0\n";' > t/op/fork.t
echo 'print "1..0\n";' > t/op/magic.t
%endif
%if "%{name}" == "perl-testsuite"
TEST_JOBS="%{jobs}" make %{?_smp_mflags} test
%endif
%install
%if "%{name}" != "perl-testsuite"
%make_install
cp -a %{buildroot}/usr/lib/perl5/site_perl %{buildroot}/usr/lib/perl5/vendor_perl
cpa=`echo %{buildroot}/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 macros.perl file
install -D -m 644 %{SOURCE2} %{buildroot}%{_rpmconfigdir}/macros.d/macros.perl
pushd %{_includedir}
( rpm -ql glibc-devel | grep -F '.h'
find %{_includedir}/asm/ -name \*.h
find %{_includedir}/asm-generic -name \*.h
find %{_includedir}/linux -name \*.h
) | while read f; do
%{buildroot}%{_bindir}/perl -I$cp -I$cpa %{buildroot}%{_bindir}/h2ph -d $vpa ${f/\/usr\/include\//} || :
done
popd
d="`gcc -print-file-name=include`"
test -f "$d/stdarg.h" && (cd $d ; %{buildroot}%{_bindir}/perl -I$cp -I$cpa %{buildroot}%{_bindir}/h2ph -d $vpa stdarg.h stddef.h float.h)
# remove broken pm - we don't have the module
rm -f %{buildroot}/usr/lib/perl5/*/Pod/Perldoc/ToTk.pm
# we don't need this in here
rm -f %{buildroot}/usr/lib/perl5/*/*/CORE/libperl.a
# test CVE-2007-5116
%{buildroot}%{_bindir}/perl -e '$r=chr(128)."\\x{100}";/$r/'
# test perl-regexp-refoverflow.diff, should not crash or hang
%{buildroot}%{_bindir}/perl -e 'eval "/\\6666666666/"'
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}/builtin.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}/utf8.pm
/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 %{buildroot}
for i in usr/lib/perl5/*/pod/*; do
case $i in */perldiag.pod) ;;
*) echo "%%exclude /$i" ;;
esac
done)
} > perl-base-excludes
%endif
%if "%{name}" == "perl"
%files base -f perl-base-filelist
%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
%{_bindir}/perl
%{_bindir}/perl%{pversion}
%{_mandir}/man1/perl.1%{?ext_man}
%files -f perl-base-excludes
%exclude %{_bindir}/perl
%exclude %{_bindir}/perl%{pversion}
%{_bindir}/*
/usr/lib/perl5/*
%{_rpmconfigdir}/macros.d/macros.perl
%files doc
%doc README.macros
%exclude %{_mandir}/man1/perl.1.gz
%exclude /usr/lib/perl5/*/pod/perldiag.pod
%{_mandir}/man1/*
%{_mandir}/man3/*
%doc /usr/lib/perl5/*/pod
%endif
%changelog

View File

@ -0,0 +1,93 @@
--- cpan/Memoize/t/expmod_t.t.orig 2023-05-26 01:05:34.000000000 +0000
+++ cpan/Memoize/t/expmod_t.t 2023-07-19 14:04:47.663312737 +0000
@@ -1,4 +1,7 @@
use strict; use warnings;
+
+use Test::More skip_all => "ppc workers are too busy";
+
use Memoize;
use Memoize::Expire;
--- dist/Time-HiRes/t/alarm.t.orig 2023-07-19 13:59:43.995753782 +0000
+++ dist/Time-HiRes/t/alarm.t 2023-07-19 14:00:51.687655436 +0000
@@ -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;
--- dist/Time-HiRes/t/clock.t.orig 2023-07-19 13:59:43.995753782 +0000
+++ dist/Time-HiRes/t/clock.t 2023-07-19 14:00:51.687655436 +0000
@@ -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;
--- dist/Time-HiRes/t/nanosleep.t.orig 2020-12-28 16:57:44.000000000 +0000
+++ dist/Time-HiRes/t/nanosleep.t 2023-07-19 14:00:51.687655436 +0000
@@ -8,7 +8,7 @@ BEGIN {
}
}
-use Test::More tests => 4;
+use Test::More skip_all => "ppc workers are too busy";
BEGIN { push @INC, '.' }
use t::Watchdog;
--- dist/Time-HiRes/t/usleep.t.orig 2023-07-19 13:59:43.995753782 +0000
+++ dist/Time-HiRes/t/usleep.t 2023-07-19 14:00:51.687655436 +0000
@@ -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;
--- t/op/alarm.t.orig 2022-05-28 15:29:53.000000000 +0000
+++ t/op/alarm.t 2023-07-19 14:00:51.687655436 +0000
@@ -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();
--- t/op/sigsystem.t.orig 2019-02-18 09:59:23.000000000 +0000
+++ t/op/sigsystem.t 2023-07-19 14:00:51.687655436 +0000
@@ -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: {
--- t/op/sselect.t.orig 2023-05-26 01:05:34.000000000 +0000
+++ t/op/sselect.t 2023-07-19 14:02:28.583514670 +0000
@@ -13,6 +13,8 @@ BEGIN {
skip_all("Win32 miniperl has no socket select")
if $^O eq "MSWin32" && is_miniperl();
+skip_all("ppc workers are too busy");
+
plan (23);
my $blank = "";
--- t/op/stat.t.orig 2022-05-28 15:29:53.000000000 +0000
+++ t/op/stat.t 2023-07-19 14:00:51.687655436 +0000
@@ -9,6 +9,7 @@ BEGIN {
use strict;
use warnings;
use Config;
+skip_all("ppc workers are too busy");
my ($Null, $Curdir);
if(eval {require File::Spec; 1}) {

12
skip_time_hires.patch Normal file
View File

@ -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)";