From 339bcb10a4b0dc332d29d0d6330e02603746963d Mon Sep 17 00:00:00 2001 From: Ryan Voots Date: Thu, 28 Sep 2023 15:35:27 -0400 Subject: [PATCH] More generated files --- .../DevelPatchPerl.patch | 722 --------------- eol/5.008.009-main,threaded-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 722 --------------- eol/5.008.009-main-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 722 --------------- eol/5.008.009-slim,threaded-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 722 --------------- eol/5.008.009-slim-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 855 ------------------ eol/5.010.001-main,threaded-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 855 ------------------ eol/5.010.001-main-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 855 ------------------ eol/5.010.001-slim,threaded-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 855 ------------------ eol/5.010.001-slim-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 833 ----------------- eol/5.012.005-main,threaded-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 833 ----------------- eol/5.012.005-main-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 833 ----------------- eol/5.012.005-slim,threaded-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 833 ----------------- eol/5.012.005-slim-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 593 ------------ eol/5.014.004-main,threaded-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 593 ------------ eol/5.014.004-main-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 593 ------------ eol/5.014.004-slim,threaded-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 593 ------------ eol/5.014.004-slim-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 564 ------------ eol/5.016.003-main,threaded-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 564 ------------ eol/5.016.003-main-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 564 ------------ eol/5.016.003-slim,threaded-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 564 ------------ eol/5.016.003-slim-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 547 ----------- eol/5.018.004-main,threaded-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 547 ----------- eol/5.018.004-main-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 547 ----------- eol/5.018.004-slim,threaded-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 547 ----------- eol/5.018.004-slim-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 281 ------ eol/5.020.003-main,threaded-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 281 ------ eol/5.020.003-main-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 281 ------ eol/5.020.003-slim,threaded-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 281 ------ eol/5.020.003-slim-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 264 ------ eol/5.022.004-main,threaded-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 264 ------ eol/5.022.004-main-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 264 ------ eol/5.022.004-slim,threaded-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 264 ------ eol/5.022.004-slim-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 264 ------ eol/5.024.004-main,threaded-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 264 ------ eol/5.024.004-main-buster/Dockerfile | 29 - .../DevelPatchPerl.patch | 264 ------ eol/5.024.004-slim,threaded-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 264 ------ eol/5.024.004-slim-buster/Dockerfile | 53 -- .../DevelPatchPerl.patch | 213 ----- eol/5.026.003-main,threaded-buster/Dockerfile | 29 - .../rt-perl-133295.patch | 69 -- .../DevelPatchPerl.patch | 213 ----- eol/5.026.003-main-buster/Dockerfile | 29 - .../rt-perl-133295.patch | 69 -- .../DevelPatchPerl.patch | 213 ----- eol/5.026.003-slim,threaded-buster/Dockerfile | 53 -- .../rt-perl-133295.patch | 69 -- .../DevelPatchPerl.patch | 213 ----- eol/5.026.003-slim-buster/Dockerfile | 53 -- .../rt-perl-133295.patch | 69 -- .../DevelPatchPerl.patch | 178 ---- eol/5.028.003-main,threaded-buster/Dockerfile | 29 - .../rt-perl-133295.patch | 69 -- .../DevelPatchPerl.patch | 178 ---- eol/5.028.003-main-buster/Dockerfile | 29 - .../rt-perl-133295.patch | 69 -- .../DevelPatchPerl.patch | 178 ---- eol/5.028.003-slim,threaded-buster/Dockerfile | 53 -- .../rt-perl-133295.patch | 69 -- .../DevelPatchPerl.patch | 178 ---- eol/5.028.003-slim-buster/Dockerfile | 53 -- .../rt-perl-133295.patch | 69 -- eol/config.yml | 91 -- eol/downloads | 1 - 98 files changed, 23704 deletions(-) delete mode 100644 eol/5.008.009-main,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.008.009-main,threaded-buster/Dockerfile delete mode 100644 eol/5.008.009-main-buster/DevelPatchPerl.patch delete mode 100644 eol/5.008.009-main-buster/Dockerfile delete mode 100644 eol/5.008.009-slim,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.008.009-slim,threaded-buster/Dockerfile delete mode 100644 eol/5.008.009-slim-buster/DevelPatchPerl.patch delete mode 100644 eol/5.008.009-slim-buster/Dockerfile delete mode 100644 eol/5.010.001-main,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.010.001-main,threaded-buster/Dockerfile delete mode 100644 eol/5.010.001-main-buster/DevelPatchPerl.patch delete mode 100644 eol/5.010.001-main-buster/Dockerfile delete mode 100644 eol/5.010.001-slim,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.010.001-slim,threaded-buster/Dockerfile delete mode 100644 eol/5.010.001-slim-buster/DevelPatchPerl.patch delete mode 100644 eol/5.010.001-slim-buster/Dockerfile delete mode 100644 eol/5.012.005-main,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.012.005-main,threaded-buster/Dockerfile delete mode 100644 eol/5.012.005-main-buster/DevelPatchPerl.patch delete mode 100644 eol/5.012.005-main-buster/Dockerfile delete mode 100644 eol/5.012.005-slim,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.012.005-slim,threaded-buster/Dockerfile delete mode 100644 eol/5.012.005-slim-buster/DevelPatchPerl.patch delete mode 100644 eol/5.012.005-slim-buster/Dockerfile delete mode 100644 eol/5.014.004-main,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.014.004-main,threaded-buster/Dockerfile delete mode 100644 eol/5.014.004-main-buster/DevelPatchPerl.patch delete mode 100644 eol/5.014.004-main-buster/Dockerfile delete mode 100644 eol/5.014.004-slim,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.014.004-slim,threaded-buster/Dockerfile delete mode 100644 eol/5.014.004-slim-buster/DevelPatchPerl.patch delete mode 100644 eol/5.014.004-slim-buster/Dockerfile delete mode 100644 eol/5.016.003-main,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.016.003-main,threaded-buster/Dockerfile delete mode 100644 eol/5.016.003-main-buster/DevelPatchPerl.patch delete mode 100644 eol/5.016.003-main-buster/Dockerfile delete mode 100644 eol/5.016.003-slim,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.016.003-slim,threaded-buster/Dockerfile delete mode 100644 eol/5.016.003-slim-buster/DevelPatchPerl.patch delete mode 100644 eol/5.016.003-slim-buster/Dockerfile delete mode 100644 eol/5.018.004-main,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.018.004-main,threaded-buster/Dockerfile delete mode 100644 eol/5.018.004-main-buster/DevelPatchPerl.patch delete mode 100644 eol/5.018.004-main-buster/Dockerfile delete mode 100644 eol/5.018.004-slim,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.018.004-slim,threaded-buster/Dockerfile delete mode 100644 eol/5.018.004-slim-buster/DevelPatchPerl.patch delete mode 100644 eol/5.018.004-slim-buster/Dockerfile delete mode 100644 eol/5.020.003-main,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.020.003-main,threaded-buster/Dockerfile delete mode 100644 eol/5.020.003-main-buster/DevelPatchPerl.patch delete mode 100644 eol/5.020.003-main-buster/Dockerfile delete mode 100644 eol/5.020.003-slim,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.020.003-slim,threaded-buster/Dockerfile delete mode 100644 eol/5.020.003-slim-buster/DevelPatchPerl.patch delete mode 100644 eol/5.020.003-slim-buster/Dockerfile delete mode 100644 eol/5.022.004-main,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.022.004-main,threaded-buster/Dockerfile delete mode 100644 eol/5.022.004-main-buster/DevelPatchPerl.patch delete mode 100644 eol/5.022.004-main-buster/Dockerfile delete mode 100644 eol/5.022.004-slim,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.022.004-slim,threaded-buster/Dockerfile delete mode 100644 eol/5.022.004-slim-buster/DevelPatchPerl.patch delete mode 100644 eol/5.022.004-slim-buster/Dockerfile delete mode 100644 eol/5.024.004-main,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.024.004-main,threaded-buster/Dockerfile delete mode 100644 eol/5.024.004-main-buster/DevelPatchPerl.patch delete mode 100644 eol/5.024.004-main-buster/Dockerfile delete mode 100644 eol/5.024.004-slim,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.024.004-slim,threaded-buster/Dockerfile delete mode 100644 eol/5.024.004-slim-buster/DevelPatchPerl.patch delete mode 100644 eol/5.024.004-slim-buster/Dockerfile delete mode 100644 eol/5.026.003-main,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.026.003-main,threaded-buster/Dockerfile delete mode 100644 eol/5.026.003-main,threaded-buster/rt-perl-133295.patch delete mode 100644 eol/5.026.003-main-buster/DevelPatchPerl.patch delete mode 100644 eol/5.026.003-main-buster/Dockerfile delete mode 100644 eol/5.026.003-main-buster/rt-perl-133295.patch delete mode 100644 eol/5.026.003-slim,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.026.003-slim,threaded-buster/Dockerfile delete mode 100644 eol/5.026.003-slim,threaded-buster/rt-perl-133295.patch delete mode 100644 eol/5.026.003-slim-buster/DevelPatchPerl.patch delete mode 100644 eol/5.026.003-slim-buster/Dockerfile delete mode 100644 eol/5.026.003-slim-buster/rt-perl-133295.patch delete mode 100644 eol/5.028.003-main,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.028.003-main,threaded-buster/Dockerfile delete mode 100644 eol/5.028.003-main,threaded-buster/rt-perl-133295.patch delete mode 100644 eol/5.028.003-main-buster/DevelPatchPerl.patch delete mode 100644 eol/5.028.003-main-buster/Dockerfile delete mode 100644 eol/5.028.003-main-buster/rt-perl-133295.patch delete mode 100644 eol/5.028.003-slim,threaded-buster/DevelPatchPerl.patch delete mode 100644 eol/5.028.003-slim,threaded-buster/Dockerfile delete mode 100644 eol/5.028.003-slim,threaded-buster/rt-perl-133295.patch delete mode 100644 eol/5.028.003-slim-buster/DevelPatchPerl.patch delete mode 100644 eol/5.028.003-slim-buster/Dockerfile delete mode 100644 eol/5.028.003-slim-buster/rt-perl-133295.patch delete mode 100644 eol/config.yml delete mode 120000 eol/downloads diff --git a/eol/5.008.009-main,threaded-buster/DevelPatchPerl.patch b/eol/5.008.009-main,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 202f994..0000000 --- a/eol/5.008.009-main,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,722 +0,0 @@ -diff --git a/Configure b/Configure -index e746fe3..0bbd632 100755 ---- a/Configure -+++ b/Configure -@@ -4495,7 +4495,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4535,7 +4535,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4547,6 +4547,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5060,13 +5076,13 @@ esac - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if test -d /etc/conf/kconfig.d && -+ 2.*) if test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5075,7 +5091,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) echo " " - echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1 -@@ -5189,7 +5205,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 6f20c5e..684f369 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -253,20 +253,31 @@ sub write_errno_pm { - unless ($^O eq 'MacOS' || $^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index ac264c3..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -13,11 +13,14 @@ - # Updated Thu May 30 10:50:22 EDT 1996 by - - # Updated Fri Jun 21 11:07:54 EDT 1996 --# NDBM support for ELF renabled by -+# NDBM support for ELF re-enabled by - - # No version of Linux supports setuid scripts. - d_suidsafe='undef' - -+# No version of Linux needs libutil for perl. -+i_libutil='undef' -+ - # Debian and Red Hat, and perhaps other vendors, provide both runtime and - # development packages for some libraries. The runtime packages contain shared - # libraries with version information in their names (e.g., libgdbm.so.1.7.3); -@@ -36,7 +39,7 @@ d_suidsafe='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -54,15 +57,11 @@ set `echo X "$libswanted "| sed -e 's/ bsd / /' -e 's/ net / /' -e 's/ bind / /' - shift - libswanted="$*" - --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+# Debian 4.0 puts ndbm in the -lgdbm_compat library. -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -81,15 +80,23 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) -+ # record the version, formats: -+ # icc (ICC) 10.1 20080801 -+ # icpc (ICC) 10.1 20080801 -+ # followed by a copyright on the second line -+ ccversion=`${cc:-cc} --version | sed -n -e 's/^icp\?c \((ICC) \)\?//p'` - # This is needed for Configure's prototype checks to work correctly - # The -mp flag is needed to pass various floating point related tests - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -123,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -143,93 +150,91 @@ case "$optimize" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- -+# Ubuntu 11.04 (and later, presumably) doesn't keep most libraries -+# (such as -lm) in /lib or /usr/lib. So we have to ask gcc to tell us -+# where to look. We don't want gcc's own libraries, however, so we -+# filter those out. -+# This could be conditional on Unbuntu, but other distributions may -+# follow suit, and this scheme seems to work even on rather old gcc's. -+# This unconditionally uses gcc because even if the user is using another -+# compiler, we still need to find the math library and friends, and I don't -+# know how other compilers will cope with that situation. -+# Morever, if the user has their own gcc earlier in $PATH than the system gcc, -+# we don't want its libraries. So we try to prefer the system gcc -+# Still, as an escape hatch, allow Configure command line overrides to -+# plibpth to bypass this check. -+if [ -x /usr/bin/gcc ] ; then -+ gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else -- cat <<'EOM' >&4 -+ gcc=gcc -+fi - --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+case "$plibpth" in -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | -+ cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` -+ set X $plibpth # Collapse all entries on one line -+ shift -+ plibpth="$*" -+ ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --rm -f try.c a.out -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac -+ -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -296,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -311,24 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -375,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -408,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/hv.c b/hv.c -index 030db74..0d15a40 100644 ---- a/hv.c -+++ b/hv.c -@@ -31,7 +31,8 @@ holds the key and hash value. - #define PERL_HASH_INTERNAL_ACCESS - #include "perl.h" - --#define HV_MAX_LENGTH_BEFORE_SPLIT 14 -+#define HV_MAX_LENGTH_BEFORE_REHASH 14 -+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */ - - STATIC void - S_more_he(pTHX) -@@ -705,23 +706,8 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!counter) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max) { -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { - hsplit(hv); -- } else if(!HvREHASH(hv)) { -- U32 n_links = 1; -- -- while ((counter = HeNEXT(counter))) -- n_links++; -- -- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) { -- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit -- bucket splits on a rehashed hash, as we're not going to -- split it again, and if someone is lucky (evil) enough to -- get all the keys in one list they could exhaust our memory -- as we repeatedly double the number of buckets on every -- entry. Linear search feels a less worse thing to do. */ -- hsplit(hv); -- } - } - } - -@@ -1048,7 +1034,7 @@ S_hsplit(pTHX_ HV *hv) - - - /* Pick your policy for "hashing isn't working" here: */ -- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */ -+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */ - || HvREHASH(hv)) { - return; - } -@@ -1966,8 +1952,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags) - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) { -- hsplit(PL_strtab); -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { -+ hsplit(PL_strtab); - } - } - -diff --git a/lib/Time/Local.t b/lib/Time/Local.t -index 4f8674f..5fff350 100755 ---- a/lib/Time/Local.t -+++ b/lib/Time/Local.t -@@ -96,7 +96,7 @@ for (@time, @neg_time) { - if $year < 70 && ! $neg_epoch_ok; - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -110,7 +110,7 @@ for (@time, @neg_time) { - } - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -127,7 +127,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -136,14 +135,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/perl.c b/perl.c -index 82e5538..b9e02fe 100644 ---- a/perl.c -+++ b/perl.c -@@ -3758,7 +3758,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv, - # ifdef VMS - cpp_discard_flag = ""; - # else -- cpp_discard_flag = "-C"; -+ cpp_discard_flag = "-C -ffreestanding"; - # endif - - # ifdef OS2 -diff --git a/perlio.c b/perlio.c -index 7c5b76a..b54b9b1 100644 ---- a/perlio.c -+++ b/perlio.c -@@ -2323,6 +2323,12 @@ PerlIO_init(pTHX) - { - /* MUTEX_INIT(&PL_perlio_mutex) is done in PERL_SYS_INIT3(). */ - PERL_UNUSED_CONTEXT; -+ /* -+ * No, for backwards compatibility (before PERL_SYS_INIT3 changed to be -+ * defined as a separate function call), we need to call -+ * MUTEX_INIT(&PL_perlio_mutex) (via the PERLIO_INIT macro). -+ */ -+ PERLIO_INIT; - } - - void -diff --git a/pp.c b/pp.c -index 14f6e16..6d2cb29 100644 ---- a/pp.c -+++ b/pp.c -@@ -3486,8 +3486,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/t/op/hash.t b/t/op/hash.t -index 9bde518..45eb782 100755 ---- a/t/op/hash.t -+++ b/t/op/hash.t -@@ -39,22 +39,36 @@ use constant THRESHOLD => 14; - use constant START => "a"; - - # some initial hash data --my %h2 = map {$_ => 1} 'a'..'cc'; -+my %h2; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; - - # the minimum of bits required to mount the attack on a hash - my $min_bits = log(THRESHOLD)/log(2); -- - # if the hash has already been populated with a significant amount - # of entries the number of mask bits can be higher - my $keys = scalar keys %$hr; -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a3ff285..4b54598 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -783,6 +783,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -800,6 +805,18 @@ sub build_preamble_if_necessary - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - print PREAMBLE - "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n"; diff --git a/eol/5.008.009-main,threaded-buster/Dockerfile b/eol/5.008.009-main,threaded-buster/Dockerfile deleted file mode 100644 index 29cc2be..0000000 --- a/eol/5.008.009-main,threaded-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.8.9.tar.bz2 -o perl-5.8.9.tar.bz2 \ - && echo '1097fbcd48ceccb2bc735d119c9db399a02a8ab9f7dc53e29e47e6a8d0d72e79 *perl-5.8.9.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.8.9.tar.bz2 -C /usr/src/perl \ - && rm perl-5.8.9.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.8.9","-de0"] diff --git a/eol/5.008.009-main-buster/DevelPatchPerl.patch b/eol/5.008.009-main-buster/DevelPatchPerl.patch deleted file mode 100644 index 202f994..0000000 --- a/eol/5.008.009-main-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,722 +0,0 @@ -diff --git a/Configure b/Configure -index e746fe3..0bbd632 100755 ---- a/Configure -+++ b/Configure -@@ -4495,7 +4495,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4535,7 +4535,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4547,6 +4547,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5060,13 +5076,13 @@ esac - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if test -d /etc/conf/kconfig.d && -+ 2.*) if test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5075,7 +5091,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) echo " " - echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1 -@@ -5189,7 +5205,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 6f20c5e..684f369 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -253,20 +253,31 @@ sub write_errno_pm { - unless ($^O eq 'MacOS' || $^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index ac264c3..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -13,11 +13,14 @@ - # Updated Thu May 30 10:50:22 EDT 1996 by - - # Updated Fri Jun 21 11:07:54 EDT 1996 --# NDBM support for ELF renabled by -+# NDBM support for ELF re-enabled by - - # No version of Linux supports setuid scripts. - d_suidsafe='undef' - -+# No version of Linux needs libutil for perl. -+i_libutil='undef' -+ - # Debian and Red Hat, and perhaps other vendors, provide both runtime and - # development packages for some libraries. The runtime packages contain shared - # libraries with version information in their names (e.g., libgdbm.so.1.7.3); -@@ -36,7 +39,7 @@ d_suidsafe='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -54,15 +57,11 @@ set `echo X "$libswanted "| sed -e 's/ bsd / /' -e 's/ net / /' -e 's/ bind / /' - shift - libswanted="$*" - --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+# Debian 4.0 puts ndbm in the -lgdbm_compat library. -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -81,15 +80,23 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) -+ # record the version, formats: -+ # icc (ICC) 10.1 20080801 -+ # icpc (ICC) 10.1 20080801 -+ # followed by a copyright on the second line -+ ccversion=`${cc:-cc} --version | sed -n -e 's/^icp\?c \((ICC) \)\?//p'` - # This is needed for Configure's prototype checks to work correctly - # The -mp flag is needed to pass various floating point related tests - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -123,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -143,93 +150,91 @@ case "$optimize" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- -+# Ubuntu 11.04 (and later, presumably) doesn't keep most libraries -+# (such as -lm) in /lib or /usr/lib. So we have to ask gcc to tell us -+# where to look. We don't want gcc's own libraries, however, so we -+# filter those out. -+# This could be conditional on Unbuntu, but other distributions may -+# follow suit, and this scheme seems to work even on rather old gcc's. -+# This unconditionally uses gcc because even if the user is using another -+# compiler, we still need to find the math library and friends, and I don't -+# know how other compilers will cope with that situation. -+# Morever, if the user has their own gcc earlier in $PATH than the system gcc, -+# we don't want its libraries. So we try to prefer the system gcc -+# Still, as an escape hatch, allow Configure command line overrides to -+# plibpth to bypass this check. -+if [ -x /usr/bin/gcc ] ; then -+ gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else -- cat <<'EOM' >&4 -+ gcc=gcc -+fi - --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+case "$plibpth" in -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | -+ cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` -+ set X $plibpth # Collapse all entries on one line -+ shift -+ plibpth="$*" -+ ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --rm -f try.c a.out -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac -+ -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -296,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -311,24 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -375,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -408,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/hv.c b/hv.c -index 030db74..0d15a40 100644 ---- a/hv.c -+++ b/hv.c -@@ -31,7 +31,8 @@ holds the key and hash value. - #define PERL_HASH_INTERNAL_ACCESS - #include "perl.h" - --#define HV_MAX_LENGTH_BEFORE_SPLIT 14 -+#define HV_MAX_LENGTH_BEFORE_REHASH 14 -+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */ - - STATIC void - S_more_he(pTHX) -@@ -705,23 +706,8 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!counter) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max) { -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { - hsplit(hv); -- } else if(!HvREHASH(hv)) { -- U32 n_links = 1; -- -- while ((counter = HeNEXT(counter))) -- n_links++; -- -- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) { -- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit -- bucket splits on a rehashed hash, as we're not going to -- split it again, and if someone is lucky (evil) enough to -- get all the keys in one list they could exhaust our memory -- as we repeatedly double the number of buckets on every -- entry. Linear search feels a less worse thing to do. */ -- hsplit(hv); -- } - } - } - -@@ -1048,7 +1034,7 @@ S_hsplit(pTHX_ HV *hv) - - - /* Pick your policy for "hashing isn't working" here: */ -- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */ -+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */ - || HvREHASH(hv)) { - return; - } -@@ -1966,8 +1952,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags) - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) { -- hsplit(PL_strtab); -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { -+ hsplit(PL_strtab); - } - } - -diff --git a/lib/Time/Local.t b/lib/Time/Local.t -index 4f8674f..5fff350 100755 ---- a/lib/Time/Local.t -+++ b/lib/Time/Local.t -@@ -96,7 +96,7 @@ for (@time, @neg_time) { - if $year < 70 && ! $neg_epoch_ok; - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -110,7 +110,7 @@ for (@time, @neg_time) { - } - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -127,7 +127,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -136,14 +135,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/perl.c b/perl.c -index 82e5538..b9e02fe 100644 ---- a/perl.c -+++ b/perl.c -@@ -3758,7 +3758,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv, - # ifdef VMS - cpp_discard_flag = ""; - # else -- cpp_discard_flag = "-C"; -+ cpp_discard_flag = "-C -ffreestanding"; - # endif - - # ifdef OS2 -diff --git a/perlio.c b/perlio.c -index 7c5b76a..b54b9b1 100644 ---- a/perlio.c -+++ b/perlio.c -@@ -2323,6 +2323,12 @@ PerlIO_init(pTHX) - { - /* MUTEX_INIT(&PL_perlio_mutex) is done in PERL_SYS_INIT3(). */ - PERL_UNUSED_CONTEXT; -+ /* -+ * No, for backwards compatibility (before PERL_SYS_INIT3 changed to be -+ * defined as a separate function call), we need to call -+ * MUTEX_INIT(&PL_perlio_mutex) (via the PERLIO_INIT macro). -+ */ -+ PERLIO_INIT; - } - - void -diff --git a/pp.c b/pp.c -index 14f6e16..6d2cb29 100644 ---- a/pp.c -+++ b/pp.c -@@ -3486,8 +3486,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/t/op/hash.t b/t/op/hash.t -index 9bde518..45eb782 100755 ---- a/t/op/hash.t -+++ b/t/op/hash.t -@@ -39,22 +39,36 @@ use constant THRESHOLD => 14; - use constant START => "a"; - - # some initial hash data --my %h2 = map {$_ => 1} 'a'..'cc'; -+my %h2; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; - - # the minimum of bits required to mount the attack on a hash - my $min_bits = log(THRESHOLD)/log(2); -- - # if the hash has already been populated with a significant amount - # of entries the number of mask bits can be higher - my $keys = scalar keys %$hr; -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a3ff285..4b54598 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -783,6 +783,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -800,6 +805,18 @@ sub build_preamble_if_necessary - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - print PREAMBLE - "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n"; diff --git a/eol/5.008.009-main-buster/Dockerfile b/eol/5.008.009-main-buster/Dockerfile deleted file mode 100644 index 6291145..0000000 --- a/eol/5.008.009-main-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.8.9.tar.bz2 -o perl-5.8.9.tar.bz2 \ - && echo '1097fbcd48ceccb2bc735d119c9db399a02a8ab9f7dc53e29e47e6a8d0d72e79 *perl-5.8.9.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.8.9.tar.bz2 -C /usr/src/perl \ - && rm perl-5.8.9.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.8.9","-de0"] diff --git a/eol/5.008.009-slim,threaded-buster/DevelPatchPerl.patch b/eol/5.008.009-slim,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 202f994..0000000 --- a/eol/5.008.009-slim,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,722 +0,0 @@ -diff --git a/Configure b/Configure -index e746fe3..0bbd632 100755 ---- a/Configure -+++ b/Configure -@@ -4495,7 +4495,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4535,7 +4535,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4547,6 +4547,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5060,13 +5076,13 @@ esac - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if test -d /etc/conf/kconfig.d && -+ 2.*) if test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5075,7 +5091,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) echo " " - echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1 -@@ -5189,7 +5205,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 6f20c5e..684f369 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -253,20 +253,31 @@ sub write_errno_pm { - unless ($^O eq 'MacOS' || $^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index ac264c3..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -13,11 +13,14 @@ - # Updated Thu May 30 10:50:22 EDT 1996 by - - # Updated Fri Jun 21 11:07:54 EDT 1996 --# NDBM support for ELF renabled by -+# NDBM support for ELF re-enabled by - - # No version of Linux supports setuid scripts. - d_suidsafe='undef' - -+# No version of Linux needs libutil for perl. -+i_libutil='undef' -+ - # Debian and Red Hat, and perhaps other vendors, provide both runtime and - # development packages for some libraries. The runtime packages contain shared - # libraries with version information in their names (e.g., libgdbm.so.1.7.3); -@@ -36,7 +39,7 @@ d_suidsafe='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -54,15 +57,11 @@ set `echo X "$libswanted "| sed -e 's/ bsd / /' -e 's/ net / /' -e 's/ bind / /' - shift - libswanted="$*" - --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+# Debian 4.0 puts ndbm in the -lgdbm_compat library. -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -81,15 +80,23 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) -+ # record the version, formats: -+ # icc (ICC) 10.1 20080801 -+ # icpc (ICC) 10.1 20080801 -+ # followed by a copyright on the second line -+ ccversion=`${cc:-cc} --version | sed -n -e 's/^icp\?c \((ICC) \)\?//p'` - # This is needed for Configure's prototype checks to work correctly - # The -mp flag is needed to pass various floating point related tests - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -123,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -143,93 +150,91 @@ case "$optimize" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- -+# Ubuntu 11.04 (and later, presumably) doesn't keep most libraries -+# (such as -lm) in /lib or /usr/lib. So we have to ask gcc to tell us -+# where to look. We don't want gcc's own libraries, however, so we -+# filter those out. -+# This could be conditional on Unbuntu, but other distributions may -+# follow suit, and this scheme seems to work even on rather old gcc's. -+# This unconditionally uses gcc because even if the user is using another -+# compiler, we still need to find the math library and friends, and I don't -+# know how other compilers will cope with that situation. -+# Morever, if the user has their own gcc earlier in $PATH than the system gcc, -+# we don't want its libraries. So we try to prefer the system gcc -+# Still, as an escape hatch, allow Configure command line overrides to -+# plibpth to bypass this check. -+if [ -x /usr/bin/gcc ] ; then -+ gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else -- cat <<'EOM' >&4 -+ gcc=gcc -+fi - --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+case "$plibpth" in -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | -+ cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` -+ set X $plibpth # Collapse all entries on one line -+ shift -+ plibpth="$*" -+ ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --rm -f try.c a.out -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac -+ -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -296,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -311,24 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -375,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -408,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/hv.c b/hv.c -index 030db74..0d15a40 100644 ---- a/hv.c -+++ b/hv.c -@@ -31,7 +31,8 @@ holds the key and hash value. - #define PERL_HASH_INTERNAL_ACCESS - #include "perl.h" - --#define HV_MAX_LENGTH_BEFORE_SPLIT 14 -+#define HV_MAX_LENGTH_BEFORE_REHASH 14 -+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */ - - STATIC void - S_more_he(pTHX) -@@ -705,23 +706,8 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!counter) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max) { -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { - hsplit(hv); -- } else if(!HvREHASH(hv)) { -- U32 n_links = 1; -- -- while ((counter = HeNEXT(counter))) -- n_links++; -- -- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) { -- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit -- bucket splits on a rehashed hash, as we're not going to -- split it again, and if someone is lucky (evil) enough to -- get all the keys in one list they could exhaust our memory -- as we repeatedly double the number of buckets on every -- entry. Linear search feels a less worse thing to do. */ -- hsplit(hv); -- } - } - } - -@@ -1048,7 +1034,7 @@ S_hsplit(pTHX_ HV *hv) - - - /* Pick your policy for "hashing isn't working" here: */ -- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */ -+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */ - || HvREHASH(hv)) { - return; - } -@@ -1966,8 +1952,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags) - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) { -- hsplit(PL_strtab); -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { -+ hsplit(PL_strtab); - } - } - -diff --git a/lib/Time/Local.t b/lib/Time/Local.t -index 4f8674f..5fff350 100755 ---- a/lib/Time/Local.t -+++ b/lib/Time/Local.t -@@ -96,7 +96,7 @@ for (@time, @neg_time) { - if $year < 70 && ! $neg_epoch_ok; - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -110,7 +110,7 @@ for (@time, @neg_time) { - } - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -127,7 +127,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -136,14 +135,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/perl.c b/perl.c -index 82e5538..b9e02fe 100644 ---- a/perl.c -+++ b/perl.c -@@ -3758,7 +3758,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv, - # ifdef VMS - cpp_discard_flag = ""; - # else -- cpp_discard_flag = "-C"; -+ cpp_discard_flag = "-C -ffreestanding"; - # endif - - # ifdef OS2 -diff --git a/perlio.c b/perlio.c -index 7c5b76a..b54b9b1 100644 ---- a/perlio.c -+++ b/perlio.c -@@ -2323,6 +2323,12 @@ PerlIO_init(pTHX) - { - /* MUTEX_INIT(&PL_perlio_mutex) is done in PERL_SYS_INIT3(). */ - PERL_UNUSED_CONTEXT; -+ /* -+ * No, for backwards compatibility (before PERL_SYS_INIT3 changed to be -+ * defined as a separate function call), we need to call -+ * MUTEX_INIT(&PL_perlio_mutex) (via the PERLIO_INIT macro). -+ */ -+ PERLIO_INIT; - } - - void -diff --git a/pp.c b/pp.c -index 14f6e16..6d2cb29 100644 ---- a/pp.c -+++ b/pp.c -@@ -3486,8 +3486,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/t/op/hash.t b/t/op/hash.t -index 9bde518..45eb782 100755 ---- a/t/op/hash.t -+++ b/t/op/hash.t -@@ -39,22 +39,36 @@ use constant THRESHOLD => 14; - use constant START => "a"; - - # some initial hash data --my %h2 = map {$_ => 1} 'a'..'cc'; -+my %h2; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; - - # the minimum of bits required to mount the attack on a hash - my $min_bits = log(THRESHOLD)/log(2); -- - # if the hash has already been populated with a significant amount - # of entries the number of mask bits can be higher - my $keys = scalar keys %$hr; -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a3ff285..4b54598 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -783,6 +783,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -800,6 +805,18 @@ sub build_preamble_if_necessary - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - print PREAMBLE - "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n"; diff --git a/eol/5.008.009-slim,threaded-buster/Dockerfile b/eol/5.008.009-slim,threaded-buster/Dockerfile deleted file mode 100644 index 48a048f..0000000 --- a/eol/5.008.009-slim,threaded-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.8.9.tar.bz2 -o perl-5.8.9.tar.bz2 \ - && echo '1097fbcd48ceccb2bc735d119c9db399a02a8ab9f7dc53e29e47e6a8d0d72e79 *perl-5.8.9.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.8.9.tar.bz2 -C /usr/src/perl \ - && rm perl-5.8.9.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.8.9","-de0"] diff --git a/eol/5.008.009-slim-buster/DevelPatchPerl.patch b/eol/5.008.009-slim-buster/DevelPatchPerl.patch deleted file mode 100644 index 202f994..0000000 --- a/eol/5.008.009-slim-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,722 +0,0 @@ -diff --git a/Configure b/Configure -index e746fe3..0bbd632 100755 ---- a/Configure -+++ b/Configure -@@ -4495,7 +4495,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4535,7 +4535,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4547,6 +4547,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5060,13 +5076,13 @@ esac - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if test -d /etc/conf/kconfig.d && -+ 2.*) if test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5075,7 +5091,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) echo " " - echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1 -@@ -5189,7 +5205,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 6f20c5e..684f369 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -253,20 +253,31 @@ sub write_errno_pm { - unless ($^O eq 'MacOS' || $^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index ac264c3..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -13,11 +13,14 @@ - # Updated Thu May 30 10:50:22 EDT 1996 by - - # Updated Fri Jun 21 11:07:54 EDT 1996 --# NDBM support for ELF renabled by -+# NDBM support for ELF re-enabled by - - # No version of Linux supports setuid scripts. - d_suidsafe='undef' - -+# No version of Linux needs libutil for perl. -+i_libutil='undef' -+ - # Debian and Red Hat, and perhaps other vendors, provide both runtime and - # development packages for some libraries. The runtime packages contain shared - # libraries with version information in their names (e.g., libgdbm.so.1.7.3); -@@ -36,7 +39,7 @@ d_suidsafe='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -54,15 +57,11 @@ set `echo X "$libswanted "| sed -e 's/ bsd / /' -e 's/ net / /' -e 's/ bind / /' - shift - libswanted="$*" - --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+# Debian 4.0 puts ndbm in the -lgdbm_compat library. -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -81,15 +80,23 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) -+ # record the version, formats: -+ # icc (ICC) 10.1 20080801 -+ # icpc (ICC) 10.1 20080801 -+ # followed by a copyright on the second line -+ ccversion=`${cc:-cc} --version | sed -n -e 's/^icp\?c \((ICC) \)\?//p'` - # This is needed for Configure's prototype checks to work correctly - # The -mp flag is needed to pass various floating point related tests - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -123,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -143,93 +150,91 @@ case "$optimize" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- -+# Ubuntu 11.04 (and later, presumably) doesn't keep most libraries -+# (such as -lm) in /lib or /usr/lib. So we have to ask gcc to tell us -+# where to look. We don't want gcc's own libraries, however, so we -+# filter those out. -+# This could be conditional on Unbuntu, but other distributions may -+# follow suit, and this scheme seems to work even on rather old gcc's. -+# This unconditionally uses gcc because even if the user is using another -+# compiler, we still need to find the math library and friends, and I don't -+# know how other compilers will cope with that situation. -+# Morever, if the user has their own gcc earlier in $PATH than the system gcc, -+# we don't want its libraries. So we try to prefer the system gcc -+# Still, as an escape hatch, allow Configure command line overrides to -+# plibpth to bypass this check. -+if [ -x /usr/bin/gcc ] ; then -+ gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else -- cat <<'EOM' >&4 -+ gcc=gcc -+fi - --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+case "$plibpth" in -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | -+ cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` -+ set X $plibpth # Collapse all entries on one line -+ shift -+ plibpth="$*" -+ ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --rm -f try.c a.out -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac -+ -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -296,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -311,24 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -375,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -408,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/hv.c b/hv.c -index 030db74..0d15a40 100644 ---- a/hv.c -+++ b/hv.c -@@ -31,7 +31,8 @@ holds the key and hash value. - #define PERL_HASH_INTERNAL_ACCESS - #include "perl.h" - --#define HV_MAX_LENGTH_BEFORE_SPLIT 14 -+#define HV_MAX_LENGTH_BEFORE_REHASH 14 -+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */ - - STATIC void - S_more_he(pTHX) -@@ -705,23 +706,8 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!counter) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max) { -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { - hsplit(hv); -- } else if(!HvREHASH(hv)) { -- U32 n_links = 1; -- -- while ((counter = HeNEXT(counter))) -- n_links++; -- -- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) { -- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit -- bucket splits on a rehashed hash, as we're not going to -- split it again, and if someone is lucky (evil) enough to -- get all the keys in one list they could exhaust our memory -- as we repeatedly double the number of buckets on every -- entry. Linear search feels a less worse thing to do. */ -- hsplit(hv); -- } - } - } - -@@ -1048,7 +1034,7 @@ S_hsplit(pTHX_ HV *hv) - - - /* Pick your policy for "hashing isn't working" here: */ -- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */ -+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */ - || HvREHASH(hv)) { - return; - } -@@ -1966,8 +1952,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags) - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) { -- hsplit(PL_strtab); -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { -+ hsplit(PL_strtab); - } - } - -diff --git a/lib/Time/Local.t b/lib/Time/Local.t -index 4f8674f..5fff350 100755 ---- a/lib/Time/Local.t -+++ b/lib/Time/Local.t -@@ -96,7 +96,7 @@ for (@time, @neg_time) { - if $year < 70 && ! $neg_epoch_ok; - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -110,7 +110,7 @@ for (@time, @neg_time) { - } - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -127,7 +127,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -136,14 +135,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/perl.c b/perl.c -index 82e5538..b9e02fe 100644 ---- a/perl.c -+++ b/perl.c -@@ -3758,7 +3758,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv, - # ifdef VMS - cpp_discard_flag = ""; - # else -- cpp_discard_flag = "-C"; -+ cpp_discard_flag = "-C -ffreestanding"; - # endif - - # ifdef OS2 -diff --git a/perlio.c b/perlio.c -index 7c5b76a..b54b9b1 100644 ---- a/perlio.c -+++ b/perlio.c -@@ -2323,6 +2323,12 @@ PerlIO_init(pTHX) - { - /* MUTEX_INIT(&PL_perlio_mutex) is done in PERL_SYS_INIT3(). */ - PERL_UNUSED_CONTEXT; -+ /* -+ * No, for backwards compatibility (before PERL_SYS_INIT3 changed to be -+ * defined as a separate function call), we need to call -+ * MUTEX_INIT(&PL_perlio_mutex) (via the PERLIO_INIT macro). -+ */ -+ PERLIO_INIT; - } - - void -diff --git a/pp.c b/pp.c -index 14f6e16..6d2cb29 100644 ---- a/pp.c -+++ b/pp.c -@@ -3486,8 +3486,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/t/op/hash.t b/t/op/hash.t -index 9bde518..45eb782 100755 ---- a/t/op/hash.t -+++ b/t/op/hash.t -@@ -39,22 +39,36 @@ use constant THRESHOLD => 14; - use constant START => "a"; - - # some initial hash data --my %h2 = map {$_ => 1} 'a'..'cc'; -+my %h2; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; - - # the minimum of bits required to mount the attack on a hash - my $min_bits = log(THRESHOLD)/log(2); -- - # if the hash has already been populated with a significant amount - # of entries the number of mask bits can be higher - my $keys = scalar keys %$hr; -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a3ff285..4b54598 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -783,6 +783,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -800,6 +805,18 @@ sub build_preamble_if_necessary - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - print PREAMBLE - "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n"; diff --git a/eol/5.008.009-slim-buster/Dockerfile b/eol/5.008.009-slim-buster/Dockerfile deleted file mode 100644 index d6bc044..0000000 --- a/eol/5.008.009-slim-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.8.9.tar.bz2 -o perl-5.8.9.tar.bz2 \ - && echo '1097fbcd48ceccb2bc735d119c9db399a02a8ab9f7dc53e29e47e6a8d0d72e79 *perl-5.8.9.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.8.9.tar.bz2 -C /usr/src/perl \ - && rm perl-5.8.9.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.8.9","-de0"] diff --git a/eol/5.010.001-main,threaded-buster/DevelPatchPerl.patch b/eol/5.010.001-main,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 11cd099..0000000 --- a/eol/5.010.001-main,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,855 +0,0 @@ -diff --git a/Configure b/Configure -index 01fa3c0..46dd11c 100755 ---- a/Configure -+++ b/Configure -@@ -4518,7 +4518,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4558,7 +4558,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4570,6 +4570,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5110,13 +5126,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5125,7 +5141,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5227,7 +5243,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 124b8fc..670fabc 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -257,20 +257,31 @@ sub write_errno_pm { - unless ($^O eq 'MacOS' || $^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/ext/Hash-Util-FieldHash/t/10_hash.t b/ext/Hash-Util-FieldHash/t/10_hash.t -index 29c2f4d..c266b6a 100755 ---- a/ext/Hash-Util-FieldHash/t/10_hash.t -+++ b/ext/Hash-Util-FieldHash/t/10_hash.t -@@ -46,15 +46,29 @@ use constant START => "a"; - - # some initial hash data - fieldhash my %h2; --%h2 = map {$_ => 1} 'a'..'cc'; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; -diff --git a/ext/ODBM_File/hints/linux.pl b/ext/ODBM_File/hints/linux.pl -index f8ca492..204bba0 100644 ---- a/ext/ODBM_File/hints/linux.pl -+++ b/ext/ODBM_File/hints/linux.pl -@@ -1,8 +1,8 @@ - # uses GDBM dbm compatibility feature - at least on SuSE 8.0 - $self->{LIBS} = ['-lgdbm']; - --# Debian/Ubuntu have /usr/lib/libgdbm_compat.so.3* but not this file, -+# Debian/Ubuntu have libgdbm_compat.so but not this file, - # so linking may fail --if (-e '/usr/lib/libgdbm_compat.so' or -e '/usr/lib64/libgdbm_compat.so') { -- $self->{LIBS}->[0] .= ' -lgdbm_compat'; -+foreach (split / /, $Config{libpth}) { -+ $self->{LIBS}->[0] .= ' -lgdbm_compat' if -e $_.'/libgdbm_compat.so'; - } -diff --git a/ext/SDBM_File/sdbm/sdbm.c b/ext/SDBM_File/sdbm/sdbm.c -index c5f7aa8..c7c329a 100644 ---- a/ext/SDBM_File/sdbm/sdbm.c -+++ b/ext/SDBM_File/sdbm/sdbm.c -@@ -78,8 +78,8 @@ sdbm_open(register char *file, register int flags, register int mode) - register char *dirname; - register char *pagname; - size_t filelen; -- const size_t dirfext_len = sizeof(DIRFEXT ""); -- const size_t pagfext_len = sizeof(PAGFEXT ""); -+ const size_t dirfext_size = sizeof(DIRFEXT ""); -+ const size_t pagfext_size = sizeof(PAGFEXT ""); - - if (file == NULL || !*file) - return errno = EINVAL, (DBM *) NULL; -@@ -88,17 +88,17 @@ sdbm_open(register char *file, register int flags, register int mode) - */ - filelen = strlen(file); - -- if ((dirname = (char *) malloc(filelen + dirfext_len + 1 -- + filelen + pagfext_len + 1)) == NULL) -+ if ((dirname = (char *) malloc(filelen + dirfext_size -+ + filelen + pagfext_size)) == NULL) - return errno = ENOMEM, (DBM *) NULL; - /* - * build the file names - */ - memcpy(dirname, file, filelen); -- memcpy(dirname + filelen, DIRFEXT, dirfext_len + 1); -- pagname = dirname + filelen + dirfext_len + 1; -+ memcpy(dirname + filelen, DIRFEXT, dirfext_size); -+ pagname = dirname + filelen + dirfext_size; - memcpy(pagname, file, filelen); -- memcpy(pagname + filelen, PAGFEXT, pagfext_len + 1); -+ memcpy(pagname + filelen, PAGFEXT, pagfext_size); - - db = sdbm_prep(dirname, pagname, flags, mode); - free((char *) dirname); -diff --git a/hints/linux.sh b/hints/linux.sh -index c88f157..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -13,11 +13,14 @@ - # Updated Thu May 30 10:50:22 EDT 1996 by - - # Updated Fri Jun 21 11:07:54 EDT 1996 --# NDBM support for ELF renabled by -+# NDBM support for ELF re-enabled by - - # No version of Linux supports setuid scripts. - d_suidsafe='undef' - -+# No version of Linux needs libutil for perl. -+i_libutil='undef' -+ - # Debian and Red Hat, and perhaps other vendors, provide both runtime and - # development packages for some libraries. The runtime packages contain shared - # libraries with version information in their names (e.g., libgdbm.so.1.7.3); -@@ -36,7 +39,7 @@ d_suidsafe='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -55,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -84,15 +80,23 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) -+ # record the version, formats: -+ # icc (ICC) 10.1 20080801 -+ # icpc (ICC) 10.1 20080801 -+ # followed by a copyright on the second line -+ ccversion=`${cc:-cc} --version | sed -n -e 's/^icp\?c \((ICC) \)\?//p'` - # This is needed for Configure's prototype checks to work correctly - # The -mp flag is needed to pass various floating point related tests - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -126,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -146,93 +150,91 @@ case "$optimize" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- -+# Ubuntu 11.04 (and later, presumably) doesn't keep most libraries -+# (such as -lm) in /lib or /usr/lib. So we have to ask gcc to tell us -+# where to look. We don't want gcc's own libraries, however, so we -+# filter those out. -+# This could be conditional on Unbuntu, but other distributions may -+# follow suit, and this scheme seems to work even on rather old gcc's. -+# This unconditionally uses gcc because even if the user is using another -+# compiler, we still need to find the math library and friends, and I don't -+# know how other compilers will cope with that situation. -+# Morever, if the user has their own gcc earlier in $PATH than the system gcc, -+# we don't want its libraries. So we try to prefer the system gcc -+# Still, as an escape hatch, allow Configure command line overrides to -+# plibpth to bypass this check. -+if [ -x /usr/bin/gcc ] ; then -+ gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else -- cat <<'EOM' >&4 -+ gcc=gcc -+fi - --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+case "$plibpth" in -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | -+ cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` -+ set X $plibpth # Collapse all entries on one line -+ shift -+ plibpth="$*" -+ ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --rm -f try.c a.out -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac -+ -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -299,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -314,30 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' --if getconf GNU_LIBPTHREAD_VERSION | grep NPTL >/dev/null 2>/dev/null --then -- threadshavepids="" --else -- threadshavepids="-DTHREADS_HAVE_PIDS" --fi - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE $threadshavepids $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -384,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -417,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/hv.c b/hv.c -index 5d0f2f8..6bfedd5 100644 ---- a/hv.c -+++ b/hv.c -@@ -35,7 +35,8 @@ holds the key and hash value. - #define PERL_HASH_INTERNAL_ACCESS - #include "perl.h" - --#define HV_MAX_LENGTH_BEFORE_SPLIT 14 -+#define HV_MAX_LENGTH_BEFORE_REHASH 14 -+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */ - - static const char S_strtab_error[] - = "Cannot modify shared string table in hv_%s"; -@@ -818,23 +819,8 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!counter) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max) { -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { - hsplit(hv); -- } else if(!HvREHASH(hv)) { -- U32 n_links = 1; -- -- while ((counter = HeNEXT(counter))) -- n_links++; -- -- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) { -- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit -- bucket splits on a rehashed hash, as we're not going to -- split it again, and if someone is lucky (evil) enough to -- get all the keys in one list they could exhaust our memory -- as we repeatedly double the number of buckets on every -- entry. Linear search feels a less worse thing to do. */ -- hsplit(hv); -- } - } - } - -@@ -1180,7 +1166,7 @@ S_hsplit(pTHX_ HV *hv) - - - /* Pick your policy for "hashing isn't working" here: */ -- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */ -+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */ - || HvREHASH(hv)) { - return; - } -@@ -2506,8 +2492,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags) - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) { -- hsplit(PL_strtab); -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { -+ hsplit(PL_strtab); - } - } - -diff --git a/lib/Archive/Tar/t/02_methods.t b/lib/Archive/Tar/t/02_methods.t -index e400dda..e25e31a 100755 ---- a/lib/Archive/Tar/t/02_methods.t -+++ b/lib/Archive/Tar/t/02_methods.t -@@ -70,6 +70,20 @@ my $LONG_FILE = qq[directory/really-really-really-really-really-really-really-re - my $TOO_LONG = ($^O eq 'MSWin32' or $^O eq 'cygwin' or $^O eq 'VMS') - && length( cwd(). $LONG_FILE ) > 247; - -+if(!$TOO_LONG) { -+ my $alt = File::Spec->catfile( cwd(), $LONG_FILE); -+ eval 'mkpath([$alt]);'; -+ if($@) -+ { -+ $TOO_LONG = 1; -+ } -+ else -+ { -+ $@ = ''; -+ my $base = File::Spec->catfile( cwd(), 'directory'); -+ rmtree $base; -+ } -+} - ### warn if we are going to skip long file names - if ($TOO_LONG) { - diag("No long filename support - long filename extraction disabled") if ! $ENV{PERL_CORE}; -diff --git a/lib/Time/Local.t b/lib/Time/Local.t -index 4f8674f..5fff350 100755 ---- a/lib/Time/Local.t -+++ b/lib/Time/Local.t -@@ -96,7 +96,7 @@ for (@time, @neg_time) { - if $year < 70 && ! $neg_epoch_ok; - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -110,7 +110,7 @@ for (@time, @neg_time) { - } - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -127,7 +127,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -136,14 +135,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 27dd7b9..947fae6 100755 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -41,7 +41,7 @@ $result = runperl( progfile => 'lib/h2ph.pht', - stderr => 1 ); - like( $result, qr/syntax OK$/, "output compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.',"-w"], - prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);'); - is( $result, '', "output free of warnings" ); - -diff --git a/make_ext.pl b/make_ext.pl -index 22a97eb..6eac035 100644 ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -274,6 +274,10 @@ WriteMakefile( - EOM - close $fh or die "Can't close Makefile.PL: $!"; - } -+ eval { -+ my $ftime = time - 4; -+ utime $ftime, $ftime, 'Makefile.PL'; -+ }; - print "\nRunning Makefile.PL in $ext_dir\n"; - - # Presumably this can be simplified -diff --git a/perl.c b/perl.c -index 94f2b13..5f30040 100644 ---- a/perl.c -+++ b/perl.c -@@ -3745,7 +3745,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv, - # ifdef VMS - cpp_discard_flag = ""; - # else -- cpp_discard_flag = "-C"; -+ cpp_discard_flag = "-C -ffreestanding"; - # endif - - # ifdef OS2 -diff --git a/pp.c b/pp.c -index 1c8620c..bbb0129 100644 ---- a/pp.c -+++ b/pp.c -@@ -3493,8 +3493,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/t/op/hash.t b/t/op/hash.t -index 9bde518..45eb782 100755 ---- a/t/op/hash.t -+++ b/t/op/hash.t -@@ -39,22 +39,36 @@ use constant THRESHOLD => 14; - use constant START => "a"; - - # some initial hash data --my %h2 = map {$_ => 1} 'a'..'cc'; -+my %h2; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; - - # the minimum of bits required to mount the attack on a hash - my $min_bits = log(THRESHOLD)/log(2); -- - # if the hash has already been populated with a significant amount - # of entries the number of mask bits can be higher - my $keys = scalar keys %$hr; -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index cd4b5a0..4820479 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -783,6 +783,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -800,6 +805,18 @@ sub build_preamble_if_necessary - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - print PREAMBLE - "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n"; diff --git a/eol/5.010.001-main,threaded-buster/Dockerfile b/eol/5.010.001-main,threaded-buster/Dockerfile deleted file mode 100644 index c6ffbe7..0000000 --- a/eol/5.010.001-main,threaded-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.10.1.tar.bz2 -o perl-5.10.1.tar.bz2 \ - && echo '9385f2c8c2ca8b1dc4a7c31903f1f8dc8f2ba867dc2a9e5c93012ed6b564e826 *perl-5.10.1.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.10.1.tar.bz2 -C /usr/src/perl \ - && rm perl-5.10.1.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.10.1","-de0"] diff --git a/eol/5.010.001-main-buster/DevelPatchPerl.patch b/eol/5.010.001-main-buster/DevelPatchPerl.patch deleted file mode 100644 index 11cd099..0000000 --- a/eol/5.010.001-main-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,855 +0,0 @@ -diff --git a/Configure b/Configure -index 01fa3c0..46dd11c 100755 ---- a/Configure -+++ b/Configure -@@ -4518,7 +4518,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4558,7 +4558,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4570,6 +4570,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5110,13 +5126,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5125,7 +5141,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5227,7 +5243,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 124b8fc..670fabc 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -257,20 +257,31 @@ sub write_errno_pm { - unless ($^O eq 'MacOS' || $^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/ext/Hash-Util-FieldHash/t/10_hash.t b/ext/Hash-Util-FieldHash/t/10_hash.t -index 29c2f4d..c266b6a 100755 ---- a/ext/Hash-Util-FieldHash/t/10_hash.t -+++ b/ext/Hash-Util-FieldHash/t/10_hash.t -@@ -46,15 +46,29 @@ use constant START => "a"; - - # some initial hash data - fieldhash my %h2; --%h2 = map {$_ => 1} 'a'..'cc'; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; -diff --git a/ext/ODBM_File/hints/linux.pl b/ext/ODBM_File/hints/linux.pl -index f8ca492..204bba0 100644 ---- a/ext/ODBM_File/hints/linux.pl -+++ b/ext/ODBM_File/hints/linux.pl -@@ -1,8 +1,8 @@ - # uses GDBM dbm compatibility feature - at least on SuSE 8.0 - $self->{LIBS} = ['-lgdbm']; - --# Debian/Ubuntu have /usr/lib/libgdbm_compat.so.3* but not this file, -+# Debian/Ubuntu have libgdbm_compat.so but not this file, - # so linking may fail --if (-e '/usr/lib/libgdbm_compat.so' or -e '/usr/lib64/libgdbm_compat.so') { -- $self->{LIBS}->[0] .= ' -lgdbm_compat'; -+foreach (split / /, $Config{libpth}) { -+ $self->{LIBS}->[0] .= ' -lgdbm_compat' if -e $_.'/libgdbm_compat.so'; - } -diff --git a/ext/SDBM_File/sdbm/sdbm.c b/ext/SDBM_File/sdbm/sdbm.c -index c5f7aa8..c7c329a 100644 ---- a/ext/SDBM_File/sdbm/sdbm.c -+++ b/ext/SDBM_File/sdbm/sdbm.c -@@ -78,8 +78,8 @@ sdbm_open(register char *file, register int flags, register int mode) - register char *dirname; - register char *pagname; - size_t filelen; -- const size_t dirfext_len = sizeof(DIRFEXT ""); -- const size_t pagfext_len = sizeof(PAGFEXT ""); -+ const size_t dirfext_size = sizeof(DIRFEXT ""); -+ const size_t pagfext_size = sizeof(PAGFEXT ""); - - if (file == NULL || !*file) - return errno = EINVAL, (DBM *) NULL; -@@ -88,17 +88,17 @@ sdbm_open(register char *file, register int flags, register int mode) - */ - filelen = strlen(file); - -- if ((dirname = (char *) malloc(filelen + dirfext_len + 1 -- + filelen + pagfext_len + 1)) == NULL) -+ if ((dirname = (char *) malloc(filelen + dirfext_size -+ + filelen + pagfext_size)) == NULL) - return errno = ENOMEM, (DBM *) NULL; - /* - * build the file names - */ - memcpy(dirname, file, filelen); -- memcpy(dirname + filelen, DIRFEXT, dirfext_len + 1); -- pagname = dirname + filelen + dirfext_len + 1; -+ memcpy(dirname + filelen, DIRFEXT, dirfext_size); -+ pagname = dirname + filelen + dirfext_size; - memcpy(pagname, file, filelen); -- memcpy(pagname + filelen, PAGFEXT, pagfext_len + 1); -+ memcpy(pagname + filelen, PAGFEXT, pagfext_size); - - db = sdbm_prep(dirname, pagname, flags, mode); - free((char *) dirname); -diff --git a/hints/linux.sh b/hints/linux.sh -index c88f157..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -13,11 +13,14 @@ - # Updated Thu May 30 10:50:22 EDT 1996 by - - # Updated Fri Jun 21 11:07:54 EDT 1996 --# NDBM support for ELF renabled by -+# NDBM support for ELF re-enabled by - - # No version of Linux supports setuid scripts. - d_suidsafe='undef' - -+# No version of Linux needs libutil for perl. -+i_libutil='undef' -+ - # Debian and Red Hat, and perhaps other vendors, provide both runtime and - # development packages for some libraries. The runtime packages contain shared - # libraries with version information in their names (e.g., libgdbm.so.1.7.3); -@@ -36,7 +39,7 @@ d_suidsafe='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -55,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -84,15 +80,23 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) -+ # record the version, formats: -+ # icc (ICC) 10.1 20080801 -+ # icpc (ICC) 10.1 20080801 -+ # followed by a copyright on the second line -+ ccversion=`${cc:-cc} --version | sed -n -e 's/^icp\?c \((ICC) \)\?//p'` - # This is needed for Configure's prototype checks to work correctly - # The -mp flag is needed to pass various floating point related tests - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -126,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -146,93 +150,91 @@ case "$optimize" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- -+# Ubuntu 11.04 (and later, presumably) doesn't keep most libraries -+# (such as -lm) in /lib or /usr/lib. So we have to ask gcc to tell us -+# where to look. We don't want gcc's own libraries, however, so we -+# filter those out. -+# This could be conditional on Unbuntu, but other distributions may -+# follow suit, and this scheme seems to work even on rather old gcc's. -+# This unconditionally uses gcc because even if the user is using another -+# compiler, we still need to find the math library and friends, and I don't -+# know how other compilers will cope with that situation. -+# Morever, if the user has their own gcc earlier in $PATH than the system gcc, -+# we don't want its libraries. So we try to prefer the system gcc -+# Still, as an escape hatch, allow Configure command line overrides to -+# plibpth to bypass this check. -+if [ -x /usr/bin/gcc ] ; then -+ gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else -- cat <<'EOM' >&4 -+ gcc=gcc -+fi - --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+case "$plibpth" in -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | -+ cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` -+ set X $plibpth # Collapse all entries on one line -+ shift -+ plibpth="$*" -+ ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --rm -f try.c a.out -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac -+ -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -299,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -314,30 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' --if getconf GNU_LIBPTHREAD_VERSION | grep NPTL >/dev/null 2>/dev/null --then -- threadshavepids="" --else -- threadshavepids="-DTHREADS_HAVE_PIDS" --fi - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE $threadshavepids $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -384,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -417,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/hv.c b/hv.c -index 5d0f2f8..6bfedd5 100644 ---- a/hv.c -+++ b/hv.c -@@ -35,7 +35,8 @@ holds the key and hash value. - #define PERL_HASH_INTERNAL_ACCESS - #include "perl.h" - --#define HV_MAX_LENGTH_BEFORE_SPLIT 14 -+#define HV_MAX_LENGTH_BEFORE_REHASH 14 -+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */ - - static const char S_strtab_error[] - = "Cannot modify shared string table in hv_%s"; -@@ -818,23 +819,8 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!counter) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max) { -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { - hsplit(hv); -- } else if(!HvREHASH(hv)) { -- U32 n_links = 1; -- -- while ((counter = HeNEXT(counter))) -- n_links++; -- -- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) { -- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit -- bucket splits on a rehashed hash, as we're not going to -- split it again, and if someone is lucky (evil) enough to -- get all the keys in one list they could exhaust our memory -- as we repeatedly double the number of buckets on every -- entry. Linear search feels a less worse thing to do. */ -- hsplit(hv); -- } - } - } - -@@ -1180,7 +1166,7 @@ S_hsplit(pTHX_ HV *hv) - - - /* Pick your policy for "hashing isn't working" here: */ -- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */ -+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */ - || HvREHASH(hv)) { - return; - } -@@ -2506,8 +2492,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags) - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) { -- hsplit(PL_strtab); -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { -+ hsplit(PL_strtab); - } - } - -diff --git a/lib/Archive/Tar/t/02_methods.t b/lib/Archive/Tar/t/02_methods.t -index e400dda..e25e31a 100755 ---- a/lib/Archive/Tar/t/02_methods.t -+++ b/lib/Archive/Tar/t/02_methods.t -@@ -70,6 +70,20 @@ my $LONG_FILE = qq[directory/really-really-really-really-really-really-really-re - my $TOO_LONG = ($^O eq 'MSWin32' or $^O eq 'cygwin' or $^O eq 'VMS') - && length( cwd(). $LONG_FILE ) > 247; - -+if(!$TOO_LONG) { -+ my $alt = File::Spec->catfile( cwd(), $LONG_FILE); -+ eval 'mkpath([$alt]);'; -+ if($@) -+ { -+ $TOO_LONG = 1; -+ } -+ else -+ { -+ $@ = ''; -+ my $base = File::Spec->catfile( cwd(), 'directory'); -+ rmtree $base; -+ } -+} - ### warn if we are going to skip long file names - if ($TOO_LONG) { - diag("No long filename support - long filename extraction disabled") if ! $ENV{PERL_CORE}; -diff --git a/lib/Time/Local.t b/lib/Time/Local.t -index 4f8674f..5fff350 100755 ---- a/lib/Time/Local.t -+++ b/lib/Time/Local.t -@@ -96,7 +96,7 @@ for (@time, @neg_time) { - if $year < 70 && ! $neg_epoch_ok; - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -110,7 +110,7 @@ for (@time, @neg_time) { - } - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -127,7 +127,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -136,14 +135,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 27dd7b9..947fae6 100755 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -41,7 +41,7 @@ $result = runperl( progfile => 'lib/h2ph.pht', - stderr => 1 ); - like( $result, qr/syntax OK$/, "output compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.',"-w"], - prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);'); - is( $result, '', "output free of warnings" ); - -diff --git a/make_ext.pl b/make_ext.pl -index 22a97eb..6eac035 100644 ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -274,6 +274,10 @@ WriteMakefile( - EOM - close $fh or die "Can't close Makefile.PL: $!"; - } -+ eval { -+ my $ftime = time - 4; -+ utime $ftime, $ftime, 'Makefile.PL'; -+ }; - print "\nRunning Makefile.PL in $ext_dir\n"; - - # Presumably this can be simplified -diff --git a/perl.c b/perl.c -index 94f2b13..5f30040 100644 ---- a/perl.c -+++ b/perl.c -@@ -3745,7 +3745,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv, - # ifdef VMS - cpp_discard_flag = ""; - # else -- cpp_discard_flag = "-C"; -+ cpp_discard_flag = "-C -ffreestanding"; - # endif - - # ifdef OS2 -diff --git a/pp.c b/pp.c -index 1c8620c..bbb0129 100644 ---- a/pp.c -+++ b/pp.c -@@ -3493,8 +3493,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/t/op/hash.t b/t/op/hash.t -index 9bde518..45eb782 100755 ---- a/t/op/hash.t -+++ b/t/op/hash.t -@@ -39,22 +39,36 @@ use constant THRESHOLD => 14; - use constant START => "a"; - - # some initial hash data --my %h2 = map {$_ => 1} 'a'..'cc'; -+my %h2; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; - - # the minimum of bits required to mount the attack on a hash - my $min_bits = log(THRESHOLD)/log(2); -- - # if the hash has already been populated with a significant amount - # of entries the number of mask bits can be higher - my $keys = scalar keys %$hr; -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index cd4b5a0..4820479 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -783,6 +783,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -800,6 +805,18 @@ sub build_preamble_if_necessary - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - print PREAMBLE - "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n"; diff --git a/eol/5.010.001-main-buster/Dockerfile b/eol/5.010.001-main-buster/Dockerfile deleted file mode 100644 index 82d9d55..0000000 --- a/eol/5.010.001-main-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.10.1.tar.bz2 -o perl-5.10.1.tar.bz2 \ - && echo '9385f2c8c2ca8b1dc4a7c31903f1f8dc8f2ba867dc2a9e5c93012ed6b564e826 *perl-5.10.1.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.10.1.tar.bz2 -C /usr/src/perl \ - && rm perl-5.10.1.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.10.1","-de0"] diff --git a/eol/5.010.001-slim,threaded-buster/DevelPatchPerl.patch b/eol/5.010.001-slim,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 11cd099..0000000 --- a/eol/5.010.001-slim,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,855 +0,0 @@ -diff --git a/Configure b/Configure -index 01fa3c0..46dd11c 100755 ---- a/Configure -+++ b/Configure -@@ -4518,7 +4518,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4558,7 +4558,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4570,6 +4570,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5110,13 +5126,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5125,7 +5141,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5227,7 +5243,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 124b8fc..670fabc 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -257,20 +257,31 @@ sub write_errno_pm { - unless ($^O eq 'MacOS' || $^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/ext/Hash-Util-FieldHash/t/10_hash.t b/ext/Hash-Util-FieldHash/t/10_hash.t -index 29c2f4d..c266b6a 100755 ---- a/ext/Hash-Util-FieldHash/t/10_hash.t -+++ b/ext/Hash-Util-FieldHash/t/10_hash.t -@@ -46,15 +46,29 @@ use constant START => "a"; - - # some initial hash data - fieldhash my %h2; --%h2 = map {$_ => 1} 'a'..'cc'; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; -diff --git a/ext/ODBM_File/hints/linux.pl b/ext/ODBM_File/hints/linux.pl -index f8ca492..204bba0 100644 ---- a/ext/ODBM_File/hints/linux.pl -+++ b/ext/ODBM_File/hints/linux.pl -@@ -1,8 +1,8 @@ - # uses GDBM dbm compatibility feature - at least on SuSE 8.0 - $self->{LIBS} = ['-lgdbm']; - --# Debian/Ubuntu have /usr/lib/libgdbm_compat.so.3* but not this file, -+# Debian/Ubuntu have libgdbm_compat.so but not this file, - # so linking may fail --if (-e '/usr/lib/libgdbm_compat.so' or -e '/usr/lib64/libgdbm_compat.so') { -- $self->{LIBS}->[0] .= ' -lgdbm_compat'; -+foreach (split / /, $Config{libpth}) { -+ $self->{LIBS}->[0] .= ' -lgdbm_compat' if -e $_.'/libgdbm_compat.so'; - } -diff --git a/ext/SDBM_File/sdbm/sdbm.c b/ext/SDBM_File/sdbm/sdbm.c -index c5f7aa8..c7c329a 100644 ---- a/ext/SDBM_File/sdbm/sdbm.c -+++ b/ext/SDBM_File/sdbm/sdbm.c -@@ -78,8 +78,8 @@ sdbm_open(register char *file, register int flags, register int mode) - register char *dirname; - register char *pagname; - size_t filelen; -- const size_t dirfext_len = sizeof(DIRFEXT ""); -- const size_t pagfext_len = sizeof(PAGFEXT ""); -+ const size_t dirfext_size = sizeof(DIRFEXT ""); -+ const size_t pagfext_size = sizeof(PAGFEXT ""); - - if (file == NULL || !*file) - return errno = EINVAL, (DBM *) NULL; -@@ -88,17 +88,17 @@ sdbm_open(register char *file, register int flags, register int mode) - */ - filelen = strlen(file); - -- if ((dirname = (char *) malloc(filelen + dirfext_len + 1 -- + filelen + pagfext_len + 1)) == NULL) -+ if ((dirname = (char *) malloc(filelen + dirfext_size -+ + filelen + pagfext_size)) == NULL) - return errno = ENOMEM, (DBM *) NULL; - /* - * build the file names - */ - memcpy(dirname, file, filelen); -- memcpy(dirname + filelen, DIRFEXT, dirfext_len + 1); -- pagname = dirname + filelen + dirfext_len + 1; -+ memcpy(dirname + filelen, DIRFEXT, dirfext_size); -+ pagname = dirname + filelen + dirfext_size; - memcpy(pagname, file, filelen); -- memcpy(pagname + filelen, PAGFEXT, pagfext_len + 1); -+ memcpy(pagname + filelen, PAGFEXT, pagfext_size); - - db = sdbm_prep(dirname, pagname, flags, mode); - free((char *) dirname); -diff --git a/hints/linux.sh b/hints/linux.sh -index c88f157..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -13,11 +13,14 @@ - # Updated Thu May 30 10:50:22 EDT 1996 by - - # Updated Fri Jun 21 11:07:54 EDT 1996 --# NDBM support for ELF renabled by -+# NDBM support for ELF re-enabled by - - # No version of Linux supports setuid scripts. - d_suidsafe='undef' - -+# No version of Linux needs libutil for perl. -+i_libutil='undef' -+ - # Debian and Red Hat, and perhaps other vendors, provide both runtime and - # development packages for some libraries. The runtime packages contain shared - # libraries with version information in their names (e.g., libgdbm.so.1.7.3); -@@ -36,7 +39,7 @@ d_suidsafe='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -55,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -84,15 +80,23 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) -+ # record the version, formats: -+ # icc (ICC) 10.1 20080801 -+ # icpc (ICC) 10.1 20080801 -+ # followed by a copyright on the second line -+ ccversion=`${cc:-cc} --version | sed -n -e 's/^icp\?c \((ICC) \)\?//p'` - # This is needed for Configure's prototype checks to work correctly - # The -mp flag is needed to pass various floating point related tests - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -126,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -146,93 +150,91 @@ case "$optimize" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- -+# Ubuntu 11.04 (and later, presumably) doesn't keep most libraries -+# (such as -lm) in /lib or /usr/lib. So we have to ask gcc to tell us -+# where to look. We don't want gcc's own libraries, however, so we -+# filter those out. -+# This could be conditional on Unbuntu, but other distributions may -+# follow suit, and this scheme seems to work even on rather old gcc's. -+# This unconditionally uses gcc because even if the user is using another -+# compiler, we still need to find the math library and friends, and I don't -+# know how other compilers will cope with that situation. -+# Morever, if the user has their own gcc earlier in $PATH than the system gcc, -+# we don't want its libraries. So we try to prefer the system gcc -+# Still, as an escape hatch, allow Configure command line overrides to -+# plibpth to bypass this check. -+if [ -x /usr/bin/gcc ] ; then -+ gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else -- cat <<'EOM' >&4 -+ gcc=gcc -+fi - --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+case "$plibpth" in -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | -+ cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` -+ set X $plibpth # Collapse all entries on one line -+ shift -+ plibpth="$*" -+ ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --rm -f try.c a.out -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac -+ -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -299,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -314,30 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' --if getconf GNU_LIBPTHREAD_VERSION | grep NPTL >/dev/null 2>/dev/null --then -- threadshavepids="" --else -- threadshavepids="-DTHREADS_HAVE_PIDS" --fi - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE $threadshavepids $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -384,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -417,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/hv.c b/hv.c -index 5d0f2f8..6bfedd5 100644 ---- a/hv.c -+++ b/hv.c -@@ -35,7 +35,8 @@ holds the key and hash value. - #define PERL_HASH_INTERNAL_ACCESS - #include "perl.h" - --#define HV_MAX_LENGTH_BEFORE_SPLIT 14 -+#define HV_MAX_LENGTH_BEFORE_REHASH 14 -+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */ - - static const char S_strtab_error[] - = "Cannot modify shared string table in hv_%s"; -@@ -818,23 +819,8 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!counter) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max) { -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { - hsplit(hv); -- } else if(!HvREHASH(hv)) { -- U32 n_links = 1; -- -- while ((counter = HeNEXT(counter))) -- n_links++; -- -- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) { -- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit -- bucket splits on a rehashed hash, as we're not going to -- split it again, and if someone is lucky (evil) enough to -- get all the keys in one list they could exhaust our memory -- as we repeatedly double the number of buckets on every -- entry. Linear search feels a less worse thing to do. */ -- hsplit(hv); -- } - } - } - -@@ -1180,7 +1166,7 @@ S_hsplit(pTHX_ HV *hv) - - - /* Pick your policy for "hashing isn't working" here: */ -- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */ -+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */ - || HvREHASH(hv)) { - return; - } -@@ -2506,8 +2492,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags) - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) { -- hsplit(PL_strtab); -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { -+ hsplit(PL_strtab); - } - } - -diff --git a/lib/Archive/Tar/t/02_methods.t b/lib/Archive/Tar/t/02_methods.t -index e400dda..e25e31a 100755 ---- a/lib/Archive/Tar/t/02_methods.t -+++ b/lib/Archive/Tar/t/02_methods.t -@@ -70,6 +70,20 @@ my $LONG_FILE = qq[directory/really-really-really-really-really-really-really-re - my $TOO_LONG = ($^O eq 'MSWin32' or $^O eq 'cygwin' or $^O eq 'VMS') - && length( cwd(). $LONG_FILE ) > 247; - -+if(!$TOO_LONG) { -+ my $alt = File::Spec->catfile( cwd(), $LONG_FILE); -+ eval 'mkpath([$alt]);'; -+ if($@) -+ { -+ $TOO_LONG = 1; -+ } -+ else -+ { -+ $@ = ''; -+ my $base = File::Spec->catfile( cwd(), 'directory'); -+ rmtree $base; -+ } -+} - ### warn if we are going to skip long file names - if ($TOO_LONG) { - diag("No long filename support - long filename extraction disabled") if ! $ENV{PERL_CORE}; -diff --git a/lib/Time/Local.t b/lib/Time/Local.t -index 4f8674f..5fff350 100755 ---- a/lib/Time/Local.t -+++ b/lib/Time/Local.t -@@ -96,7 +96,7 @@ for (@time, @neg_time) { - if $year < 70 && ! $neg_epoch_ok; - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -110,7 +110,7 @@ for (@time, @neg_time) { - } - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -127,7 +127,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -136,14 +135,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 27dd7b9..947fae6 100755 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -41,7 +41,7 @@ $result = runperl( progfile => 'lib/h2ph.pht', - stderr => 1 ); - like( $result, qr/syntax OK$/, "output compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.',"-w"], - prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);'); - is( $result, '', "output free of warnings" ); - -diff --git a/make_ext.pl b/make_ext.pl -index 22a97eb..6eac035 100644 ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -274,6 +274,10 @@ WriteMakefile( - EOM - close $fh or die "Can't close Makefile.PL: $!"; - } -+ eval { -+ my $ftime = time - 4; -+ utime $ftime, $ftime, 'Makefile.PL'; -+ }; - print "\nRunning Makefile.PL in $ext_dir\n"; - - # Presumably this can be simplified -diff --git a/perl.c b/perl.c -index 94f2b13..5f30040 100644 ---- a/perl.c -+++ b/perl.c -@@ -3745,7 +3745,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv, - # ifdef VMS - cpp_discard_flag = ""; - # else -- cpp_discard_flag = "-C"; -+ cpp_discard_flag = "-C -ffreestanding"; - # endif - - # ifdef OS2 -diff --git a/pp.c b/pp.c -index 1c8620c..bbb0129 100644 ---- a/pp.c -+++ b/pp.c -@@ -3493,8 +3493,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/t/op/hash.t b/t/op/hash.t -index 9bde518..45eb782 100755 ---- a/t/op/hash.t -+++ b/t/op/hash.t -@@ -39,22 +39,36 @@ use constant THRESHOLD => 14; - use constant START => "a"; - - # some initial hash data --my %h2 = map {$_ => 1} 'a'..'cc'; -+my %h2; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; - - # the minimum of bits required to mount the attack on a hash - my $min_bits = log(THRESHOLD)/log(2); -- - # if the hash has already been populated with a significant amount - # of entries the number of mask bits can be higher - my $keys = scalar keys %$hr; -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index cd4b5a0..4820479 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -783,6 +783,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -800,6 +805,18 @@ sub build_preamble_if_necessary - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - print PREAMBLE - "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n"; diff --git a/eol/5.010.001-slim,threaded-buster/Dockerfile b/eol/5.010.001-slim,threaded-buster/Dockerfile deleted file mode 100644 index 8f5e1ad..0000000 --- a/eol/5.010.001-slim,threaded-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.10.1.tar.bz2 -o perl-5.10.1.tar.bz2 \ - && echo '9385f2c8c2ca8b1dc4a7c31903f1f8dc8f2ba867dc2a9e5c93012ed6b564e826 *perl-5.10.1.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.10.1.tar.bz2 -C /usr/src/perl \ - && rm perl-5.10.1.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.10.1","-de0"] diff --git a/eol/5.010.001-slim-buster/DevelPatchPerl.patch b/eol/5.010.001-slim-buster/DevelPatchPerl.patch deleted file mode 100644 index 11cd099..0000000 --- a/eol/5.010.001-slim-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,855 +0,0 @@ -diff --git a/Configure b/Configure -index 01fa3c0..46dd11c 100755 ---- a/Configure -+++ b/Configure -@@ -4518,7 +4518,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4558,7 +4558,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4570,6 +4570,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5110,13 +5126,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5125,7 +5141,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5227,7 +5243,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 124b8fc..670fabc 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -257,20 +257,31 @@ sub write_errno_pm { - unless ($^O eq 'MacOS' || $^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/ext/Hash-Util-FieldHash/t/10_hash.t b/ext/Hash-Util-FieldHash/t/10_hash.t -index 29c2f4d..c266b6a 100755 ---- a/ext/Hash-Util-FieldHash/t/10_hash.t -+++ b/ext/Hash-Util-FieldHash/t/10_hash.t -@@ -46,15 +46,29 @@ use constant START => "a"; - - # some initial hash data - fieldhash my %h2; --%h2 = map {$_ => 1} 'a'..'cc'; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; -diff --git a/ext/ODBM_File/hints/linux.pl b/ext/ODBM_File/hints/linux.pl -index f8ca492..204bba0 100644 ---- a/ext/ODBM_File/hints/linux.pl -+++ b/ext/ODBM_File/hints/linux.pl -@@ -1,8 +1,8 @@ - # uses GDBM dbm compatibility feature - at least on SuSE 8.0 - $self->{LIBS} = ['-lgdbm']; - --# Debian/Ubuntu have /usr/lib/libgdbm_compat.so.3* but not this file, -+# Debian/Ubuntu have libgdbm_compat.so but not this file, - # so linking may fail --if (-e '/usr/lib/libgdbm_compat.so' or -e '/usr/lib64/libgdbm_compat.so') { -- $self->{LIBS}->[0] .= ' -lgdbm_compat'; -+foreach (split / /, $Config{libpth}) { -+ $self->{LIBS}->[0] .= ' -lgdbm_compat' if -e $_.'/libgdbm_compat.so'; - } -diff --git a/ext/SDBM_File/sdbm/sdbm.c b/ext/SDBM_File/sdbm/sdbm.c -index c5f7aa8..c7c329a 100644 ---- a/ext/SDBM_File/sdbm/sdbm.c -+++ b/ext/SDBM_File/sdbm/sdbm.c -@@ -78,8 +78,8 @@ sdbm_open(register char *file, register int flags, register int mode) - register char *dirname; - register char *pagname; - size_t filelen; -- const size_t dirfext_len = sizeof(DIRFEXT ""); -- const size_t pagfext_len = sizeof(PAGFEXT ""); -+ const size_t dirfext_size = sizeof(DIRFEXT ""); -+ const size_t pagfext_size = sizeof(PAGFEXT ""); - - if (file == NULL || !*file) - return errno = EINVAL, (DBM *) NULL; -@@ -88,17 +88,17 @@ sdbm_open(register char *file, register int flags, register int mode) - */ - filelen = strlen(file); - -- if ((dirname = (char *) malloc(filelen + dirfext_len + 1 -- + filelen + pagfext_len + 1)) == NULL) -+ if ((dirname = (char *) malloc(filelen + dirfext_size -+ + filelen + pagfext_size)) == NULL) - return errno = ENOMEM, (DBM *) NULL; - /* - * build the file names - */ - memcpy(dirname, file, filelen); -- memcpy(dirname + filelen, DIRFEXT, dirfext_len + 1); -- pagname = dirname + filelen + dirfext_len + 1; -+ memcpy(dirname + filelen, DIRFEXT, dirfext_size); -+ pagname = dirname + filelen + dirfext_size; - memcpy(pagname, file, filelen); -- memcpy(pagname + filelen, PAGFEXT, pagfext_len + 1); -+ memcpy(pagname + filelen, PAGFEXT, pagfext_size); - - db = sdbm_prep(dirname, pagname, flags, mode); - free((char *) dirname); -diff --git a/hints/linux.sh b/hints/linux.sh -index c88f157..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -13,11 +13,14 @@ - # Updated Thu May 30 10:50:22 EDT 1996 by - - # Updated Fri Jun 21 11:07:54 EDT 1996 --# NDBM support for ELF renabled by -+# NDBM support for ELF re-enabled by - - # No version of Linux supports setuid scripts. - d_suidsafe='undef' - -+# No version of Linux needs libutil for perl. -+i_libutil='undef' -+ - # Debian and Red Hat, and perhaps other vendors, provide both runtime and - # development packages for some libraries. The runtime packages contain shared - # libraries with version information in their names (e.g., libgdbm.so.1.7.3); -@@ -36,7 +39,7 @@ d_suidsafe='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -55,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -84,15 +80,23 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) -+ # record the version, formats: -+ # icc (ICC) 10.1 20080801 -+ # icpc (ICC) 10.1 20080801 -+ # followed by a copyright on the second line -+ ccversion=`${cc:-cc} --version | sed -n -e 's/^icp\?c \((ICC) \)\?//p'` - # This is needed for Configure's prototype checks to work correctly - # The -mp flag is needed to pass various floating point related tests - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -126,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -146,93 +150,91 @@ case "$optimize" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- -+# Ubuntu 11.04 (and later, presumably) doesn't keep most libraries -+# (such as -lm) in /lib or /usr/lib. So we have to ask gcc to tell us -+# where to look. We don't want gcc's own libraries, however, so we -+# filter those out. -+# This could be conditional on Unbuntu, but other distributions may -+# follow suit, and this scheme seems to work even on rather old gcc's. -+# This unconditionally uses gcc because even if the user is using another -+# compiler, we still need to find the math library and friends, and I don't -+# know how other compilers will cope with that situation. -+# Morever, if the user has their own gcc earlier in $PATH than the system gcc, -+# we don't want its libraries. So we try to prefer the system gcc -+# Still, as an escape hatch, allow Configure command line overrides to -+# plibpth to bypass this check. -+if [ -x /usr/bin/gcc ] ; then -+ gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else -- cat <<'EOM' >&4 -+ gcc=gcc -+fi - --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+case "$plibpth" in -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | -+ cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` -+ set X $plibpth # Collapse all entries on one line -+ shift -+ plibpth="$*" -+ ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --rm -f try.c a.out -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac -+ -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -299,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -314,30 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' --if getconf GNU_LIBPTHREAD_VERSION | grep NPTL >/dev/null 2>/dev/null --then -- threadshavepids="" --else -- threadshavepids="-DTHREADS_HAVE_PIDS" --fi - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE $threadshavepids $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -384,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -417,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/hv.c b/hv.c -index 5d0f2f8..6bfedd5 100644 ---- a/hv.c -+++ b/hv.c -@@ -35,7 +35,8 @@ holds the key and hash value. - #define PERL_HASH_INTERNAL_ACCESS - #include "perl.h" - --#define HV_MAX_LENGTH_BEFORE_SPLIT 14 -+#define HV_MAX_LENGTH_BEFORE_REHASH 14 -+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */ - - static const char S_strtab_error[] - = "Cannot modify shared string table in hv_%s"; -@@ -818,23 +819,8 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!counter) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max) { -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { - hsplit(hv); -- } else if(!HvREHASH(hv)) { -- U32 n_links = 1; -- -- while ((counter = HeNEXT(counter))) -- n_links++; -- -- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) { -- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit -- bucket splits on a rehashed hash, as we're not going to -- split it again, and if someone is lucky (evil) enough to -- get all the keys in one list they could exhaust our memory -- as we repeatedly double the number of buckets on every -- entry. Linear search feels a less worse thing to do. */ -- hsplit(hv); -- } - } - } - -@@ -1180,7 +1166,7 @@ S_hsplit(pTHX_ HV *hv) - - - /* Pick your policy for "hashing isn't working" here: */ -- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */ -+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */ - || HvREHASH(hv)) { - return; - } -@@ -2506,8 +2492,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags) - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) { -- hsplit(PL_strtab); -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { -+ hsplit(PL_strtab); - } - } - -diff --git a/lib/Archive/Tar/t/02_methods.t b/lib/Archive/Tar/t/02_methods.t -index e400dda..e25e31a 100755 ---- a/lib/Archive/Tar/t/02_methods.t -+++ b/lib/Archive/Tar/t/02_methods.t -@@ -70,6 +70,20 @@ my $LONG_FILE = qq[directory/really-really-really-really-really-really-really-re - my $TOO_LONG = ($^O eq 'MSWin32' or $^O eq 'cygwin' or $^O eq 'VMS') - && length( cwd(). $LONG_FILE ) > 247; - -+if(!$TOO_LONG) { -+ my $alt = File::Spec->catfile( cwd(), $LONG_FILE); -+ eval 'mkpath([$alt]);'; -+ if($@) -+ { -+ $TOO_LONG = 1; -+ } -+ else -+ { -+ $@ = ''; -+ my $base = File::Spec->catfile( cwd(), 'directory'); -+ rmtree $base; -+ } -+} - ### warn if we are going to skip long file names - if ($TOO_LONG) { - diag("No long filename support - long filename extraction disabled") if ! $ENV{PERL_CORE}; -diff --git a/lib/Time/Local.t b/lib/Time/Local.t -index 4f8674f..5fff350 100755 ---- a/lib/Time/Local.t -+++ b/lib/Time/Local.t -@@ -96,7 +96,7 @@ for (@time, @neg_time) { - if $year < 70 && ! $neg_epoch_ok; - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -110,7 +110,7 @@ for (@time, @neg_time) { - } - - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -127,7 +127,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -136,14 +135,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 27dd7b9..947fae6 100755 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -41,7 +41,7 @@ $result = runperl( progfile => 'lib/h2ph.pht', - stderr => 1 ); - like( $result, qr/syntax OK$/, "output compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.',"-w"], - prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);'); - is( $result, '', "output free of warnings" ); - -diff --git a/make_ext.pl b/make_ext.pl -index 22a97eb..6eac035 100644 ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -274,6 +274,10 @@ WriteMakefile( - EOM - close $fh or die "Can't close Makefile.PL: $!"; - } -+ eval { -+ my $ftime = time - 4; -+ utime $ftime, $ftime, 'Makefile.PL'; -+ }; - print "\nRunning Makefile.PL in $ext_dir\n"; - - # Presumably this can be simplified -diff --git a/perl.c b/perl.c -index 94f2b13..5f30040 100644 ---- a/perl.c -+++ b/perl.c -@@ -3745,7 +3745,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv, - # ifdef VMS - cpp_discard_flag = ""; - # else -- cpp_discard_flag = "-C"; -+ cpp_discard_flag = "-C -ffreestanding"; - # endif - - # ifdef OS2 -diff --git a/pp.c b/pp.c -index 1c8620c..bbb0129 100644 ---- a/pp.c -+++ b/pp.c -@@ -3493,8 +3493,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/t/op/hash.t b/t/op/hash.t -index 9bde518..45eb782 100755 ---- a/t/op/hash.t -+++ b/t/op/hash.t -@@ -39,22 +39,36 @@ use constant THRESHOLD => 14; - use constant START => "a"; - - # some initial hash data --my %h2 = map {$_ => 1} 'a'..'cc'; -+my %h2; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; - - # the minimum of bits required to mount the attack on a hash - my $min_bits = log(THRESHOLD)/log(2); -- - # if the hash has already been populated with a significant amount - # of entries the number of mask bits can be higher - my $keys = scalar keys %$hr; -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index cd4b5a0..4820479 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -783,6 +783,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -800,6 +805,18 @@ sub build_preamble_if_necessary - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - print PREAMBLE - "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n"; diff --git a/eol/5.010.001-slim-buster/Dockerfile b/eol/5.010.001-slim-buster/Dockerfile deleted file mode 100644 index 1053b7c..0000000 --- a/eol/5.010.001-slim-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.10.1.tar.bz2 -o perl-5.10.1.tar.bz2 \ - && echo '9385f2c8c2ca8b1dc4a7c31903f1f8dc8f2ba867dc2a9e5c93012ed6b564e826 *perl-5.10.1.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.10.1.tar.bz2 -C /usr/src/perl \ - && rm perl-5.10.1.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.10.1","-de0"] diff --git a/eol/5.012.005-main,threaded-buster/DevelPatchPerl.patch b/eol/5.012.005-main,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 0e5e718..0000000 --- a/eol/5.012.005-main,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,833 +0,0 @@ -diff --git a/Configure b/Configure -index 3a8732b..10a1a04 100755 ---- a/Configure -+++ b/Configure -@@ -4536,7 +4536,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4576,7 +4576,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4588,6 +4588,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5128,13 +5144,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5143,7 +5159,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5245,7 +5261,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Archive-Tar/t/02_methods.t b/cpan/Archive-Tar/t/02_methods.t -index e400dda..e25e31a 100755 ---- a/cpan/Archive-Tar/t/02_methods.t -+++ b/cpan/Archive-Tar/t/02_methods.t -@@ -70,6 +70,20 @@ my $LONG_FILE = qq[directory/really-really-really-really-really-really-really-re - my $TOO_LONG = ($^O eq 'MSWin32' or $^O eq 'cygwin' or $^O eq 'VMS') - && length( cwd(). $LONG_FILE ) > 247; - -+if(!$TOO_LONG) { -+ my $alt = File::Spec->catfile( cwd(), $LONG_FILE); -+ eval 'mkpath([$alt]);'; -+ if($@) -+ { -+ $TOO_LONG = 1; -+ } -+ else -+ { -+ $@ = ''; -+ my $base = File::Spec->catfile( cwd(), 'directory'); -+ rmtree $base; -+ } -+} - ### warn if we are going to skip long file names - if ($TOO_LONG) { - diag("No long filename support - long filename extraction disabled") if ! $ENV{PERL_CORE}; -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 124b8fc..670fabc 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -257,20 +257,31 @@ sub write_errno_pm { - unless ($^O eq 'MacOS' || $^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/ext/Hash-Util-FieldHash/t/10_hash.t b/ext/Hash-Util-FieldHash/t/10_hash.t -index 2cfb4e8..d58f053 100755 ---- a/ext/Hash-Util-FieldHash/t/10_hash.t -+++ b/ext/Hash-Util-FieldHash/t/10_hash.t -@@ -38,15 +38,29 @@ use constant START => "a"; - - # some initial hash data - fieldhash my %h2; --%h2 = map {$_ => 1} 'a'..'cc'; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; -diff --git a/ext/ODBM_File/hints/linux.pl b/ext/ODBM_File/hints/linux.pl -index f8ca492..204bba0 100644 ---- a/ext/ODBM_File/hints/linux.pl -+++ b/ext/ODBM_File/hints/linux.pl -@@ -1,8 +1,8 @@ - # uses GDBM dbm compatibility feature - at least on SuSE 8.0 - $self->{LIBS} = ['-lgdbm']; - --# Debian/Ubuntu have /usr/lib/libgdbm_compat.so.3* but not this file, -+# Debian/Ubuntu have libgdbm_compat.so but not this file, - # so linking may fail --if (-e '/usr/lib/libgdbm_compat.so' or -e '/usr/lib64/libgdbm_compat.so') { -- $self->{LIBS}->[0] .= ' -lgdbm_compat'; -+foreach (split / /, $Config{libpth}) { -+ $self->{LIBS}->[0] .= ' -lgdbm_compat' if -e $_.'/libgdbm_compat.so'; - } -diff --git a/ext/SDBM_File/sdbm/sdbm.c b/ext/SDBM_File/sdbm/sdbm.c -index c5f7aa8..c7c329a 100644 ---- a/ext/SDBM_File/sdbm/sdbm.c -+++ b/ext/SDBM_File/sdbm/sdbm.c -@@ -78,8 +78,8 @@ sdbm_open(register char *file, register int flags, register int mode) - register char *dirname; - register char *pagname; - size_t filelen; -- const size_t dirfext_len = sizeof(DIRFEXT ""); -- const size_t pagfext_len = sizeof(PAGFEXT ""); -+ const size_t dirfext_size = sizeof(DIRFEXT ""); -+ const size_t pagfext_size = sizeof(PAGFEXT ""); - - if (file == NULL || !*file) - return errno = EINVAL, (DBM *) NULL; -@@ -88,17 +88,17 @@ sdbm_open(register char *file, register int flags, register int mode) - */ - filelen = strlen(file); - -- if ((dirname = (char *) malloc(filelen + dirfext_len + 1 -- + filelen + pagfext_len + 1)) == NULL) -+ if ((dirname = (char *) malloc(filelen + dirfext_size -+ + filelen + pagfext_size)) == NULL) - return errno = ENOMEM, (DBM *) NULL; - /* - * build the file names - */ - memcpy(dirname, file, filelen); -- memcpy(dirname + filelen, DIRFEXT, dirfext_len + 1); -- pagname = dirname + filelen + dirfext_len + 1; -+ memcpy(dirname + filelen, DIRFEXT, dirfext_size); -+ pagname = dirname + filelen + dirfext_size; - memcpy(pagname, file, filelen); -- memcpy(pagname + filelen, PAGFEXT, pagfext_len + 1); -+ memcpy(pagname + filelen, PAGFEXT, pagfext_size); - - db = sdbm_prep(dirname, pagname, flags, mode); - free((char *) dirname); -diff --git a/ext/Time-Local/t/Local.t b/ext/Time-Local/t/Local.t -index 61a15a8..8bf0a0b 100755 ---- a/ext/Time-Local/t/Local.t -+++ b/ext/Time-Local/t/Local.t -@@ -84,7 +84,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -100,7 +100,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -117,7 +117,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -126,14 +125,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index 0519eca..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -13,11 +13,14 @@ - # Updated Thu May 30 10:50:22 EDT 1996 by - - # Updated Fri Jun 21 11:07:54 EDT 1996 --# NDBM support for ELF renabled by -+# NDBM support for ELF re-enabled by - - # No version of Linux supports setuid scripts. - d_suidsafe='undef' - -+# No version of Linux needs libutil for perl. -+i_libutil='undef' -+ - # Debian and Red Hat, and perhaps other vendors, provide both runtime and - # development packages for some libraries. The runtime packages contain shared - # libraries with version information in their names (e.g., libgdbm.so.1.7.3); -@@ -36,7 +39,7 @@ d_suidsafe='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -55,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -84,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -97,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -131,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -160,10 +159,21 @@ esac - # This unconditionally uses gcc because even if the user is using another - # compiler, we still need to find the math library and friends, and I don't - # know how other compilers will cope with that situation. -+# Morever, if the user has their own gcc earlier in $PATH than the system gcc, -+# we don't want its libraries. So we try to prefer the system gcc - # Still, as an escape hatch, allow Configure command line overrides to - # plibpth to bypass this check. -+if [ -x /usr/bin/gcc ] ; then -+ gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} -+else -+ gcc=gcc -+fi -+ - case "$plibpth" in --'') plibpth=`gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -171,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -324,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -339,30 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' --if getconf GNU_LIBPTHREAD_VERSION | grep NPTL >/dev/null 2>/dev/null --then -- threadshavepids="" --else -- threadshavepids="-DTHREADS_HAVE_PIDS" --fi - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE $threadshavepids $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -409,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -442,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/hv.c b/hv.c -index 89c6456..8659678 100644 ---- a/hv.c -+++ b/hv.c -@@ -35,7 +35,8 @@ holds the key and hash value. - #define PERL_HASH_INTERNAL_ACCESS - #include "perl.h" - --#define HV_MAX_LENGTH_BEFORE_SPLIT 14 -+#define HV_MAX_LENGTH_BEFORE_REHASH 14 -+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */ - - static const char S_strtab_error[] - = "Cannot modify shared string table in hv_%s"; -@@ -818,23 +819,8 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!counter) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max) { -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { - hsplit(hv); -- } else if(!HvREHASH(hv)) { -- U32 n_links = 1; -- -- while ((counter = HeNEXT(counter))) -- n_links++; -- -- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) { -- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit -- bucket splits on a rehashed hash, as we're not going to -- split it again, and if someone is lucky (evil) enough to -- get all the keys in one list they could exhaust our memory -- as we repeatedly double the number of buckets on every -- entry. Linear search feels a less worse thing to do. */ -- hsplit(hv); -- } - } - } - -@@ -1180,7 +1166,7 @@ S_hsplit(pTHX_ HV *hv) - - - /* Pick your policy for "hashing isn't working" here: */ -- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */ -+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */ - || HvREHASH(hv)) { - return; - } -@@ -2551,8 +2537,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags) - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) { -- hsplit(PL_strtab); -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { -+ hsplit(PL_strtab); - } - } - -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 27dd7b9..947fae6 100755 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -41,7 +41,7 @@ $result = runperl( progfile => 'lib/h2ph.pht', - stderr => 1 ); - like( $result, qr/syntax OK$/, "output compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.',"-w"], - prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);'); - is( $result, '', "output free of warnings" ); - -diff --git a/make_ext.pl b/make_ext.pl -index de26d84..52b0492 100644 ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -363,6 +363,10 @@ WriteMakefile( - EOM - close $fh or die "Can't close Makefile.PL: $!"; - } -+ eval { -+ my $ftime = time - 4; -+ utime $ftime, $ftime, 'Makefile.PL'; -+ }; - print "\nRunning Makefile.PL in $ext_dir\n"; - - # Presumably this can be simplified -diff --git a/pp.c b/pp.c -index 89a8409..aa85bda 100644 ---- a/pp.c -+++ b/pp.c -@@ -3559,8 +3559,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/t/op/hash.t b/t/op/hash.t -index 9bde518..45eb782 100755 ---- a/t/op/hash.t -+++ b/t/op/hash.t -@@ -39,22 +39,36 @@ use constant THRESHOLD => 14; - use constant START => "a"; - - # some initial hash data --my %h2 = map {$_ => 1} 'a'..'cc'; -+my %h2; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; - - # the minimum of bits required to mount the attack on a hash - my $min_bits = log(THRESHOLD)/log(2); -- - # if the hash has already been populated with a significant amount - # of entries the number of mask bits can be higher - my $keys = scalar keys %$hr; -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index 8f56db4..7f0c987 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -789,6 +789,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -806,6 +811,18 @@ sub build_preamble_if_necessary - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - print PREAMBLE - "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n"; diff --git a/eol/5.012.005-main,threaded-buster/Dockerfile b/eol/5.012.005-main,threaded-buster/Dockerfile deleted file mode 100644 index 491af6a..0000000 --- a/eol/5.012.005-main,threaded-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.12.5.tar.bz2 -o perl-5.12.5.tar.bz2 \ - && echo '10749417fd3010aae320a34181ad4cd6a4855c1fc63403b87fa4d630b18e966c *perl-5.12.5.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.12.5.tar.bz2 -C /usr/src/perl \ - && rm perl-5.12.5.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.12.5","-de0"] diff --git a/eol/5.012.005-main-buster/DevelPatchPerl.patch b/eol/5.012.005-main-buster/DevelPatchPerl.patch deleted file mode 100644 index 0e5e718..0000000 --- a/eol/5.012.005-main-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,833 +0,0 @@ -diff --git a/Configure b/Configure -index 3a8732b..10a1a04 100755 ---- a/Configure -+++ b/Configure -@@ -4536,7 +4536,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4576,7 +4576,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4588,6 +4588,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5128,13 +5144,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5143,7 +5159,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5245,7 +5261,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Archive-Tar/t/02_methods.t b/cpan/Archive-Tar/t/02_methods.t -index e400dda..e25e31a 100755 ---- a/cpan/Archive-Tar/t/02_methods.t -+++ b/cpan/Archive-Tar/t/02_methods.t -@@ -70,6 +70,20 @@ my $LONG_FILE = qq[directory/really-really-really-really-really-really-really-re - my $TOO_LONG = ($^O eq 'MSWin32' or $^O eq 'cygwin' or $^O eq 'VMS') - && length( cwd(). $LONG_FILE ) > 247; - -+if(!$TOO_LONG) { -+ my $alt = File::Spec->catfile( cwd(), $LONG_FILE); -+ eval 'mkpath([$alt]);'; -+ if($@) -+ { -+ $TOO_LONG = 1; -+ } -+ else -+ { -+ $@ = ''; -+ my $base = File::Spec->catfile( cwd(), 'directory'); -+ rmtree $base; -+ } -+} - ### warn if we are going to skip long file names - if ($TOO_LONG) { - diag("No long filename support - long filename extraction disabled") if ! $ENV{PERL_CORE}; -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 124b8fc..670fabc 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -257,20 +257,31 @@ sub write_errno_pm { - unless ($^O eq 'MacOS' || $^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/ext/Hash-Util-FieldHash/t/10_hash.t b/ext/Hash-Util-FieldHash/t/10_hash.t -index 2cfb4e8..d58f053 100755 ---- a/ext/Hash-Util-FieldHash/t/10_hash.t -+++ b/ext/Hash-Util-FieldHash/t/10_hash.t -@@ -38,15 +38,29 @@ use constant START => "a"; - - # some initial hash data - fieldhash my %h2; --%h2 = map {$_ => 1} 'a'..'cc'; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; -diff --git a/ext/ODBM_File/hints/linux.pl b/ext/ODBM_File/hints/linux.pl -index f8ca492..204bba0 100644 ---- a/ext/ODBM_File/hints/linux.pl -+++ b/ext/ODBM_File/hints/linux.pl -@@ -1,8 +1,8 @@ - # uses GDBM dbm compatibility feature - at least on SuSE 8.0 - $self->{LIBS} = ['-lgdbm']; - --# Debian/Ubuntu have /usr/lib/libgdbm_compat.so.3* but not this file, -+# Debian/Ubuntu have libgdbm_compat.so but not this file, - # so linking may fail --if (-e '/usr/lib/libgdbm_compat.so' or -e '/usr/lib64/libgdbm_compat.so') { -- $self->{LIBS}->[0] .= ' -lgdbm_compat'; -+foreach (split / /, $Config{libpth}) { -+ $self->{LIBS}->[0] .= ' -lgdbm_compat' if -e $_.'/libgdbm_compat.so'; - } -diff --git a/ext/SDBM_File/sdbm/sdbm.c b/ext/SDBM_File/sdbm/sdbm.c -index c5f7aa8..c7c329a 100644 ---- a/ext/SDBM_File/sdbm/sdbm.c -+++ b/ext/SDBM_File/sdbm/sdbm.c -@@ -78,8 +78,8 @@ sdbm_open(register char *file, register int flags, register int mode) - register char *dirname; - register char *pagname; - size_t filelen; -- const size_t dirfext_len = sizeof(DIRFEXT ""); -- const size_t pagfext_len = sizeof(PAGFEXT ""); -+ const size_t dirfext_size = sizeof(DIRFEXT ""); -+ const size_t pagfext_size = sizeof(PAGFEXT ""); - - if (file == NULL || !*file) - return errno = EINVAL, (DBM *) NULL; -@@ -88,17 +88,17 @@ sdbm_open(register char *file, register int flags, register int mode) - */ - filelen = strlen(file); - -- if ((dirname = (char *) malloc(filelen + dirfext_len + 1 -- + filelen + pagfext_len + 1)) == NULL) -+ if ((dirname = (char *) malloc(filelen + dirfext_size -+ + filelen + pagfext_size)) == NULL) - return errno = ENOMEM, (DBM *) NULL; - /* - * build the file names - */ - memcpy(dirname, file, filelen); -- memcpy(dirname + filelen, DIRFEXT, dirfext_len + 1); -- pagname = dirname + filelen + dirfext_len + 1; -+ memcpy(dirname + filelen, DIRFEXT, dirfext_size); -+ pagname = dirname + filelen + dirfext_size; - memcpy(pagname, file, filelen); -- memcpy(pagname + filelen, PAGFEXT, pagfext_len + 1); -+ memcpy(pagname + filelen, PAGFEXT, pagfext_size); - - db = sdbm_prep(dirname, pagname, flags, mode); - free((char *) dirname); -diff --git a/ext/Time-Local/t/Local.t b/ext/Time-Local/t/Local.t -index 61a15a8..8bf0a0b 100755 ---- a/ext/Time-Local/t/Local.t -+++ b/ext/Time-Local/t/Local.t -@@ -84,7 +84,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -100,7 +100,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -117,7 +117,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -126,14 +125,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index 0519eca..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -13,11 +13,14 @@ - # Updated Thu May 30 10:50:22 EDT 1996 by - - # Updated Fri Jun 21 11:07:54 EDT 1996 --# NDBM support for ELF renabled by -+# NDBM support for ELF re-enabled by - - # No version of Linux supports setuid scripts. - d_suidsafe='undef' - -+# No version of Linux needs libutil for perl. -+i_libutil='undef' -+ - # Debian and Red Hat, and perhaps other vendors, provide both runtime and - # development packages for some libraries. The runtime packages contain shared - # libraries with version information in their names (e.g., libgdbm.so.1.7.3); -@@ -36,7 +39,7 @@ d_suidsafe='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -55,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -84,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -97,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -131,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -160,10 +159,21 @@ esac - # This unconditionally uses gcc because even if the user is using another - # compiler, we still need to find the math library and friends, and I don't - # know how other compilers will cope with that situation. -+# Morever, if the user has their own gcc earlier in $PATH than the system gcc, -+# we don't want its libraries. So we try to prefer the system gcc - # Still, as an escape hatch, allow Configure command line overrides to - # plibpth to bypass this check. -+if [ -x /usr/bin/gcc ] ; then -+ gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} -+else -+ gcc=gcc -+fi -+ - case "$plibpth" in --'') plibpth=`gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -171,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -324,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -339,30 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' --if getconf GNU_LIBPTHREAD_VERSION | grep NPTL >/dev/null 2>/dev/null --then -- threadshavepids="" --else -- threadshavepids="-DTHREADS_HAVE_PIDS" --fi - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE $threadshavepids $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -409,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -442,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/hv.c b/hv.c -index 89c6456..8659678 100644 ---- a/hv.c -+++ b/hv.c -@@ -35,7 +35,8 @@ holds the key and hash value. - #define PERL_HASH_INTERNAL_ACCESS - #include "perl.h" - --#define HV_MAX_LENGTH_BEFORE_SPLIT 14 -+#define HV_MAX_LENGTH_BEFORE_REHASH 14 -+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */ - - static const char S_strtab_error[] - = "Cannot modify shared string table in hv_%s"; -@@ -818,23 +819,8 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!counter) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max) { -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { - hsplit(hv); -- } else if(!HvREHASH(hv)) { -- U32 n_links = 1; -- -- while ((counter = HeNEXT(counter))) -- n_links++; -- -- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) { -- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit -- bucket splits on a rehashed hash, as we're not going to -- split it again, and if someone is lucky (evil) enough to -- get all the keys in one list they could exhaust our memory -- as we repeatedly double the number of buckets on every -- entry. Linear search feels a less worse thing to do. */ -- hsplit(hv); -- } - } - } - -@@ -1180,7 +1166,7 @@ S_hsplit(pTHX_ HV *hv) - - - /* Pick your policy for "hashing isn't working" here: */ -- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */ -+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */ - || HvREHASH(hv)) { - return; - } -@@ -2551,8 +2537,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags) - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) { -- hsplit(PL_strtab); -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { -+ hsplit(PL_strtab); - } - } - -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 27dd7b9..947fae6 100755 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -41,7 +41,7 @@ $result = runperl( progfile => 'lib/h2ph.pht', - stderr => 1 ); - like( $result, qr/syntax OK$/, "output compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.',"-w"], - prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);'); - is( $result, '', "output free of warnings" ); - -diff --git a/make_ext.pl b/make_ext.pl -index de26d84..52b0492 100644 ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -363,6 +363,10 @@ WriteMakefile( - EOM - close $fh or die "Can't close Makefile.PL: $!"; - } -+ eval { -+ my $ftime = time - 4; -+ utime $ftime, $ftime, 'Makefile.PL'; -+ }; - print "\nRunning Makefile.PL in $ext_dir\n"; - - # Presumably this can be simplified -diff --git a/pp.c b/pp.c -index 89a8409..aa85bda 100644 ---- a/pp.c -+++ b/pp.c -@@ -3559,8 +3559,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/t/op/hash.t b/t/op/hash.t -index 9bde518..45eb782 100755 ---- a/t/op/hash.t -+++ b/t/op/hash.t -@@ -39,22 +39,36 @@ use constant THRESHOLD => 14; - use constant START => "a"; - - # some initial hash data --my %h2 = map {$_ => 1} 'a'..'cc'; -+my %h2; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; - - # the minimum of bits required to mount the attack on a hash - my $min_bits = log(THRESHOLD)/log(2); -- - # if the hash has already been populated with a significant amount - # of entries the number of mask bits can be higher - my $keys = scalar keys %$hr; -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index 8f56db4..7f0c987 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -789,6 +789,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -806,6 +811,18 @@ sub build_preamble_if_necessary - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - print PREAMBLE - "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n"; diff --git a/eol/5.012.005-main-buster/Dockerfile b/eol/5.012.005-main-buster/Dockerfile deleted file mode 100644 index 979151d..0000000 --- a/eol/5.012.005-main-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.12.5.tar.bz2 -o perl-5.12.5.tar.bz2 \ - && echo '10749417fd3010aae320a34181ad4cd6a4855c1fc63403b87fa4d630b18e966c *perl-5.12.5.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.12.5.tar.bz2 -C /usr/src/perl \ - && rm perl-5.12.5.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.12.5","-de0"] diff --git a/eol/5.012.005-slim,threaded-buster/DevelPatchPerl.patch b/eol/5.012.005-slim,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 0e5e718..0000000 --- a/eol/5.012.005-slim,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,833 +0,0 @@ -diff --git a/Configure b/Configure -index 3a8732b..10a1a04 100755 ---- a/Configure -+++ b/Configure -@@ -4536,7 +4536,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4576,7 +4576,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4588,6 +4588,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5128,13 +5144,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5143,7 +5159,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5245,7 +5261,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Archive-Tar/t/02_methods.t b/cpan/Archive-Tar/t/02_methods.t -index e400dda..e25e31a 100755 ---- a/cpan/Archive-Tar/t/02_methods.t -+++ b/cpan/Archive-Tar/t/02_methods.t -@@ -70,6 +70,20 @@ my $LONG_FILE = qq[directory/really-really-really-really-really-really-really-re - my $TOO_LONG = ($^O eq 'MSWin32' or $^O eq 'cygwin' or $^O eq 'VMS') - && length( cwd(). $LONG_FILE ) > 247; - -+if(!$TOO_LONG) { -+ my $alt = File::Spec->catfile( cwd(), $LONG_FILE); -+ eval 'mkpath([$alt]);'; -+ if($@) -+ { -+ $TOO_LONG = 1; -+ } -+ else -+ { -+ $@ = ''; -+ my $base = File::Spec->catfile( cwd(), 'directory'); -+ rmtree $base; -+ } -+} - ### warn if we are going to skip long file names - if ($TOO_LONG) { - diag("No long filename support - long filename extraction disabled") if ! $ENV{PERL_CORE}; -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 124b8fc..670fabc 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -257,20 +257,31 @@ sub write_errno_pm { - unless ($^O eq 'MacOS' || $^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/ext/Hash-Util-FieldHash/t/10_hash.t b/ext/Hash-Util-FieldHash/t/10_hash.t -index 2cfb4e8..d58f053 100755 ---- a/ext/Hash-Util-FieldHash/t/10_hash.t -+++ b/ext/Hash-Util-FieldHash/t/10_hash.t -@@ -38,15 +38,29 @@ use constant START => "a"; - - # some initial hash data - fieldhash my %h2; --%h2 = map {$_ => 1} 'a'..'cc'; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; -diff --git a/ext/ODBM_File/hints/linux.pl b/ext/ODBM_File/hints/linux.pl -index f8ca492..204bba0 100644 ---- a/ext/ODBM_File/hints/linux.pl -+++ b/ext/ODBM_File/hints/linux.pl -@@ -1,8 +1,8 @@ - # uses GDBM dbm compatibility feature - at least on SuSE 8.0 - $self->{LIBS} = ['-lgdbm']; - --# Debian/Ubuntu have /usr/lib/libgdbm_compat.so.3* but not this file, -+# Debian/Ubuntu have libgdbm_compat.so but not this file, - # so linking may fail --if (-e '/usr/lib/libgdbm_compat.so' or -e '/usr/lib64/libgdbm_compat.so') { -- $self->{LIBS}->[0] .= ' -lgdbm_compat'; -+foreach (split / /, $Config{libpth}) { -+ $self->{LIBS}->[0] .= ' -lgdbm_compat' if -e $_.'/libgdbm_compat.so'; - } -diff --git a/ext/SDBM_File/sdbm/sdbm.c b/ext/SDBM_File/sdbm/sdbm.c -index c5f7aa8..c7c329a 100644 ---- a/ext/SDBM_File/sdbm/sdbm.c -+++ b/ext/SDBM_File/sdbm/sdbm.c -@@ -78,8 +78,8 @@ sdbm_open(register char *file, register int flags, register int mode) - register char *dirname; - register char *pagname; - size_t filelen; -- const size_t dirfext_len = sizeof(DIRFEXT ""); -- const size_t pagfext_len = sizeof(PAGFEXT ""); -+ const size_t dirfext_size = sizeof(DIRFEXT ""); -+ const size_t pagfext_size = sizeof(PAGFEXT ""); - - if (file == NULL || !*file) - return errno = EINVAL, (DBM *) NULL; -@@ -88,17 +88,17 @@ sdbm_open(register char *file, register int flags, register int mode) - */ - filelen = strlen(file); - -- if ((dirname = (char *) malloc(filelen + dirfext_len + 1 -- + filelen + pagfext_len + 1)) == NULL) -+ if ((dirname = (char *) malloc(filelen + dirfext_size -+ + filelen + pagfext_size)) == NULL) - return errno = ENOMEM, (DBM *) NULL; - /* - * build the file names - */ - memcpy(dirname, file, filelen); -- memcpy(dirname + filelen, DIRFEXT, dirfext_len + 1); -- pagname = dirname + filelen + dirfext_len + 1; -+ memcpy(dirname + filelen, DIRFEXT, dirfext_size); -+ pagname = dirname + filelen + dirfext_size; - memcpy(pagname, file, filelen); -- memcpy(pagname + filelen, PAGFEXT, pagfext_len + 1); -+ memcpy(pagname + filelen, PAGFEXT, pagfext_size); - - db = sdbm_prep(dirname, pagname, flags, mode); - free((char *) dirname); -diff --git a/ext/Time-Local/t/Local.t b/ext/Time-Local/t/Local.t -index 61a15a8..8bf0a0b 100755 ---- a/ext/Time-Local/t/Local.t -+++ b/ext/Time-Local/t/Local.t -@@ -84,7 +84,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -100,7 +100,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -117,7 +117,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -126,14 +125,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index 0519eca..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -13,11 +13,14 @@ - # Updated Thu May 30 10:50:22 EDT 1996 by - - # Updated Fri Jun 21 11:07:54 EDT 1996 --# NDBM support for ELF renabled by -+# NDBM support for ELF re-enabled by - - # No version of Linux supports setuid scripts. - d_suidsafe='undef' - -+# No version of Linux needs libutil for perl. -+i_libutil='undef' -+ - # Debian and Red Hat, and perhaps other vendors, provide both runtime and - # development packages for some libraries. The runtime packages contain shared - # libraries with version information in their names (e.g., libgdbm.so.1.7.3); -@@ -36,7 +39,7 @@ d_suidsafe='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -55,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -84,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -97,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -131,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -160,10 +159,21 @@ esac - # This unconditionally uses gcc because even if the user is using another - # compiler, we still need to find the math library and friends, and I don't - # know how other compilers will cope with that situation. -+# Morever, if the user has their own gcc earlier in $PATH than the system gcc, -+# we don't want its libraries. So we try to prefer the system gcc - # Still, as an escape hatch, allow Configure command line overrides to - # plibpth to bypass this check. -+if [ -x /usr/bin/gcc ] ; then -+ gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} -+else -+ gcc=gcc -+fi -+ - case "$plibpth" in --'') plibpth=`gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -171,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -324,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -339,30 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' --if getconf GNU_LIBPTHREAD_VERSION | grep NPTL >/dev/null 2>/dev/null --then -- threadshavepids="" --else -- threadshavepids="-DTHREADS_HAVE_PIDS" --fi - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE $threadshavepids $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -409,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -442,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/hv.c b/hv.c -index 89c6456..8659678 100644 ---- a/hv.c -+++ b/hv.c -@@ -35,7 +35,8 @@ holds the key and hash value. - #define PERL_HASH_INTERNAL_ACCESS - #include "perl.h" - --#define HV_MAX_LENGTH_BEFORE_SPLIT 14 -+#define HV_MAX_LENGTH_BEFORE_REHASH 14 -+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */ - - static const char S_strtab_error[] - = "Cannot modify shared string table in hv_%s"; -@@ -818,23 +819,8 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!counter) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max) { -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { - hsplit(hv); -- } else if(!HvREHASH(hv)) { -- U32 n_links = 1; -- -- while ((counter = HeNEXT(counter))) -- n_links++; -- -- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) { -- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit -- bucket splits on a rehashed hash, as we're not going to -- split it again, and if someone is lucky (evil) enough to -- get all the keys in one list they could exhaust our memory -- as we repeatedly double the number of buckets on every -- entry. Linear search feels a less worse thing to do. */ -- hsplit(hv); -- } - } - } - -@@ -1180,7 +1166,7 @@ S_hsplit(pTHX_ HV *hv) - - - /* Pick your policy for "hashing isn't working" here: */ -- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */ -+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */ - || HvREHASH(hv)) { - return; - } -@@ -2551,8 +2537,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags) - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) { -- hsplit(PL_strtab); -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { -+ hsplit(PL_strtab); - } - } - -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 27dd7b9..947fae6 100755 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -41,7 +41,7 @@ $result = runperl( progfile => 'lib/h2ph.pht', - stderr => 1 ); - like( $result, qr/syntax OK$/, "output compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.',"-w"], - prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);'); - is( $result, '', "output free of warnings" ); - -diff --git a/make_ext.pl b/make_ext.pl -index de26d84..52b0492 100644 ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -363,6 +363,10 @@ WriteMakefile( - EOM - close $fh or die "Can't close Makefile.PL: $!"; - } -+ eval { -+ my $ftime = time - 4; -+ utime $ftime, $ftime, 'Makefile.PL'; -+ }; - print "\nRunning Makefile.PL in $ext_dir\n"; - - # Presumably this can be simplified -diff --git a/pp.c b/pp.c -index 89a8409..aa85bda 100644 ---- a/pp.c -+++ b/pp.c -@@ -3559,8 +3559,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/t/op/hash.t b/t/op/hash.t -index 9bde518..45eb782 100755 ---- a/t/op/hash.t -+++ b/t/op/hash.t -@@ -39,22 +39,36 @@ use constant THRESHOLD => 14; - use constant START => "a"; - - # some initial hash data --my %h2 = map {$_ => 1} 'a'..'cc'; -+my %h2; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; - - # the minimum of bits required to mount the attack on a hash - my $min_bits = log(THRESHOLD)/log(2); -- - # if the hash has already been populated with a significant amount - # of entries the number of mask bits can be higher - my $keys = scalar keys %$hr; -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index 8f56db4..7f0c987 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -789,6 +789,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -806,6 +811,18 @@ sub build_preamble_if_necessary - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - print PREAMBLE - "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n"; diff --git a/eol/5.012.005-slim,threaded-buster/Dockerfile b/eol/5.012.005-slim,threaded-buster/Dockerfile deleted file mode 100644 index e3177d7..0000000 --- a/eol/5.012.005-slim,threaded-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.12.5.tar.bz2 -o perl-5.12.5.tar.bz2 \ - && echo '10749417fd3010aae320a34181ad4cd6a4855c1fc63403b87fa4d630b18e966c *perl-5.12.5.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.12.5.tar.bz2 -C /usr/src/perl \ - && rm perl-5.12.5.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.12.5","-de0"] diff --git a/eol/5.012.005-slim-buster/DevelPatchPerl.patch b/eol/5.012.005-slim-buster/DevelPatchPerl.patch deleted file mode 100644 index 0e5e718..0000000 --- a/eol/5.012.005-slim-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,833 +0,0 @@ -diff --git a/Configure b/Configure -index 3a8732b..10a1a04 100755 ---- a/Configure -+++ b/Configure -@@ -4536,7 +4536,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4576,7 +4576,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4588,6 +4588,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5128,13 +5144,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5143,7 +5159,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5245,7 +5261,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Archive-Tar/t/02_methods.t b/cpan/Archive-Tar/t/02_methods.t -index e400dda..e25e31a 100755 ---- a/cpan/Archive-Tar/t/02_methods.t -+++ b/cpan/Archive-Tar/t/02_methods.t -@@ -70,6 +70,20 @@ my $LONG_FILE = qq[directory/really-really-really-really-really-really-really-re - my $TOO_LONG = ($^O eq 'MSWin32' or $^O eq 'cygwin' or $^O eq 'VMS') - && length( cwd(). $LONG_FILE ) > 247; - -+if(!$TOO_LONG) { -+ my $alt = File::Spec->catfile( cwd(), $LONG_FILE); -+ eval 'mkpath([$alt]);'; -+ if($@) -+ { -+ $TOO_LONG = 1; -+ } -+ else -+ { -+ $@ = ''; -+ my $base = File::Spec->catfile( cwd(), 'directory'); -+ rmtree $base; -+ } -+} - ### warn if we are going to skip long file names - if ($TOO_LONG) { - diag("No long filename support - long filename extraction disabled") if ! $ENV{PERL_CORE}; -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 124b8fc..670fabc 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -257,20 +257,31 @@ sub write_errno_pm { - unless ($^O eq 'MacOS' || $^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/ext/Hash-Util-FieldHash/t/10_hash.t b/ext/Hash-Util-FieldHash/t/10_hash.t -index 2cfb4e8..d58f053 100755 ---- a/ext/Hash-Util-FieldHash/t/10_hash.t -+++ b/ext/Hash-Util-FieldHash/t/10_hash.t -@@ -38,15 +38,29 @@ use constant START => "a"; - - # some initial hash data - fieldhash my %h2; --%h2 = map {$_ => 1} 'a'..'cc'; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; -diff --git a/ext/ODBM_File/hints/linux.pl b/ext/ODBM_File/hints/linux.pl -index f8ca492..204bba0 100644 ---- a/ext/ODBM_File/hints/linux.pl -+++ b/ext/ODBM_File/hints/linux.pl -@@ -1,8 +1,8 @@ - # uses GDBM dbm compatibility feature - at least on SuSE 8.0 - $self->{LIBS} = ['-lgdbm']; - --# Debian/Ubuntu have /usr/lib/libgdbm_compat.so.3* but not this file, -+# Debian/Ubuntu have libgdbm_compat.so but not this file, - # so linking may fail --if (-e '/usr/lib/libgdbm_compat.so' or -e '/usr/lib64/libgdbm_compat.so') { -- $self->{LIBS}->[0] .= ' -lgdbm_compat'; -+foreach (split / /, $Config{libpth}) { -+ $self->{LIBS}->[0] .= ' -lgdbm_compat' if -e $_.'/libgdbm_compat.so'; - } -diff --git a/ext/SDBM_File/sdbm/sdbm.c b/ext/SDBM_File/sdbm/sdbm.c -index c5f7aa8..c7c329a 100644 ---- a/ext/SDBM_File/sdbm/sdbm.c -+++ b/ext/SDBM_File/sdbm/sdbm.c -@@ -78,8 +78,8 @@ sdbm_open(register char *file, register int flags, register int mode) - register char *dirname; - register char *pagname; - size_t filelen; -- const size_t dirfext_len = sizeof(DIRFEXT ""); -- const size_t pagfext_len = sizeof(PAGFEXT ""); -+ const size_t dirfext_size = sizeof(DIRFEXT ""); -+ const size_t pagfext_size = sizeof(PAGFEXT ""); - - if (file == NULL || !*file) - return errno = EINVAL, (DBM *) NULL; -@@ -88,17 +88,17 @@ sdbm_open(register char *file, register int flags, register int mode) - */ - filelen = strlen(file); - -- if ((dirname = (char *) malloc(filelen + dirfext_len + 1 -- + filelen + pagfext_len + 1)) == NULL) -+ if ((dirname = (char *) malloc(filelen + dirfext_size -+ + filelen + pagfext_size)) == NULL) - return errno = ENOMEM, (DBM *) NULL; - /* - * build the file names - */ - memcpy(dirname, file, filelen); -- memcpy(dirname + filelen, DIRFEXT, dirfext_len + 1); -- pagname = dirname + filelen + dirfext_len + 1; -+ memcpy(dirname + filelen, DIRFEXT, dirfext_size); -+ pagname = dirname + filelen + dirfext_size; - memcpy(pagname, file, filelen); -- memcpy(pagname + filelen, PAGFEXT, pagfext_len + 1); -+ memcpy(pagname + filelen, PAGFEXT, pagfext_size); - - db = sdbm_prep(dirname, pagname, flags, mode); - free((char *) dirname); -diff --git a/ext/Time-Local/t/Local.t b/ext/Time-Local/t/Local.t -index 61a15a8..8bf0a0b 100755 ---- a/ext/Time-Local/t/Local.t -+++ b/ext/Time-Local/t/Local.t -@@ -84,7 +84,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -100,7 +100,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -117,7 +117,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -126,14 +125,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index 0519eca..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -13,11 +13,14 @@ - # Updated Thu May 30 10:50:22 EDT 1996 by - - # Updated Fri Jun 21 11:07:54 EDT 1996 --# NDBM support for ELF renabled by -+# NDBM support for ELF re-enabled by - - # No version of Linux supports setuid scripts. - d_suidsafe='undef' - -+# No version of Linux needs libutil for perl. -+i_libutil='undef' -+ - # Debian and Red Hat, and perhaps other vendors, provide both runtime and - # development packages for some libraries. The runtime packages contain shared - # libraries with version information in their names (e.g., libgdbm.so.1.7.3); -@@ -36,7 +39,7 @@ d_suidsafe='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -55,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -84,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -97,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -131,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -160,10 +159,21 @@ esac - # This unconditionally uses gcc because even if the user is using another - # compiler, we still need to find the math library and friends, and I don't - # know how other compilers will cope with that situation. -+# Morever, if the user has their own gcc earlier in $PATH than the system gcc, -+# we don't want its libraries. So we try to prefer the system gcc - # Still, as an escape hatch, allow Configure command line overrides to - # plibpth to bypass this check. -+if [ -x /usr/bin/gcc ] ; then -+ gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} -+else -+ gcc=gcc -+fi -+ - case "$plibpth" in --'') plibpth=`gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -171,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -324,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -339,30 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' --if getconf GNU_LIBPTHREAD_VERSION | grep NPTL >/dev/null 2>/dev/null --then -- threadshavepids="" --else -- threadshavepids="-DTHREADS_HAVE_PIDS" --fi - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE $threadshavepids $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -409,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -442,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/hv.c b/hv.c -index 89c6456..8659678 100644 ---- a/hv.c -+++ b/hv.c -@@ -35,7 +35,8 @@ holds the key and hash value. - #define PERL_HASH_INTERNAL_ACCESS - #include "perl.h" - --#define HV_MAX_LENGTH_BEFORE_SPLIT 14 -+#define HV_MAX_LENGTH_BEFORE_REHASH 14 -+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */ - - static const char S_strtab_error[] - = "Cannot modify shared string table in hv_%s"; -@@ -818,23 +819,8 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!counter) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max) { -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { - hsplit(hv); -- } else if(!HvREHASH(hv)) { -- U32 n_links = 1; -- -- while ((counter = HeNEXT(counter))) -- n_links++; -- -- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) { -- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit -- bucket splits on a rehashed hash, as we're not going to -- split it again, and if someone is lucky (evil) enough to -- get all the keys in one list they could exhaust our memory -- as we repeatedly double the number of buckets on every -- entry. Linear search feels a less worse thing to do. */ -- hsplit(hv); -- } - } - } - -@@ -1180,7 +1166,7 @@ S_hsplit(pTHX_ HV *hv) - - - /* Pick your policy for "hashing isn't working" here: */ -- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */ -+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */ - || HvREHASH(hv)) { - return; - } -@@ -2551,8 +2537,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags) - xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */ - if (!next) { /* initial entry? */ - xhv->xhv_fill++; /* HvFILL(hv)++ */ -- } else if (xhv->xhv_keys > (IV)xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) { -- hsplit(PL_strtab); -+ } else if ( SHOULD_DO_HSPLIT(xhv) ) { -+ hsplit(PL_strtab); - } - } - -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 27dd7b9..947fae6 100755 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -41,7 +41,7 @@ $result = runperl( progfile => 'lib/h2ph.pht', - stderr => 1 ); - like( $result, qr/syntax OK$/, "output compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.',"-w"], - prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);'); - is( $result, '', "output free of warnings" ); - -diff --git a/make_ext.pl b/make_ext.pl -index de26d84..52b0492 100644 ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -363,6 +363,10 @@ WriteMakefile( - EOM - close $fh or die "Can't close Makefile.PL: $!"; - } -+ eval { -+ my $ftime = time - 4; -+ utime $ftime, $ftime, 'Makefile.PL'; -+ }; - print "\nRunning Makefile.PL in $ext_dir\n"; - - # Presumably this can be simplified -diff --git a/pp.c b/pp.c -index 89a8409..aa85bda 100644 ---- a/pp.c -+++ b/pp.c -@@ -3559,8 +3559,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/t/op/hash.t b/t/op/hash.t -index 9bde518..45eb782 100755 ---- a/t/op/hash.t -+++ b/t/op/hash.t -@@ -39,22 +39,36 @@ use constant THRESHOLD => 14; - use constant START => "a"; - - # some initial hash data --my %h2 = map {$_ => 1} 'a'..'cc'; -+my %h2; -+my $counter= "a"; -+$h2{$counter++}++ while $counter ne 'cd'; - - ok (!Internals::HvREHASH(%h2), - "starting with pre-populated non-pathological hash (rehash flag if off)"); - - my @keys = get_keys(\%h2); -+my $buckets= buckets(\%h2); - $h2{$_}++ for @keys; -+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split - ok (Internals::HvREHASH(%h2), -- scalar(@keys) . " colliding into the same bucket keys are triggering rehash"); -+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split"); -+ -+# returns the number of buckets in a hash -+sub buckets { -+ my $hr = shift; -+ my $keys_buckets= scalar(%$hr); -+ if ($keys_buckets=~m!/([0-9]+)\z!) { -+ return 0+$1; -+ } else { -+ return 8; -+ } -+} - - sub get_keys { - my $hr = shift; - - # the minimum of bits required to mount the attack on a hash - my $min_bits = log(THRESHOLD)/log(2); -- - # if the hash has already been populated with a significant amount - # of entries the number of mask bits can be higher - my $keys = scalar keys %$hr; -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index 8f56db4..7f0c987 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -789,6 +789,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -806,6 +811,18 @@ sub build_preamble_if_necessary - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - print PREAMBLE - "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n"; diff --git a/eol/5.012.005-slim-buster/Dockerfile b/eol/5.012.005-slim-buster/Dockerfile deleted file mode 100644 index 7e0f290..0000000 --- a/eol/5.012.005-slim-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.12.5.tar.bz2 -o perl-5.12.5.tar.bz2 \ - && echo '10749417fd3010aae320a34181ad4cd6a4855c1fc63403b87fa4d630b18e966c *perl-5.12.5.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.12.5.tar.bz2 -C /usr/src/perl \ - && rm perl-5.12.5.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.12.5","-de0"] diff --git a/eol/5.014.004-main,threaded-buster/DevelPatchPerl.patch b/eol/5.014.004-main,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 41249b6..0000000 --- a/eol/5.014.004-main,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,593 +0,0 @@ -diff --git a/Configure b/Configure -index 0bb5c4f..16c76f6 100755 ---- a/Configure -+++ b/Configure -@@ -4536,7 +4536,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4576,7 +4576,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4588,6 +4588,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5128,13 +5144,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5143,7 +5159,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5245,7 +5261,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 521cac0..0507a8d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -95,7 +95,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -111,7 +111,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -129,7 +129,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -138,14 +137,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 56bc815..cf688be 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -248,20 +248,31 @@ sub write_errno_pm { - unless ($^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index d0ac9fa..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -39,7 +39,7 @@ i_libutil='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -58,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -87,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -134,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -169,12 +165,15 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi - - case "$plibpth" in --'') plibpth=`$gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -182,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -335,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -350,30 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' --if getconf GNU_LIBPTHREAD_VERSION | grep NPTL >/dev/null 2>/dev/null --then -- threadshavepids="" --else -- threadshavepids="-DTHREADS_HAVE_PIDS" --fi - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE $threadshavepids $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -420,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -453,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 2b58f6a..64d9dc0 100644 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', - stderr => 1 ); - like( $result, qr/syntax OK$/, "preamble compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.', "-w"], - stderr => 1, - prog => <<'PROG' ); - $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -diff --git a/make_ext.pl b/make_ext.pl -index 13a15b4..a564bb3 100644 ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -377,6 +377,10 @@ WriteMakefile( - EOM - close $fh or die "Can't close Makefile.PL: $!"; - } -+ eval { -+ my $ftime = time - 4; -+ utime $ftime, $ftime, 'Makefile.PL'; -+ }; - print "\nRunning Makefile.PL in $ext_dir\n"; - - # Presumably this can be simplified -diff --git a/pp.c b/pp.c -index d91faa4..bcd9802 100644 ---- a/pp.c -+++ b/pp.c -@@ -3823,8 +3823,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index 4545d6d..605d9a0 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -790,6 +790,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -816,6 +821,18 @@ DEFINE - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - my $def = $define{$_}; - if ($isatype{$def}) { diff --git a/eol/5.014.004-main,threaded-buster/Dockerfile b/eol/5.014.004-main,threaded-buster/Dockerfile deleted file mode 100644 index e120c14..0000000 --- a/eol/5.014.004-main,threaded-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.14.4.tar.bz2 -o perl-5.14.4.tar.bz2 \ - && echo 'eece8c2b0d491bf6f746bd1f4f1bb7ce26f6b98e91c54690c617d7af38964745 *perl-5.14.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.14.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.14.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.14.4","-de0"] diff --git a/eol/5.014.004-main-buster/DevelPatchPerl.patch b/eol/5.014.004-main-buster/DevelPatchPerl.patch deleted file mode 100644 index 41249b6..0000000 --- a/eol/5.014.004-main-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,593 +0,0 @@ -diff --git a/Configure b/Configure -index 0bb5c4f..16c76f6 100755 ---- a/Configure -+++ b/Configure -@@ -4536,7 +4536,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4576,7 +4576,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4588,6 +4588,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5128,13 +5144,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5143,7 +5159,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5245,7 +5261,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 521cac0..0507a8d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -95,7 +95,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -111,7 +111,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -129,7 +129,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -138,14 +137,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 56bc815..cf688be 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -248,20 +248,31 @@ sub write_errno_pm { - unless ($^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index d0ac9fa..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -39,7 +39,7 @@ i_libutil='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -58,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -87,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -134,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -169,12 +165,15 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi - - case "$plibpth" in --'') plibpth=`$gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -182,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -335,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -350,30 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' --if getconf GNU_LIBPTHREAD_VERSION | grep NPTL >/dev/null 2>/dev/null --then -- threadshavepids="" --else -- threadshavepids="-DTHREADS_HAVE_PIDS" --fi - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE $threadshavepids $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -420,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -453,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 2b58f6a..64d9dc0 100644 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', - stderr => 1 ); - like( $result, qr/syntax OK$/, "preamble compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.', "-w"], - stderr => 1, - prog => <<'PROG' ); - $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -diff --git a/make_ext.pl b/make_ext.pl -index 13a15b4..a564bb3 100644 ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -377,6 +377,10 @@ WriteMakefile( - EOM - close $fh or die "Can't close Makefile.PL: $!"; - } -+ eval { -+ my $ftime = time - 4; -+ utime $ftime, $ftime, 'Makefile.PL'; -+ }; - print "\nRunning Makefile.PL in $ext_dir\n"; - - # Presumably this can be simplified -diff --git a/pp.c b/pp.c -index d91faa4..bcd9802 100644 ---- a/pp.c -+++ b/pp.c -@@ -3823,8 +3823,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index 4545d6d..605d9a0 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -790,6 +790,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -816,6 +821,18 @@ DEFINE - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - my $def = $define{$_}; - if ($isatype{$def}) { diff --git a/eol/5.014.004-main-buster/Dockerfile b/eol/5.014.004-main-buster/Dockerfile deleted file mode 100644 index 8f78d98..0000000 --- a/eol/5.014.004-main-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.14.4.tar.bz2 -o perl-5.14.4.tar.bz2 \ - && echo 'eece8c2b0d491bf6f746bd1f4f1bb7ce26f6b98e91c54690c617d7af38964745 *perl-5.14.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.14.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.14.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.14.4","-de0"] diff --git a/eol/5.014.004-slim,threaded-buster/DevelPatchPerl.patch b/eol/5.014.004-slim,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 41249b6..0000000 --- a/eol/5.014.004-slim,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,593 +0,0 @@ -diff --git a/Configure b/Configure -index 0bb5c4f..16c76f6 100755 ---- a/Configure -+++ b/Configure -@@ -4536,7 +4536,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4576,7 +4576,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4588,6 +4588,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5128,13 +5144,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5143,7 +5159,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5245,7 +5261,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 521cac0..0507a8d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -95,7 +95,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -111,7 +111,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -129,7 +129,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -138,14 +137,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 56bc815..cf688be 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -248,20 +248,31 @@ sub write_errno_pm { - unless ($^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index d0ac9fa..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -39,7 +39,7 @@ i_libutil='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -58,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -87,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -134,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -169,12 +165,15 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi - - case "$plibpth" in --'') plibpth=`$gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -182,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -335,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -350,30 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' --if getconf GNU_LIBPTHREAD_VERSION | grep NPTL >/dev/null 2>/dev/null --then -- threadshavepids="" --else -- threadshavepids="-DTHREADS_HAVE_PIDS" --fi - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE $threadshavepids $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -420,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -453,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 2b58f6a..64d9dc0 100644 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', - stderr => 1 ); - like( $result, qr/syntax OK$/, "preamble compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.', "-w"], - stderr => 1, - prog => <<'PROG' ); - $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -diff --git a/make_ext.pl b/make_ext.pl -index 13a15b4..a564bb3 100644 ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -377,6 +377,10 @@ WriteMakefile( - EOM - close $fh or die "Can't close Makefile.PL: $!"; - } -+ eval { -+ my $ftime = time - 4; -+ utime $ftime, $ftime, 'Makefile.PL'; -+ }; - print "\nRunning Makefile.PL in $ext_dir\n"; - - # Presumably this can be simplified -diff --git a/pp.c b/pp.c -index d91faa4..bcd9802 100644 ---- a/pp.c -+++ b/pp.c -@@ -3823,8 +3823,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index 4545d6d..605d9a0 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -790,6 +790,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -816,6 +821,18 @@ DEFINE - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - my $def = $define{$_}; - if ($isatype{$def}) { diff --git a/eol/5.014.004-slim,threaded-buster/Dockerfile b/eol/5.014.004-slim,threaded-buster/Dockerfile deleted file mode 100644 index 4add3c7..0000000 --- a/eol/5.014.004-slim,threaded-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.14.4.tar.bz2 -o perl-5.14.4.tar.bz2 \ - && echo 'eece8c2b0d491bf6f746bd1f4f1bb7ce26f6b98e91c54690c617d7af38964745 *perl-5.14.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.14.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.14.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.14.4","-de0"] diff --git a/eol/5.014.004-slim-buster/DevelPatchPerl.patch b/eol/5.014.004-slim-buster/DevelPatchPerl.patch deleted file mode 100644 index 41249b6..0000000 --- a/eol/5.014.004-slim-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,593 +0,0 @@ -diff --git a/Configure b/Configure -index 0bb5c4f..16c76f6 100755 ---- a/Configure -+++ b/Configure -@@ -4536,7 +4536,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4576,7 +4576,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4588,6 +4588,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5128,13 +5144,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5143,7 +5159,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5245,7 +5261,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 521cac0..0507a8d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -95,7 +95,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -111,7 +111,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -129,7 +129,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -138,14 +137,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 56bc815..cf688be 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -248,20 +248,31 @@ sub write_errno_pm { - unless ($^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index d0ac9fa..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -39,7 +39,7 @@ i_libutil='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -58,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -87,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -134,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -169,12 +165,15 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi - - case "$plibpth" in --'') plibpth=`$gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -182,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -335,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -350,30 +316,62 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. - cat > UU/usethreads.cbu <<'EOCBU' --if getconf GNU_LIBPTHREAD_VERSION | grep NPTL >/dev/null 2>/dev/null --then -- threadshavepids="" --else -- threadshavepids="-DTHREADS_HAVE_PIDS" --fi - case "$usethreads" in - $define|true|[yY]*) -- ccflags="-D_REENTRANT -D_GNU_SOURCE $threadshavepids $ccflags" -+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags" - if echo $libswanted | grep -v pthread >/dev/null - then - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` -@@ -420,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -453,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 2b58f6a..64d9dc0 100644 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', - stderr => 1 ); - like( $result, qr/syntax OK$/, "preamble compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.', "-w"], - stderr => 1, - prog => <<'PROG' ); - $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -diff --git a/make_ext.pl b/make_ext.pl -index 13a15b4..a564bb3 100644 ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -377,6 +377,10 @@ WriteMakefile( - EOM - close $fh or die "Can't close Makefile.PL: $!"; - } -+ eval { -+ my $ftime = time - 4; -+ utime $ftime, $ftime, 'Makefile.PL'; -+ }; - print "\nRunning Makefile.PL in $ext_dir\n"; - - # Presumably this can be simplified -diff --git a/pp.c b/pp.c -index d91faa4..bcd9802 100644 ---- a/pp.c -+++ b/pp.c -@@ -3823,8 +3823,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index 4545d6d..605d9a0 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -790,6 +790,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -816,6 +821,18 @@ DEFINE - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - my $def = $define{$_}; - if ($isatype{$def}) { diff --git a/eol/5.014.004-slim-buster/Dockerfile b/eol/5.014.004-slim-buster/Dockerfile deleted file mode 100644 index 9b86b7b..0000000 --- a/eol/5.014.004-slim-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.14.4.tar.bz2 -o perl-5.14.4.tar.bz2 \ - && echo 'eece8c2b0d491bf6f746bd1f4f1bb7ce26f6b98e91c54690c617d7af38964745 *perl-5.14.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.14.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.14.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.14.4","-de0"] diff --git a/eol/5.016.003-main,threaded-buster/DevelPatchPerl.patch b/eol/5.016.003-main,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 8fc1fe6..0000000 --- a/eol/5.016.003-main,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,564 +0,0 @@ -diff --git a/Configure b/Configure -index fdbbf20..000a4d6 100755 ---- a/Configure -+++ b/Configure -@@ -4459,7 +4459,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4499,7 +4499,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4511,6 +4511,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5073,13 +5089,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5088,7 +5104,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5190,7 +5206,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 521cac0..0507a8d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -95,7 +95,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -111,7 +111,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -129,7 +129,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -138,14 +137,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 439f254..a324604 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -242,20 +242,31 @@ sub write_errno_pm { - unless ($^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index 688c68d..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -39,7 +39,7 @@ i_libutil='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -58,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -87,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -134,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -169,12 +165,15 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi - - case "$plibpth" in --'') plibpth=`LANG=C LC_ALL=C $gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -182,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -335,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -350,17 +316,55 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. -@@ -414,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -447,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 2b58f6a..64d9dc0 100644 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', - stderr => 1 ); - like( $result, qr/syntax OK$/, "preamble compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.', "-w"], - stderr => 1, - prog => <<'PROG' ); - $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -diff --git a/pp.c b/pp.c -index 598a429..72bc668 100644 ---- a/pp.c -+++ b/pp.c -@@ -3426,8 +3426,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a2d737b..9484d81 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -788,6 +788,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -814,6 +819,18 @@ DEFINE - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - my $def = $define{$_}; - if ($isatype{$def}) { diff --git a/eol/5.016.003-main,threaded-buster/Dockerfile b/eol/5.016.003-main,threaded-buster/Dockerfile deleted file mode 100644 index 98871e9..0000000 --- a/eol/5.016.003-main,threaded-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.16.3.tar.bz2 -o perl-5.16.3.tar.bz2 \ - && echo 'bb7bc735e6813b177dcfccd480defcde7eddefa173b5967eac11babd1bfa98e8 *perl-5.16.3.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.16.3.tar.bz2 -C /usr/src/perl \ - && rm perl-5.16.3.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.16.3","-de0"] diff --git a/eol/5.016.003-main-buster/DevelPatchPerl.patch b/eol/5.016.003-main-buster/DevelPatchPerl.patch deleted file mode 100644 index 8fc1fe6..0000000 --- a/eol/5.016.003-main-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,564 +0,0 @@ -diff --git a/Configure b/Configure -index fdbbf20..000a4d6 100755 ---- a/Configure -+++ b/Configure -@@ -4459,7 +4459,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4499,7 +4499,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4511,6 +4511,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5073,13 +5089,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5088,7 +5104,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5190,7 +5206,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 521cac0..0507a8d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -95,7 +95,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -111,7 +111,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -129,7 +129,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -138,14 +137,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 439f254..a324604 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -242,20 +242,31 @@ sub write_errno_pm { - unless ($^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index 688c68d..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -39,7 +39,7 @@ i_libutil='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -58,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -87,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -134,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -169,12 +165,15 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi - - case "$plibpth" in --'') plibpth=`LANG=C LC_ALL=C $gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -182,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -335,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -350,17 +316,55 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. -@@ -414,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -447,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 2b58f6a..64d9dc0 100644 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', - stderr => 1 ); - like( $result, qr/syntax OK$/, "preamble compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.', "-w"], - stderr => 1, - prog => <<'PROG' ); - $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -diff --git a/pp.c b/pp.c -index 598a429..72bc668 100644 ---- a/pp.c -+++ b/pp.c -@@ -3426,8 +3426,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a2d737b..9484d81 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -788,6 +788,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -814,6 +819,18 @@ DEFINE - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - my $def = $define{$_}; - if ($isatype{$def}) { diff --git a/eol/5.016.003-main-buster/Dockerfile b/eol/5.016.003-main-buster/Dockerfile deleted file mode 100644 index e41cd49..0000000 --- a/eol/5.016.003-main-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.16.3.tar.bz2 -o perl-5.16.3.tar.bz2 \ - && echo 'bb7bc735e6813b177dcfccd480defcde7eddefa173b5967eac11babd1bfa98e8 *perl-5.16.3.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.16.3.tar.bz2 -C /usr/src/perl \ - && rm perl-5.16.3.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.16.3","-de0"] diff --git a/eol/5.016.003-slim,threaded-buster/DevelPatchPerl.patch b/eol/5.016.003-slim,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 8fc1fe6..0000000 --- a/eol/5.016.003-slim,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,564 +0,0 @@ -diff --git a/Configure b/Configure -index fdbbf20..000a4d6 100755 ---- a/Configure -+++ b/Configure -@@ -4459,7 +4459,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4499,7 +4499,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4511,6 +4511,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5073,13 +5089,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5088,7 +5104,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5190,7 +5206,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 521cac0..0507a8d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -95,7 +95,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -111,7 +111,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -129,7 +129,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -138,14 +137,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 439f254..a324604 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -242,20 +242,31 @@ sub write_errno_pm { - unless ($^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index 688c68d..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -39,7 +39,7 @@ i_libutil='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -58,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -87,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -134,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -169,12 +165,15 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi - - case "$plibpth" in --'') plibpth=`LANG=C LC_ALL=C $gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -182,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -335,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -350,17 +316,55 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. -@@ -414,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -447,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 2b58f6a..64d9dc0 100644 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', - stderr => 1 ); - like( $result, qr/syntax OK$/, "preamble compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.', "-w"], - stderr => 1, - prog => <<'PROG' ); - $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -diff --git a/pp.c b/pp.c -index 598a429..72bc668 100644 ---- a/pp.c -+++ b/pp.c -@@ -3426,8 +3426,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a2d737b..9484d81 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -788,6 +788,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -814,6 +819,18 @@ DEFINE - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - my $def = $define{$_}; - if ($isatype{$def}) { diff --git a/eol/5.016.003-slim,threaded-buster/Dockerfile b/eol/5.016.003-slim,threaded-buster/Dockerfile deleted file mode 100644 index 7c0f727..0000000 --- a/eol/5.016.003-slim,threaded-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.16.3.tar.bz2 -o perl-5.16.3.tar.bz2 \ - && echo 'bb7bc735e6813b177dcfccd480defcde7eddefa173b5967eac11babd1bfa98e8 *perl-5.16.3.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.16.3.tar.bz2 -C /usr/src/perl \ - && rm perl-5.16.3.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.16.3","-de0"] diff --git a/eol/5.016.003-slim-buster/DevelPatchPerl.patch b/eol/5.016.003-slim-buster/DevelPatchPerl.patch deleted file mode 100644 index 8fc1fe6..0000000 --- a/eol/5.016.003-slim-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,564 +0,0 @@ -diff --git a/Configure b/Configure -index fdbbf20..000a4d6 100755 ---- a/Configure -+++ b/Configure -@@ -4459,7 +4459,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4499,7 +4499,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4511,6 +4511,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5073,13 +5089,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5088,7 +5104,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5190,7 +5206,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 521cac0..0507a8d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -95,7 +95,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -111,7 +111,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -129,7 +129,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -138,14 +137,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index 439f254..a324604 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -242,20 +242,31 @@ sub write_errno_pm { - unless ($^O eq 'beos') { # trust what we have / get later - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index 688c68d..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -39,7 +39,7 @@ i_libutil='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -58,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -87,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -134,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -169,12 +165,15 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi - - case "$plibpth" in --'') plibpth=`LANG=C LC_ALL=C $gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -182,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -335,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -350,17 +316,55 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. -@@ -414,16 +418,6 @@ $define|true|[yY]*) - ;; - esac - --# If we are using g++ we must use nm and force ourselves to use --# the /usr/lib/libc.a (resetting the libc below to an empty string --# makes Configure to look for the right one) because the symbol --# scanning tricks of Configure will crash and burn horribly. --case "$cc" in --*g++*) usenm=true -- libc='' -- ;; --esac -- - # If using g++, the Configure scan for dlopen() and (especially) - # dlerror() might fail, easier just to forcibly hint them in. - case "$cc" in -@@ -447,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 2b58f6a..64d9dc0 100644 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', - stderr => 1 ); - like( $result, qr/syntax OK$/, "preamble compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.', "-w"], - stderr => 1, - prog => <<'PROG' ); - $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -diff --git a/pp.c b/pp.c -index 598a429..72bc668 100644 ---- a/pp.c -+++ b/pp.c -@@ -3426,8 +3426,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a2d737b..9484d81 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -788,6 +788,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -814,6 +819,18 @@ DEFINE - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - my $def = $define{$_}; - if ($isatype{$def}) { diff --git a/eol/5.016.003-slim-buster/Dockerfile b/eol/5.016.003-slim-buster/Dockerfile deleted file mode 100644 index e31aa15..0000000 --- a/eol/5.016.003-slim-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.16.3.tar.bz2 -o perl-5.16.3.tar.bz2 \ - && echo 'bb7bc735e6813b177dcfccd480defcde7eddefa173b5967eac11babd1bfa98e8 *perl-5.16.3.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.16.3.tar.bz2 -C /usr/src/perl \ - && rm perl-5.16.3.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.16.3","-de0"] diff --git a/eol/5.018.004-main,threaded-buster/DevelPatchPerl.patch b/eol/5.018.004-main,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 1c73009..0000000 --- a/eol/5.018.004-main,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,547 +0,0 @@ -diff --git a/Configure b/Configure -index 30ab78a..bd21ae3 100755 ---- a/Configure -+++ b/Configure -@@ -4468,7 +4468,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4508,7 +4508,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4520,6 +4520,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5082,13 +5098,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5097,7 +5113,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5199,7 +5215,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index b707911..2588f0b 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -236,20 +236,31 @@ sub write_errno_pm { - { # BeOS (support now removed) did not enter this block - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index a148248..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -39,7 +39,7 @@ i_libutil='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -58,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -87,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -134,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -169,12 +165,15 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi - - case "$plibpth" in --'') plibpth=`LANG=C LC_ALL=C $gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -182,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -335,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -350,17 +316,55 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. -@@ -437,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 2b58f6a..64d9dc0 100644 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', - stderr => 1 ); - like( $result, qr/syntax OK$/, "preamble compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.', "-w"], - stderr => 1, - prog => <<'PROG' ); - $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -diff --git a/pp.c b/pp.c -index 430cf85..d099af0 100644 ---- a/pp.c -+++ b/pp.c -@@ -3412,8 +3412,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a2d737b..9484d81 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -788,6 +788,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -814,6 +819,18 @@ DEFINE - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - my $def = $define{$_}; - if ($isatype{$def}) { diff --git a/eol/5.018.004-main,threaded-buster/Dockerfile b/eol/5.018.004-main,threaded-buster/Dockerfile deleted file mode 100644 index cef0a81..0000000 --- a/eol/5.018.004-main,threaded-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.18.4.tar.bz2 -o perl-5.18.4.tar.bz2 \ - && echo '1fb4d27b75cd244e849f253320260efe1750641aaff4a18ce0d67556ff1b96a5 *perl-5.18.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.18.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.18.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.18.4","-de0"] diff --git a/eol/5.018.004-main-buster/DevelPatchPerl.patch b/eol/5.018.004-main-buster/DevelPatchPerl.patch deleted file mode 100644 index 1c73009..0000000 --- a/eol/5.018.004-main-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,547 +0,0 @@ -diff --git a/Configure b/Configure -index 30ab78a..bd21ae3 100755 ---- a/Configure -+++ b/Configure -@@ -4468,7 +4468,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4508,7 +4508,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4520,6 +4520,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5082,13 +5098,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5097,7 +5113,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5199,7 +5215,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index b707911..2588f0b 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -236,20 +236,31 @@ sub write_errno_pm { - { # BeOS (support now removed) did not enter this block - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index a148248..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -39,7 +39,7 @@ i_libutil='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -58,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -87,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -134,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -169,12 +165,15 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi - - case "$plibpth" in --'') plibpth=`LANG=C LC_ALL=C $gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -182,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -335,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -350,17 +316,55 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. -@@ -437,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 2b58f6a..64d9dc0 100644 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', - stderr => 1 ); - like( $result, qr/syntax OK$/, "preamble compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.', "-w"], - stderr => 1, - prog => <<'PROG' ); - $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -diff --git a/pp.c b/pp.c -index 430cf85..d099af0 100644 ---- a/pp.c -+++ b/pp.c -@@ -3412,8 +3412,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a2d737b..9484d81 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -788,6 +788,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -814,6 +819,18 @@ DEFINE - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - my $def = $define{$_}; - if ($isatype{$def}) { diff --git a/eol/5.018.004-main-buster/Dockerfile b/eol/5.018.004-main-buster/Dockerfile deleted file mode 100644 index cd9ab75..0000000 --- a/eol/5.018.004-main-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.18.4.tar.bz2 -o perl-5.18.4.tar.bz2 \ - && echo '1fb4d27b75cd244e849f253320260efe1750641aaff4a18ce0d67556ff1b96a5 *perl-5.18.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.18.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.18.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.18.4","-de0"] diff --git a/eol/5.018.004-slim,threaded-buster/DevelPatchPerl.patch b/eol/5.018.004-slim,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 1c73009..0000000 --- a/eol/5.018.004-slim,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,547 +0,0 @@ -diff --git a/Configure b/Configure -index 30ab78a..bd21ae3 100755 ---- a/Configure -+++ b/Configure -@@ -4468,7 +4468,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4508,7 +4508,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4520,6 +4520,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5082,13 +5098,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5097,7 +5113,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5199,7 +5215,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index b707911..2588f0b 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -236,20 +236,31 @@ sub write_errno_pm { - { # BeOS (support now removed) did not enter this block - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index a148248..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -39,7 +39,7 @@ i_libutil='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -58,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -87,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -134,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -169,12 +165,15 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi - - case "$plibpth" in --'') plibpth=`LANG=C LC_ALL=C $gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -182,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -335,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -350,17 +316,55 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. -@@ -437,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 2b58f6a..64d9dc0 100644 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', - stderr => 1 ); - like( $result, qr/syntax OK$/, "preamble compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.', "-w"], - stderr => 1, - prog => <<'PROG' ); - $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -diff --git a/pp.c b/pp.c -index 430cf85..d099af0 100644 ---- a/pp.c -+++ b/pp.c -@@ -3412,8 +3412,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a2d737b..9484d81 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -788,6 +788,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -814,6 +819,18 @@ DEFINE - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - my $def = $define{$_}; - if ($isatype{$def}) { diff --git a/eol/5.018.004-slim,threaded-buster/Dockerfile b/eol/5.018.004-slim,threaded-buster/Dockerfile deleted file mode 100644 index 1c7a24c..0000000 --- a/eol/5.018.004-slim,threaded-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.18.4.tar.bz2 -o perl-5.18.4.tar.bz2 \ - && echo '1fb4d27b75cd244e849f253320260efe1750641aaff4a18ce0d67556ff1b96a5 *perl-5.18.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.18.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.18.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.18.4","-de0"] diff --git a/eol/5.018.004-slim-buster/DevelPatchPerl.patch b/eol/5.018.004-slim-buster/DevelPatchPerl.patch deleted file mode 100644 index 1c73009..0000000 --- a/eol/5.018.004-slim-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,547 +0,0 @@ -diff --git a/Configure b/Configure -index 30ab78a..bd21ae3 100755 ---- a/Configure -+++ b/Configure -@@ -4468,7 +4468,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4508,7 +4508,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -4520,6 +4520,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" -@@ -5082,13 +5098,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5097,7 +5113,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5199,7 +5215,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL -index b707911..2588f0b 100644 ---- a/ext/Errno/Errno_pm.PL -+++ b/ext/Errno/Errno_pm.PL -@@ -236,20 +236,31 @@ sub write_errno_pm { - { # BeOS (support now removed) did not enter this block - # invoke CPP and read the output - -+ my $inhibit_linemarkers = ''; -+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { -+ # GCC 5.0 interleaves expanded macros with line numbers breaking -+ # each line into multiple lines. RT#123784 -+ $inhibit_linemarkers = ' -P'; -+ } -+ - if ($^O eq 'VMS') { -- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; -+ my $cpp = "$Config{cppstdin} $Config{cppflags}" . -+ $inhibit_linemarkers . " $Config{cppminus}"; - $cpp =~ s/sys\$input//i; - open(CPPO,"$cpp errno.c |") or - die "Cannot exec $Config{cppstdin}"; - } elsif ($IsMSWin32 || $^O eq 'NetWare') { -- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or -- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; -+ my $cpp = "$Config{cpprun} $Config{cppflags}" . -+ $inhibit_linemarkers; -+ open(CPPO,"$cpp errno.c |") or -+ die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { -- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; -+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . -+ $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { -- my $cpp = default_cpp(); -+ my $cpp = default_cpp() . $inhibit_linemarkers; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } -diff --git a/hints/linux.sh b/hints/linux.sh -index a148248..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -39,7 +39,7 @@ i_libutil='undef' - # SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk. - if test -d /opt/xt-pe - then -- case "`cc -V 2>&1`" in -+ case "`${cc:-cc} -V 2>&1`" in - *catamount*) . hints/catamount.sh; return ;; - esac - fi -@@ -58,17 +58,10 @@ shift - libswanted="$*" - - # Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- --# If you have glibc, then report the version for ./myconfig bug reporting. --# (Configure doesn't need to know the specific version since it just uses --# gcc to load the library for all tests.) --# We don't use __GLIBC__ and __GLIBC_MINOR__ because they --# are insufficiently precise to distinguish things like --# libc-2.0.6 and libc-2.0.7. --if test -L /lib/libc.so.6; then -- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` -- libc=/lib/$libc -+echo $libs -+if echo " $libswanted " | grep -q ' gdbm '; then -+ # Only add if gdbm is in libswanted. -+ libswanted="$libswanted gdbm_compat" - fi - - # Configure may fail to find lstat() since it's a static/inline -@@ -87,9 +80,12 @@ case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - -+uname_minus_m="`$run uname -m 2>/dev/null`" -+uname_minus_m="${uname_minus_m:-"$targetarch"}" -+ - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in - # The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc - ccflags="-we147 -mp -no-gcc $ccflags" - # Prevent relocation errors on 64bits arch -- case "`uname -m`" in -+ case "$uname_minus_m" in - *ia64*|*x86_64*) - cccdlflags='-fPIC' - ;; -@@ -134,7 +130,7 @@ case "$optimize" in - # use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc - '') - optimize='-O2' -- case "`uname -m`" in -+ case "$uname_minus_m" in - ppc*) - # on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy - # with -O2 ; so downgrade to -O1. -@@ -169,12 +165,15 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi - - case "$plibpth" in --'') plibpth=`LANG=C LC_ALL=C $gcc -print-search-dirs | grep libraries | -+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` - set X $plibpth # Collapse all entries on one line - shift -@@ -182,93 +181,60 @@ case "$plibpth" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac - --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac - --rm -f try.c a.out -+case "$libc" in -+'') -+# If you have glibc, then report the version for ./myconfig bug reporting. -+# (Configure doesn't need to know the specific version since it just uses -+# gcc to load the library for all tests.) -+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they -+# are insufficiently precise to distinguish things like -+# libc-2.0.6 and libc-2.0.7. -+ for p in $plibpth -+ do -+ for trylib in libc.so.6 libc.so -+ do -+ if $test -e $p/$trylib; then -+ libc=`ls -l $p/$trylib | awk '{print $NF}'` -+ if $test "X$libc" != X; then -+ break -+ fi -+ fi -+ done -+ if $test "X$libc" != X; then -+ break -+ fi -+ done -+ ;; -+esac - --if /bin/sh -c exit; then -+if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' - else -@@ -335,7 +301,7 @@ fi - #'osfmach3ppc') ccdlflags='-Wl,-E' ;; - #esac - --case "`uname -m`" in -+case "$uname_minus_m" in - sparc*) - case "$cccdlflags" in - *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; -@@ -350,17 +316,55 @@ esac - # version of -lgdbm which is a bad idea. So if we have 'nm' - # make sure it can read the file - # NI-S 2003/08/07 --if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then -- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then -- echo 'Your shared -lndbm seems to be a real library.' -- else -- echo 'Your shared -lndbm is not a real library.' -- set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -- shift -- libswanted="$*" -- fi --fi -+case "$nm" in -+ '') ;; -+ *) -+ for p in $plibpth -+ do -+ if $test -r $p/libndbm.so; then -+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then -+ echo 'Your shared -lndbm seems to be a real library.' -+ _libndbm_real=1 -+ break -+ fi -+ fi -+ done -+ if $test "X$_libndbm_real" = X; then -+ echo 'Your shared -lndbm is not a real library.' -+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'` -+ shift -+ libswanted="$*" -+ fi -+ ;; -+esac - -+# Linux on Synology. -+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then -+ # Tested on Synology DS213 and DS413 -+ # OS version info in /etc.defaults/VERSION -+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have -+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Marvell Kirkwood mv6282 ARMv5te -+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux -+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06) -+ # CPU model Freescale QorIQ P1022 ppc (e500v2) -+ # linux 2.6.32.12 #3810 ppc GNU/Linux -+ # All development stuff installed with ipkg is in /opt -+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then -+ echo 'Your LANG is safe' -+ else -+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4 -+ LANG=C -+ fi -+ echo 'Setting up to use /opt/*' >&4 -+ locincpth="/opt/include $locincpth" -+ libpth="/opt/lib $libpth" -+ libspth="/opt/lib $libspth" -+ loclibpth="/opt/lib $loclibpth" -+ # POSIX will not link without the pthread lib -+ libswanted="$libswanted pthread" -+ echo "$libswanted" >&4 -+fi - - # This script UU/usethreads.cbu will get 'called-back' by Configure - # after it has prompted the user for whether to use threads. -@@ -437,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if nm -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/lib/h2ph.t b/lib/h2ph.t -index 2b58f6a..64d9dc0 100644 ---- a/lib/h2ph.t -+++ b/lib/h2ph.t -@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', - stderr => 1 ); - like( $result, qr/syntax OK$/, "preamble compiles"); - --$result = runperl( switches => ["-w"], -+$result = runperl( switches => ['-I.', "-w"], - stderr => 1, - prog => <<'PROG' ); - $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -diff --git a/pp.c b/pp.c -index 430cf85..d099af0 100644 ---- a/pp.c -+++ b/pp.c -@@ -3412,8 +3412,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a2d737b..9484d81 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -788,6 +788,11 @@ sub build_preamble_if_necessary - - open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; - print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # Prevent non-portable hex constants from warning. -+ # -+ # We still produce an overflow warning if we can't represent -+ # a hex constant as an integer. -+ print PREAMBLE "no warnings qw(portable);\n"; - - foreach (sort keys %define) { - if ($opt_D) { -@@ -814,6 +819,18 @@ DEFINE - # integer: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -+ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { -+ # hex integer -+ # Special cased, since perl warns on hex integers -+ # that can't be represented in a UV. -+ # -+ # This way we get the warning at time of use, so the user -+ # only gets the warning if they happen to use this -+ # platform-specific definition. -+ my $code = $1; -+ $code = "hex('$code')" if length $code > 10; -+ print PREAMBLE -+ "unless (defined &$_) { sub $_() { $code } }\n\n"; - } elsif ($define{$_} =~ /^\w+$/) { - my $def = $define{$_}; - if ($isatype{$def}) { diff --git a/eol/5.018.004-slim-buster/Dockerfile b/eol/5.018.004-slim-buster/Dockerfile deleted file mode 100644 index a3d6ede..0000000 --- a/eol/5.018.004-slim-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.18.4.tar.bz2 -o perl-5.18.4.tar.bz2 \ - && echo '1fb4d27b75cd244e849f253320260efe1750641aaff4a18ce0d67556ff1b96a5 *perl-5.18.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.18.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.18.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -A ccflags=-fwrapv -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.18.4","-de0"] diff --git a/eol/5.020.003-main,threaded-buster/DevelPatchPerl.patch b/eol/5.020.003-main,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 14c00e2..0000000 --- a/eol/5.020.003-main,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,281 +0,0 @@ -diff --git a/Configure b/Configure -index 438b926..a762f78 100755 ---- a/Configure -+++ b/Configure -@@ -4591,7 +4591,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4631,7 +4631,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5328,13 +5328,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5343,7 +5343,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5445,7 +5445,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index 956adfc..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,33 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac -+ - case "$libc" in - '') - # If you have glibc, then report the version for ./myconfig bug reporting. -@@ -204,92 +234,6 @@ case "$libc" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -- --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -- --rm -f try.c a.out -- - if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' -@@ -497,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if ${nm:-nm} -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/pp.c b/pp.c -index 4ec6887..729239c 100644 ---- a/pp.c -+++ b/pp.c -@@ -3435,8 +3435,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.020.003-main,threaded-buster/Dockerfile b/eol/5.020.003-main,threaded-buster/Dockerfile deleted file mode 100644 index 7c4fd62..0000000 --- a/eol/5.020.003-main,threaded-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.20.3.tar.bz2 -o perl-5.20.3.tar.bz2 \ - && echo '1b40068166c242e34a536836286e70b78410602a80615143301e52aa2901493b *perl-5.20.3.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.20.3.tar.bz2 -C /usr/src/perl \ - && rm perl-5.20.3.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.20.3","-de0"] diff --git a/eol/5.020.003-main-buster/DevelPatchPerl.patch b/eol/5.020.003-main-buster/DevelPatchPerl.patch deleted file mode 100644 index 14c00e2..0000000 --- a/eol/5.020.003-main-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,281 +0,0 @@ -diff --git a/Configure b/Configure -index 438b926..a762f78 100755 ---- a/Configure -+++ b/Configure -@@ -4591,7 +4591,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4631,7 +4631,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5328,13 +5328,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5343,7 +5343,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5445,7 +5445,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index 956adfc..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,33 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac -+ - case "$libc" in - '') - # If you have glibc, then report the version for ./myconfig bug reporting. -@@ -204,92 +234,6 @@ case "$libc" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -- --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -- --rm -f try.c a.out -- - if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' -@@ -497,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if ${nm:-nm} -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/pp.c b/pp.c -index 4ec6887..729239c 100644 ---- a/pp.c -+++ b/pp.c -@@ -3435,8 +3435,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.020.003-main-buster/Dockerfile b/eol/5.020.003-main-buster/Dockerfile deleted file mode 100644 index 8fe22ca..0000000 --- a/eol/5.020.003-main-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.20.3.tar.bz2 -o perl-5.20.3.tar.bz2 \ - && echo '1b40068166c242e34a536836286e70b78410602a80615143301e52aa2901493b *perl-5.20.3.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.20.3.tar.bz2 -C /usr/src/perl \ - && rm perl-5.20.3.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.20.3","-de0"] diff --git a/eol/5.020.003-slim,threaded-buster/DevelPatchPerl.patch b/eol/5.020.003-slim,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 14c00e2..0000000 --- a/eol/5.020.003-slim,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,281 +0,0 @@ -diff --git a/Configure b/Configure -index 438b926..a762f78 100755 ---- a/Configure -+++ b/Configure -@@ -4591,7 +4591,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4631,7 +4631,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5328,13 +5328,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5343,7 +5343,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5445,7 +5445,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index 956adfc..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,33 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac -+ - case "$libc" in - '') - # If you have glibc, then report the version for ./myconfig bug reporting. -@@ -204,92 +234,6 @@ case "$libc" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -- --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -- --rm -f try.c a.out -- - if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' -@@ -497,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if ${nm:-nm} -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/pp.c b/pp.c -index 4ec6887..729239c 100644 ---- a/pp.c -+++ b/pp.c -@@ -3435,8 +3435,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.020.003-slim,threaded-buster/Dockerfile b/eol/5.020.003-slim,threaded-buster/Dockerfile deleted file mode 100644 index 2c9129d..0000000 --- a/eol/5.020.003-slim,threaded-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.20.3.tar.bz2 -o perl-5.20.3.tar.bz2 \ - && echo '1b40068166c242e34a536836286e70b78410602a80615143301e52aa2901493b *perl-5.20.3.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.20.3.tar.bz2 -C /usr/src/perl \ - && rm perl-5.20.3.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.20.3","-de0"] diff --git a/eol/5.020.003-slim-buster/DevelPatchPerl.patch b/eol/5.020.003-slim-buster/DevelPatchPerl.patch deleted file mode 100644 index 14c00e2..0000000 --- a/eol/5.020.003-slim-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,281 +0,0 @@ -diff --git a/Configure b/Configure -index 438b926..a762f78 100755 ---- a/Configure -+++ b/Configure -@@ -4591,7 +4591,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4631,7 +4631,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5328,13 +5328,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5343,7 +5343,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5445,7 +5445,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index 956adfc..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,33 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ -+# libquadmath is sometimes installed as gcc internal library, -+# so contrary to our usual policy of *not* looking at gcc internal -+# directories we now *do* look at them, in case they contain -+# the quadmath library. -+# XXX This may apply to other gcc internal libraries, if such exist. -+# XXX This could be at Configure level, but then the $gcc is messy. -+case "$usequadmath" in -+"$define") -+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'` -+ do -+ case `ls $d/*libquadmath*$so* 2>/dev/null` in -+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;; -+ esac -+ done -+ ;; -+esac -+ - case "$libc" in - '') - # If you have glibc, then report the version for ./myconfig bug reporting. -@@ -204,92 +234,6 @@ case "$libc" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -- --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -- --rm -f try.c a.out -- - if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' -@@ -497,7 +441,7 @@ then - DBLIB="$DBDIR/libdb.so" - if [ -f $DBLIB ] - then -- if ${nm:-nm} -u $DBLIB | grep pthread >/dev/null -+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null - then - if ldd $DBLIB | grep pthread >/dev/null - then -diff --git a/pp.c b/pp.c -index 4ec6887..729239c 100644 ---- a/pp.c -+++ b/pp.c -@@ -3435,8 +3435,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.020.003-slim-buster/Dockerfile b/eol/5.020.003-slim-buster/Dockerfile deleted file mode 100644 index ed88309..0000000 --- a/eol/5.020.003-slim-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.20.3.tar.bz2 -o perl-5.20.3.tar.bz2 \ - && echo '1b40068166c242e34a536836286e70b78410602a80615143301e52aa2901493b *perl-5.20.3.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.20.3.tar.bz2 -C /usr/src/perl \ - && rm perl-5.20.3.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.20.3","-de0"] diff --git a/eol/5.022.004-main,threaded-buster/DevelPatchPerl.patch b/eol/5.022.004-main,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 7dd1f36..0000000 --- a/eol/5.022.004-main,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,264 +0,0 @@ -diff --git a/Configure b/Configure -index 5f5f279..8ce5cbb 100755 ---- a/Configure -+++ b/Configure -@@ -4658,7 +4658,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4698,7 +4698,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5410,13 +5410,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5425,7 +5425,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5534,7 +5534,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23010,7 +23010,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[45].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index fb5a46e..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,16 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ - # libquadmath is sometimes installed as gcc internal library, - # so contrary to our usual policy of *not* looking at gcc internal - # directories we now *do* look at them, in case they contain -@@ -221,92 +234,6 @@ case "$libc" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -- --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -- --rm -f try.c a.out -- - if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' -diff --git a/pp.c b/pp.c -index 3173c5a..f2a37bd 100644 ---- a/pp.c -+++ b/pp.c -@@ -3624,8 +3624,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.022.004-main,threaded-buster/Dockerfile b/eol/5.022.004-main,threaded-buster/Dockerfile deleted file mode 100644 index f47233c..0000000 --- a/eol/5.022.004-main,threaded-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.22.4.tar.bz2 -o perl-5.22.4.tar.bz2 \ - && echo '8b3122046d1186598082d0e6da53193b045e85e3505e7d37ee0bdd0bdb539b71 *perl-5.22.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.22.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.22.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.22.4","-de0"] diff --git a/eol/5.022.004-main-buster/DevelPatchPerl.patch b/eol/5.022.004-main-buster/DevelPatchPerl.patch deleted file mode 100644 index 7dd1f36..0000000 --- a/eol/5.022.004-main-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,264 +0,0 @@ -diff --git a/Configure b/Configure -index 5f5f279..8ce5cbb 100755 ---- a/Configure -+++ b/Configure -@@ -4658,7 +4658,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4698,7 +4698,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5410,13 +5410,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5425,7 +5425,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5534,7 +5534,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23010,7 +23010,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[45].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index fb5a46e..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,16 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ - # libquadmath is sometimes installed as gcc internal library, - # so contrary to our usual policy of *not* looking at gcc internal - # directories we now *do* look at them, in case they contain -@@ -221,92 +234,6 @@ case "$libc" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -- --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -- --rm -f try.c a.out -- - if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' -diff --git a/pp.c b/pp.c -index 3173c5a..f2a37bd 100644 ---- a/pp.c -+++ b/pp.c -@@ -3624,8 +3624,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.022.004-main-buster/Dockerfile b/eol/5.022.004-main-buster/Dockerfile deleted file mode 100644 index c32848c..0000000 --- a/eol/5.022.004-main-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.22.4.tar.bz2 -o perl-5.22.4.tar.bz2 \ - && echo '8b3122046d1186598082d0e6da53193b045e85e3505e7d37ee0bdd0bdb539b71 *perl-5.22.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.22.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.22.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.22.4","-de0"] diff --git a/eol/5.022.004-slim,threaded-buster/DevelPatchPerl.patch b/eol/5.022.004-slim,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 7dd1f36..0000000 --- a/eol/5.022.004-slim,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,264 +0,0 @@ -diff --git a/Configure b/Configure -index 5f5f279..8ce5cbb 100755 ---- a/Configure -+++ b/Configure -@@ -4658,7 +4658,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4698,7 +4698,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5410,13 +5410,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5425,7 +5425,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5534,7 +5534,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23010,7 +23010,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[45].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index fb5a46e..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,16 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ - # libquadmath is sometimes installed as gcc internal library, - # so contrary to our usual policy of *not* looking at gcc internal - # directories we now *do* look at them, in case they contain -@@ -221,92 +234,6 @@ case "$libc" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -- --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -- --rm -f try.c a.out -- - if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' -diff --git a/pp.c b/pp.c -index 3173c5a..f2a37bd 100644 ---- a/pp.c -+++ b/pp.c -@@ -3624,8 +3624,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.022.004-slim,threaded-buster/Dockerfile b/eol/5.022.004-slim,threaded-buster/Dockerfile deleted file mode 100644 index 6a18d96..0000000 --- a/eol/5.022.004-slim,threaded-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.22.4.tar.bz2 -o perl-5.22.4.tar.bz2 \ - && echo '8b3122046d1186598082d0e6da53193b045e85e3505e7d37ee0bdd0bdb539b71 *perl-5.22.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.22.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.22.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.22.4","-de0"] diff --git a/eol/5.022.004-slim-buster/DevelPatchPerl.patch b/eol/5.022.004-slim-buster/DevelPatchPerl.patch deleted file mode 100644 index 7dd1f36..0000000 --- a/eol/5.022.004-slim-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,264 +0,0 @@ -diff --git a/Configure b/Configure -index 5f5f279..8ce5cbb 100755 ---- a/Configure -+++ b/Configure -@@ -4658,7 +4658,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4698,7 +4698,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5410,13 +5410,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5425,7 +5425,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5534,7 +5534,7 @@ case "$cppflags" in - *) cppflags="$cppflags $ccflags" ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23010,7 +23010,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[45].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index fb5a46e..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,16 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ - # libquadmath is sometimes installed as gcc internal library, - # so contrary to our usual policy of *not* looking at gcc internal - # directories we now *do* look at them, in case they contain -@@ -221,92 +234,6 @@ case "$libc" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -- --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -- --rm -f try.c a.out -- - if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' -diff --git a/pp.c b/pp.c -index 3173c5a..f2a37bd 100644 ---- a/pp.c -+++ b/pp.c -@@ -3624,8 +3624,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.022.004-slim-buster/Dockerfile b/eol/5.022.004-slim-buster/Dockerfile deleted file mode 100644 index a1c1295..0000000 --- a/eol/5.022.004-slim-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.22.4.tar.bz2 -o perl-5.22.4.tar.bz2 \ - && echo '8b3122046d1186598082d0e6da53193b045e85e3505e7d37ee0bdd0bdb539b71 *perl-5.22.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.22.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.22.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.22.4","-de0"] diff --git a/eol/5.024.004-main,threaded-buster/DevelPatchPerl.patch b/eol/5.024.004-main,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 96788a0..0000000 --- a/eol/5.024.004-main,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,264 +0,0 @@ -diff --git a/Configure b/Configure -index cf143bf..c56df9d 100755 ---- a/Configure -+++ b/Configure -@@ -4686,7 +4686,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4726,7 +4726,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5452,13 +5452,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5467,7 +5467,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5585,7 +5585,7 @@ case "$cppflags" in - ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23379,7 +23379,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[4567].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index fb5a46e..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,16 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ - # libquadmath is sometimes installed as gcc internal library, - # so contrary to our usual policy of *not* looking at gcc internal - # directories we now *do* look at them, in case they contain -@@ -221,92 +234,6 @@ case "$libc" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -- --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -- --rm -f try.c a.out -- - if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' -diff --git a/pp.c b/pp.c -index 4a2cde0..b979e19 100644 ---- a/pp.c -+++ b/pp.c -@@ -3818,8 +3818,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.024.004-main,threaded-buster/Dockerfile b/eol/5.024.004-main,threaded-buster/Dockerfile deleted file mode 100644 index 9f29e94..0000000 --- a/eol/5.024.004-main,threaded-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.24.4.tar.bz2 -o perl-5.24.4.tar.bz2 \ - && echo 'e34ff38c54857f431f37403b757267c9998152bf46b5c750b462f62461279b10 *perl-5.24.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.24.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.24.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.24.4","-de0"] diff --git a/eol/5.024.004-main-buster/DevelPatchPerl.patch b/eol/5.024.004-main-buster/DevelPatchPerl.patch deleted file mode 100644 index 96788a0..0000000 --- a/eol/5.024.004-main-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,264 +0,0 @@ -diff --git a/Configure b/Configure -index cf143bf..c56df9d 100755 ---- a/Configure -+++ b/Configure -@@ -4686,7 +4686,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4726,7 +4726,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5452,13 +5452,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5467,7 +5467,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5585,7 +5585,7 @@ case "$cppflags" in - ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23379,7 +23379,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[4567].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index fb5a46e..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,16 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ - # libquadmath is sometimes installed as gcc internal library, - # so contrary to our usual policy of *not* looking at gcc internal - # directories we now *do* look at them, in case they contain -@@ -221,92 +234,6 @@ case "$libc" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -- --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -- --rm -f try.c a.out -- - if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' -diff --git a/pp.c b/pp.c -index 4a2cde0..b979e19 100644 ---- a/pp.c -+++ b/pp.c -@@ -3818,8 +3818,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.024.004-main-buster/Dockerfile b/eol/5.024.004-main-buster/Dockerfile deleted file mode 100644 index 174ab98..0000000 --- a/eol/5.024.004-main-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.24.4.tar.bz2 -o perl-5.24.4.tar.bz2 \ - && echo 'e34ff38c54857f431f37403b757267c9998152bf46b5c750b462f62461279b10 *perl-5.24.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.24.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.24.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.24.4","-de0"] diff --git a/eol/5.024.004-slim,threaded-buster/DevelPatchPerl.patch b/eol/5.024.004-slim,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index 96788a0..0000000 --- a/eol/5.024.004-slim,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,264 +0,0 @@ -diff --git a/Configure b/Configure -index cf143bf..c56df9d 100755 ---- a/Configure -+++ b/Configure -@@ -4686,7 +4686,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4726,7 +4726,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5452,13 +5452,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5467,7 +5467,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5585,7 +5585,7 @@ case "$cppflags" in - ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23379,7 +23379,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[4567].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index fb5a46e..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,16 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ - # libquadmath is sometimes installed as gcc internal library, - # so contrary to our usual policy of *not* looking at gcc internal - # directories we now *do* look at them, in case they contain -@@ -221,92 +234,6 @@ case "$libc" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -- --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -- --rm -f try.c a.out -- - if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' -diff --git a/pp.c b/pp.c -index 4a2cde0..b979e19 100644 ---- a/pp.c -+++ b/pp.c -@@ -3818,8 +3818,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.024.004-slim,threaded-buster/Dockerfile b/eol/5.024.004-slim,threaded-buster/Dockerfile deleted file mode 100644 index 06048dd..0000000 --- a/eol/5.024.004-slim,threaded-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.24.4.tar.bz2 -o perl-5.24.4.tar.bz2 \ - && echo 'e34ff38c54857f431f37403b757267c9998152bf46b5c750b462f62461279b10 *perl-5.24.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.24.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.24.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.24.4","-de0"] diff --git a/eol/5.024.004-slim-buster/DevelPatchPerl.patch b/eol/5.024.004-slim-buster/DevelPatchPerl.patch deleted file mode 100644 index 96788a0..0000000 --- a/eol/5.024.004-slim-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,264 +0,0 @@ -diff --git a/Configure b/Configure -index cf143bf..c56df9d 100755 ---- a/Configure -+++ b/Configure -@@ -4686,7 +4686,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4726,7 +4726,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5452,13 +5452,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5467,7 +5467,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5585,7 +5585,7 @@ case "$cppflags" in - ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23379,7 +23379,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[4567].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 472e71a..0a852a0 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -91,7 +91,7 @@ for (@time, @neg_time) { - - # Test timelocal() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timelocal($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = localtime($time); -@@ -107,7 +107,7 @@ for (@time, @neg_time) { - - # Test timegm() - { -- my $year_in = $year < 70 ? $year + 1900 : $year; -+ my $year_in = $year + 1900; - my $time = timegm($sec,$min,$hour,$mday,$mon,$year_in); - - my($s,$m,$h,$D,$M,$Y) = gmtime($time); -@@ -125,7 +125,6 @@ for (@time, @neg_time) { - - for (@bad_time) { - my($year, $mon, $mday, $hour, $min, $sec) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm($sec,$min,$hour,$mday,$mon,$year) }; -@@ -134,14 +133,14 @@ for (@bad_time) { - } - - { -- is(timelocal(0,0,1,1,0,90) - timelocal(0,0,0,1,0,90), 3600, -+ is(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), 24 * 3600, -+ is(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), 60 * 24 * 3600, -+ is(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'); - } - -diff --git a/hints/linux.sh b/hints/linux.sh -index fb5a46e..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,16 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ - # libquadmath is sometimes installed as gcc internal library, - # so contrary to our usual policy of *not* looking at gcc internal - # directories we now *do* look at them, in case they contain -@@ -221,92 +234,6 @@ case "$libc" in - ;; - esac - --# Are we using ELF? Thanks to Kenneth Albanowski --# for this test. --cat >try.c <<'EOM' --/* Test for whether ELF binaries are produced */ --#include --#include --#include --main() { -- char buffer[4]; -- int i=open("a.out",O_RDONLY); -- if(i==-1) -- exit(1); /* fail */ -- if(read(i,&buffer[0],4)<4) -- exit(1); /* fail */ -- if(buffer[0] != 127 || buffer[1] != 'E' || -- buffer[2] != 'L' || buffer[3] != 'F') -- exit(1); /* fail */ -- exit(0); /* succeed (yes, it's ELF) */ --} --EOM --if ${cc:-gcc} $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then -- cat <<'EOM' >&4 -- --You appear to have ELF support. I'll try to use it for dynamic loading. --If dynamic loading doesn't work, read hints/linux.sh for further information. --EOM -- --else -- cat <<'EOM' >&4 -- --You don't have an ELF gcc. I will use dld if possible. If you are --using a version of DLD earlier than 3.2.6, or don't have it at all, you --should probably upgrade. If you are forced to use 3.2.4, you should --uncomment a couple of lines in hints/linux.sh and restart Configure so --that shared libraries will be disallowed. -- --EOM -- lddlflags="-r $lddlflags" -- # These empty values are so that Configure doesn't put in the -- # Linux ELF values. -- ccdlflags=' ' -- cccdlflags=' ' -- ccflags="-DOVR_DBL_DIG=14 $ccflags" -- so='sa' -- dlext='o' -- nm_so_opt=' ' -- ## If you are using DLD 3.2.4 which does not support shared libs, -- ## uncomment the next two lines: -- #ldflags="-static" -- #so='none' -- -- # In addition, on some systems there is a problem with perl and NDBM -- # which causes AnyDBM and NDBM_File to lock up. This is evidenced -- # in the tests as AnyDBM just freezing. Apparently, this only -- # happens on a.out systems, so we disable NDBM for all a.out linux -- # systems. If someone can suggest a more robust test -- # that would be appreciated. -- # -- # More info: -- # Date: Wed, 7 Feb 1996 03:21:04 +0900 -- # From: Jeffrey Friedl -- # -- # I tried compiling with DBM support and sure enough things locked up -- # just as advertised. Checking into it, I found that the lockup was -- # during the call to dbm_open. Not *in* dbm_open -- but between the call -- # to and the jump into. -- # -- # To make a long story short, making sure that the *.a and *.sa pairs of -- # /usr/lib/lib{m,db,gdbm}.{a,sa} -- # were perfectly in sync took care of it. -- # -- # This will generate a harmless Whoa There! message -- case "$d_dbm_open" in -- '') cat <<'EOM' >&4 -- --Disabling ndbm. This will generate a Whoa There message in Configure. --Read hints/linux.sh for further information. --EOM -- # You can override this with Configure -Dd_dbm_open -- d_dbm_open=undef -- ;; -- esac --fi -- --rm -f try.c a.out -- - if ${sh:-/bin/sh} -c exit; then - echo '' - echo 'You appear to have a working bash. Good.' -diff --git a/pp.c b/pp.c -index 4a2cde0..b979e19 100644 ---- a/pp.c -+++ b/pp.c -@@ -3818,8 +3818,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.024.004-slim-buster/Dockerfile b/eol/5.024.004-slim-buster/Dockerfile deleted file mode 100644 index 1e1ee5e..0000000 --- a/eol/5.024.004-slim-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.24.4.tar.bz2 -o perl-5.24.4.tar.bz2 \ - && echo 'e34ff38c54857f431f37403b757267c9998152bf46b5c750b462f62461279b10 *perl-5.24.4.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.24.4.tar.bz2 -C /usr/src/perl \ - && rm perl-5.24.4.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && LD_LIBRARY_PATH=. ./perl -Ilib -de0 \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.24.4","-de0"] diff --git a/eol/5.026.003-main,threaded-buster/DevelPatchPerl.patch b/eol/5.026.003-main,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index c28bcd4..0000000 --- a/eol/5.026.003-main,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,213 +0,0 @@ -diff --git a/Configure b/Configure -index bdcfaf1..1824010 100755 ---- a/Configure -+++ b/Configure -@@ -4703,7 +4703,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4743,7 +4743,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5469,13 +5469,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5484,7 +5484,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5602,7 +5602,7 @@ case "$cppflags" in - ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23612,7 +23612,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[4567].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 6341396..701d22d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -85,19 +85,17 @@ my $epoch_is_64 - - for ( @time, @neg_time ) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - SKIP: { - skip '1970 test on VOS fails.', 12 -- if $^O eq 'vos' && $year == 70; -+ if $^O eq 'vos' && $year == 1970; - skip 'this platform does not support negative epochs.', 12 -- if $year < 70 && !$neg_epoch_ok; -+ if $year < 1970 && !$neg_epoch_ok; - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = localtime($time); - -@@ -106,13 +104,12 @@ SKIP: { - is( $h, $hour, "timelocal hour for @$_" ); - is( $D, $mday, "timelocal day for @$_" ); - is( $M, $mon, "timelocal month for @$_" ); -- is( $Y, $year, "timelocal year for @$_" ); -+ is( $Y, $year - 1900, "timelocal year for @$_" ); - } - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = gmtime($time); - -@@ -121,14 +118,13 @@ SKIP: { - is( $h, $hour, "timegm hour for @$_" ); - is( $D, $mday, "timegm day for @$_" ); - is( $M, $mon, "timegm month for @$_" ); -- is( $Y, $year, "timegm year for @$_" ); -+ is( $Y, $year - 1900, "timegm year for @$_" ); - } - } - } - - for (@bad_time) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) }; -@@ -229,6 +225,30 @@ SKIP: - ); - } - -+# 2-digit years -+{ -+ my $current_year = ( localtime() )[5]; -+ my $pre_break = ( $current_year + 49 ) - 100; -+ my $break = ( $current_year + 50 ) - 100; -+ my $post_break = ( $current_year + 51 ) - 100; -+ -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $pre_break ) ) )[5] ), -+ $pre_break + 100, -+ "year $pre_break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $break ) ) )[5] ), -+ $break + 100, -+ "year $break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $post_break ) ) )[5] ), -+ $post_break, -+ "year $post_break is treated as current century", -+ ); -+} -+ - SKIP: - { - skip 'These tests only run for the package maintainer.', 8 -diff --git a/hints/linux.sh b/hints/linux.sh -index 3f38ea0..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,16 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ - # libquadmath is sometimes installed as gcc internal library, - # so contrary to our usual policy of *not* looking at gcc internal - # directories we now *do* look at them, in case they contain -diff --git a/pp.c b/pp.c -index fbba3bd..1e0a5eb 100644 ---- a/pp.c -+++ b/pp.c -@@ -3737,8 +3737,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.026.003-main,threaded-buster/Dockerfile b/eol/5.026.003-main,threaded-buster/Dockerfile deleted file mode 100644 index 1726ded..0000000 --- a/eol/5.026.003-main,threaded-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.26.3.tar.bz2 -o perl-5.26.3.tar.bz2 \ - && echo '9ff35a613213f29ab53975141af6825ae7d4408895538cac0922e47ab92a1477 *perl-5.26.3.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.26.3.tar.bz2 -C /usr/src/perl \ - && rm perl-5.26.3.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && TEST_JOBS=$(nproc) make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.26.3","-de0"] diff --git a/eol/5.026.003-main,threaded-buster/rt-perl-133295.patch b/eol/5.026.003-main,threaded-buster/rt-perl-133295.patch deleted file mode 100644 index f796373..0000000 --- a/eol/5.026.003-main,threaded-buster/rt-perl-133295.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0d9e812de5885109532ec8bf484f165213ab97cb Mon Sep 17 00:00:00 2001 -From: David Mitchell -Date: Fri, 14 Dec 2018 16:54:42 +0000 -Subject: [PATCH] ext/GDBM_File/t/fatal.t: handle non-fatality - -This script is supposed to exercise the error handling callback -mechanism in gdbm, by triggering an error by surreptitiously closing -the file handle which gdbm has opened. - -However, this doesn't trigger an error in newer releases of the gdbm -library, which uses mmap() rather than write() etc. In fact I can't see -any way of triggering an error: so just skip the relevant tests if we -can't trigger a failure. ---- - ext/GDBM_File/t/fatal.t | 35 ++++++++++++++++++++++++++--------- - 1 file changed, 26 insertions(+), 9 deletions(-) - -diff --git a/ext/GDBM_File/t/fatal.t b/ext/GDBM_File/t/fatal.t -index 3ba66be598c..159916901a9 100644 ---- a/ext/GDBM_File/t/fatal.t -+++ b/ext/GDBM_File/t/fatal.t -@@ -1,4 +1,12 @@ - #!./perl -w -+# -+# Exercise the error handling callback mechanism in gdbm. -+# -+# Try to trigger an error by surreptitiously closing the file handle which -+# gdbm has opened. Note that this won't trigger an error in newer -+# releases of the gdbm library, which uses mmap() rather than write() etc: -+# so skip in that case. -+ - use strict; - - use Test::More; -@@ -34,16 +42,25 @@ isnt((open $fh, "<&=$fileno"), undef, "dup fileno $fileno") - or diag("\$! = $!"); - isnt(close $fh, undef, - "close fileno $fileno, out from underneath the GDBM_File"); --is(eval { -+ -+# store some data to a closed file handle -+ -+my $res = eval { - $h{Perl} = 'Rules'; - untie %h; -- 1; --}, undef, 'Trapped error when attempting to write to knobbled GDBM_File'); -- --# Observed "File write error" and "lseek error" from two different systems. --# So there might be more variants. Important part was that we trapped the error --# via croak. --like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -- 'expected error message from GDBM_File'); -+ 99; -+}; -+ -+SKIP: { -+ skip "Can't tigger failure", 2 if $res == 99; -+ -+ is $res, undef, "eval should return undef"; -+ -+ # Observed "File write error" and "lseek error" from two different -+ # systems. So there might be more variants. Important part was that -+ # we trapped the error # via croak. -+ like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -+ 'expected error message from GDBM_File'); -+} - - unlink ; diff --git a/eol/5.026.003-main-buster/DevelPatchPerl.patch b/eol/5.026.003-main-buster/DevelPatchPerl.patch deleted file mode 100644 index c28bcd4..0000000 --- a/eol/5.026.003-main-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,213 +0,0 @@ -diff --git a/Configure b/Configure -index bdcfaf1..1824010 100755 ---- a/Configure -+++ b/Configure -@@ -4703,7 +4703,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4743,7 +4743,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5469,13 +5469,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5484,7 +5484,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5602,7 +5602,7 @@ case "$cppflags" in - ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23612,7 +23612,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[4567].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 6341396..701d22d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -85,19 +85,17 @@ my $epoch_is_64 - - for ( @time, @neg_time ) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - SKIP: { - skip '1970 test on VOS fails.', 12 -- if $^O eq 'vos' && $year == 70; -+ if $^O eq 'vos' && $year == 1970; - skip 'this platform does not support negative epochs.', 12 -- if $year < 70 && !$neg_epoch_ok; -+ if $year < 1970 && !$neg_epoch_ok; - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = localtime($time); - -@@ -106,13 +104,12 @@ SKIP: { - is( $h, $hour, "timelocal hour for @$_" ); - is( $D, $mday, "timelocal day for @$_" ); - is( $M, $mon, "timelocal month for @$_" ); -- is( $Y, $year, "timelocal year for @$_" ); -+ is( $Y, $year - 1900, "timelocal year for @$_" ); - } - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = gmtime($time); - -@@ -121,14 +118,13 @@ SKIP: { - is( $h, $hour, "timegm hour for @$_" ); - is( $D, $mday, "timegm day for @$_" ); - is( $M, $mon, "timegm month for @$_" ); -- is( $Y, $year, "timegm year for @$_" ); -+ is( $Y, $year - 1900, "timegm year for @$_" ); - } - } - } - - for (@bad_time) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) }; -@@ -229,6 +225,30 @@ SKIP: - ); - } - -+# 2-digit years -+{ -+ my $current_year = ( localtime() )[5]; -+ my $pre_break = ( $current_year + 49 ) - 100; -+ my $break = ( $current_year + 50 ) - 100; -+ my $post_break = ( $current_year + 51 ) - 100; -+ -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $pre_break ) ) )[5] ), -+ $pre_break + 100, -+ "year $pre_break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $break ) ) )[5] ), -+ $break + 100, -+ "year $break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $post_break ) ) )[5] ), -+ $post_break, -+ "year $post_break is treated as current century", -+ ); -+} -+ - SKIP: - { - skip 'These tests only run for the package maintainer.', 8 -diff --git a/hints/linux.sh b/hints/linux.sh -index 3f38ea0..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,16 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ - # libquadmath is sometimes installed as gcc internal library, - # so contrary to our usual policy of *not* looking at gcc internal - # directories we now *do* look at them, in case they contain -diff --git a/pp.c b/pp.c -index fbba3bd..1e0a5eb 100644 ---- a/pp.c -+++ b/pp.c -@@ -3737,8 +3737,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.026.003-main-buster/Dockerfile b/eol/5.026.003-main-buster/Dockerfile deleted file mode 100644 index 657463e..0000000 --- a/eol/5.026.003-main-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.26.3.tar.bz2 -o perl-5.26.3.tar.bz2 \ - && echo '9ff35a613213f29ab53975141af6825ae7d4408895538cac0922e47ab92a1477 *perl-5.26.3.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.26.3.tar.bz2 -C /usr/src/perl \ - && rm perl-5.26.3.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && TEST_JOBS=$(nproc) make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.26.3","-de0"] diff --git a/eol/5.026.003-main-buster/rt-perl-133295.patch b/eol/5.026.003-main-buster/rt-perl-133295.patch deleted file mode 100644 index f796373..0000000 --- a/eol/5.026.003-main-buster/rt-perl-133295.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0d9e812de5885109532ec8bf484f165213ab97cb Mon Sep 17 00:00:00 2001 -From: David Mitchell -Date: Fri, 14 Dec 2018 16:54:42 +0000 -Subject: [PATCH] ext/GDBM_File/t/fatal.t: handle non-fatality - -This script is supposed to exercise the error handling callback -mechanism in gdbm, by triggering an error by surreptitiously closing -the file handle which gdbm has opened. - -However, this doesn't trigger an error in newer releases of the gdbm -library, which uses mmap() rather than write() etc. In fact I can't see -any way of triggering an error: so just skip the relevant tests if we -can't trigger a failure. ---- - ext/GDBM_File/t/fatal.t | 35 ++++++++++++++++++++++++++--------- - 1 file changed, 26 insertions(+), 9 deletions(-) - -diff --git a/ext/GDBM_File/t/fatal.t b/ext/GDBM_File/t/fatal.t -index 3ba66be598c..159916901a9 100644 ---- a/ext/GDBM_File/t/fatal.t -+++ b/ext/GDBM_File/t/fatal.t -@@ -1,4 +1,12 @@ - #!./perl -w -+# -+# Exercise the error handling callback mechanism in gdbm. -+# -+# Try to trigger an error by surreptitiously closing the file handle which -+# gdbm has opened. Note that this won't trigger an error in newer -+# releases of the gdbm library, which uses mmap() rather than write() etc: -+# so skip in that case. -+ - use strict; - - use Test::More; -@@ -34,16 +42,25 @@ isnt((open $fh, "<&=$fileno"), undef, "dup fileno $fileno") - or diag("\$! = $!"); - isnt(close $fh, undef, - "close fileno $fileno, out from underneath the GDBM_File"); --is(eval { -+ -+# store some data to a closed file handle -+ -+my $res = eval { - $h{Perl} = 'Rules'; - untie %h; -- 1; --}, undef, 'Trapped error when attempting to write to knobbled GDBM_File'); -- --# Observed "File write error" and "lseek error" from two different systems. --# So there might be more variants. Important part was that we trapped the error --# via croak. --like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -- 'expected error message from GDBM_File'); -+ 99; -+}; -+ -+SKIP: { -+ skip "Can't tigger failure", 2 if $res == 99; -+ -+ is $res, undef, "eval should return undef"; -+ -+ # Observed "File write error" and "lseek error" from two different -+ # systems. So there might be more variants. Important part was that -+ # we trapped the error # via croak. -+ like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -+ 'expected error message from GDBM_File'); -+} - - unlink ; diff --git a/eol/5.026.003-slim,threaded-buster/DevelPatchPerl.patch b/eol/5.026.003-slim,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index c28bcd4..0000000 --- a/eol/5.026.003-slim,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,213 +0,0 @@ -diff --git a/Configure b/Configure -index bdcfaf1..1824010 100755 ---- a/Configure -+++ b/Configure -@@ -4703,7 +4703,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4743,7 +4743,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5469,13 +5469,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5484,7 +5484,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5602,7 +5602,7 @@ case "$cppflags" in - ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23612,7 +23612,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[4567].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 6341396..701d22d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -85,19 +85,17 @@ my $epoch_is_64 - - for ( @time, @neg_time ) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - SKIP: { - skip '1970 test on VOS fails.', 12 -- if $^O eq 'vos' && $year == 70; -+ if $^O eq 'vos' && $year == 1970; - skip 'this platform does not support negative epochs.', 12 -- if $year < 70 && !$neg_epoch_ok; -+ if $year < 1970 && !$neg_epoch_ok; - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = localtime($time); - -@@ -106,13 +104,12 @@ SKIP: { - is( $h, $hour, "timelocal hour for @$_" ); - is( $D, $mday, "timelocal day for @$_" ); - is( $M, $mon, "timelocal month for @$_" ); -- is( $Y, $year, "timelocal year for @$_" ); -+ is( $Y, $year - 1900, "timelocal year for @$_" ); - } - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = gmtime($time); - -@@ -121,14 +118,13 @@ SKIP: { - is( $h, $hour, "timegm hour for @$_" ); - is( $D, $mday, "timegm day for @$_" ); - is( $M, $mon, "timegm month for @$_" ); -- is( $Y, $year, "timegm year for @$_" ); -+ is( $Y, $year - 1900, "timegm year for @$_" ); - } - } - } - - for (@bad_time) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) }; -@@ -229,6 +225,30 @@ SKIP: - ); - } - -+# 2-digit years -+{ -+ my $current_year = ( localtime() )[5]; -+ my $pre_break = ( $current_year + 49 ) - 100; -+ my $break = ( $current_year + 50 ) - 100; -+ my $post_break = ( $current_year + 51 ) - 100; -+ -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $pre_break ) ) )[5] ), -+ $pre_break + 100, -+ "year $pre_break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $break ) ) )[5] ), -+ $break + 100, -+ "year $break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $post_break ) ) )[5] ), -+ $post_break, -+ "year $post_break is treated as current century", -+ ); -+} -+ - SKIP: - { - skip 'These tests only run for the package maintainer.', 8 -diff --git a/hints/linux.sh b/hints/linux.sh -index 3f38ea0..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,16 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ - # libquadmath is sometimes installed as gcc internal library, - # so contrary to our usual policy of *not* looking at gcc internal - # directories we now *do* look at them, in case they contain -diff --git a/pp.c b/pp.c -index fbba3bd..1e0a5eb 100644 ---- a/pp.c -+++ b/pp.c -@@ -3737,8 +3737,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.026.003-slim,threaded-buster/Dockerfile b/eol/5.026.003-slim,threaded-buster/Dockerfile deleted file mode 100644 index 1125707..0000000 --- a/eol/5.026.003-slim,threaded-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.26.3.tar.bz2 -o perl-5.26.3.tar.bz2 \ - && echo '9ff35a613213f29ab53975141af6825ae7d4408895538cac0922e47ab92a1477 *perl-5.26.3.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.26.3.tar.bz2 -C /usr/src/perl \ - && rm perl-5.26.3.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && TEST_JOBS=$(nproc) make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.26.3","-de0"] diff --git a/eol/5.026.003-slim,threaded-buster/rt-perl-133295.patch b/eol/5.026.003-slim,threaded-buster/rt-perl-133295.patch deleted file mode 100644 index f796373..0000000 --- a/eol/5.026.003-slim,threaded-buster/rt-perl-133295.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0d9e812de5885109532ec8bf484f165213ab97cb Mon Sep 17 00:00:00 2001 -From: David Mitchell -Date: Fri, 14 Dec 2018 16:54:42 +0000 -Subject: [PATCH] ext/GDBM_File/t/fatal.t: handle non-fatality - -This script is supposed to exercise the error handling callback -mechanism in gdbm, by triggering an error by surreptitiously closing -the file handle which gdbm has opened. - -However, this doesn't trigger an error in newer releases of the gdbm -library, which uses mmap() rather than write() etc. In fact I can't see -any way of triggering an error: so just skip the relevant tests if we -can't trigger a failure. ---- - ext/GDBM_File/t/fatal.t | 35 ++++++++++++++++++++++++++--------- - 1 file changed, 26 insertions(+), 9 deletions(-) - -diff --git a/ext/GDBM_File/t/fatal.t b/ext/GDBM_File/t/fatal.t -index 3ba66be598c..159916901a9 100644 ---- a/ext/GDBM_File/t/fatal.t -+++ b/ext/GDBM_File/t/fatal.t -@@ -1,4 +1,12 @@ - #!./perl -w -+# -+# Exercise the error handling callback mechanism in gdbm. -+# -+# Try to trigger an error by surreptitiously closing the file handle which -+# gdbm has opened. Note that this won't trigger an error in newer -+# releases of the gdbm library, which uses mmap() rather than write() etc: -+# so skip in that case. -+ - use strict; - - use Test::More; -@@ -34,16 +42,25 @@ isnt((open $fh, "<&=$fileno"), undef, "dup fileno $fileno") - or diag("\$! = $!"); - isnt(close $fh, undef, - "close fileno $fileno, out from underneath the GDBM_File"); --is(eval { -+ -+# store some data to a closed file handle -+ -+my $res = eval { - $h{Perl} = 'Rules'; - untie %h; -- 1; --}, undef, 'Trapped error when attempting to write to knobbled GDBM_File'); -- --# Observed "File write error" and "lseek error" from two different systems. --# So there might be more variants. Important part was that we trapped the error --# via croak. --like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -- 'expected error message from GDBM_File'); -+ 99; -+}; -+ -+SKIP: { -+ skip "Can't tigger failure", 2 if $res == 99; -+ -+ is $res, undef, "eval should return undef"; -+ -+ # Observed "File write error" and "lseek error" from two different -+ # systems. So there might be more variants. Important part was that -+ # we trapped the error # via croak. -+ like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -+ 'expected error message from GDBM_File'); -+} - - unlink ; diff --git a/eol/5.026.003-slim-buster/DevelPatchPerl.patch b/eol/5.026.003-slim-buster/DevelPatchPerl.patch deleted file mode 100644 index c28bcd4..0000000 --- a/eol/5.026.003-slim-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,213 +0,0 @@ -diff --git a/Configure b/Configure -index bdcfaf1..1824010 100755 ---- a/Configure -+++ b/Configure -@@ -4703,7 +4703,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4743,7 +4743,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5469,13 +5469,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5484,7 +5484,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5602,7 +5602,7 @@ case "$cppflags" in - ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23612,7 +23612,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[4567].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 6341396..701d22d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -85,19 +85,17 @@ my $epoch_is_64 - - for ( @time, @neg_time ) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - SKIP: { - skip '1970 test on VOS fails.', 12 -- if $^O eq 'vos' && $year == 70; -+ if $^O eq 'vos' && $year == 1970; - skip 'this platform does not support negative epochs.', 12 -- if $year < 70 && !$neg_epoch_ok; -+ if $year < 1970 && !$neg_epoch_ok; - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = localtime($time); - -@@ -106,13 +104,12 @@ SKIP: { - is( $h, $hour, "timelocal hour for @$_" ); - is( $D, $mday, "timelocal day for @$_" ); - is( $M, $mon, "timelocal month for @$_" ); -- is( $Y, $year, "timelocal year for @$_" ); -+ is( $Y, $year - 1900, "timelocal year for @$_" ); - } - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = gmtime($time); - -@@ -121,14 +118,13 @@ SKIP: { - is( $h, $hour, "timegm hour for @$_" ); - is( $D, $mday, "timegm day for @$_" ); - is( $M, $mon, "timegm month for @$_" ); -- is( $Y, $year, "timegm year for @$_" ); -+ is( $Y, $year - 1900, "timegm year for @$_" ); - } - } - } - - for (@bad_time) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) }; -@@ -229,6 +225,30 @@ SKIP: - ); - } - -+# 2-digit years -+{ -+ my $current_year = ( localtime() )[5]; -+ my $pre_break = ( $current_year + 49 ) - 100; -+ my $break = ( $current_year + 50 ) - 100; -+ my $post_break = ( $current_year + 51 ) - 100; -+ -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $pre_break ) ) )[5] ), -+ $pre_break + 100, -+ "year $pre_break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $break ) ) )[5] ), -+ $break + 100, -+ "year $break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $post_break ) ) )[5] ), -+ $post_break, -+ "year $post_break is treated as current century", -+ ); -+} -+ - SKIP: - { - skip 'These tests only run for the package maintainer.', 8 -diff --git a/hints/linux.sh b/hints/linux.sh -index 3f38ea0..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi -@@ -178,6 +181,16 @@ case "$plibpth" in - ;; - esac - -+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some -+# available functions, like memem, won't be used. See the discussion in -+# [perl #133760]. musl doesn't offer an easy way to identify it, but, -+# at least on alpine linux, the ldd --version output contains the -+# string 'musl.' -+case `ldd --version 2>&1` in -+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;; -+ *) ;; -+esac -+ - # libquadmath is sometimes installed as gcc internal library, - # so contrary to our usual policy of *not* looking at gcc internal - # directories we now *do* look at them, in case they contain -diff --git a/pp.c b/pp.c -index fbba3bd..1e0a5eb 100644 ---- a/pp.c -+++ b/pp.c -@@ -3737,8 +3737,12 @@ 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 */ -+#if (defined(__GLIBC__) && __GLIBC__ == 2) && \ -+ (defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ >= 2 && __GLIBC_MINOR__ < 4) -+ /* work around glibc-2.2.5 bug, has been fixed at some -+ * time in glibc-2.3.X */ - PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; -+#endif - } - #endif - } diff --git a/eol/5.026.003-slim-buster/Dockerfile b/eol/5.026.003-slim-buster/Dockerfile deleted file mode 100644 index 065095c..0000000 --- a/eol/5.026.003-slim-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.26.3.tar.bz2 -o perl-5.26.3.tar.bz2 \ - && echo '9ff35a613213f29ab53975141af6825ae7d4408895538cac0922e47ab92a1477 *perl-5.26.3.tar.bz2' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.26.3.tar.bz2 -C /usr/src/perl \ - && rm perl-5.26.3.tar.bz2 \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && TEST_JOBS=$(nproc) make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.26.3","-de0"] diff --git a/eol/5.026.003-slim-buster/rt-perl-133295.patch b/eol/5.026.003-slim-buster/rt-perl-133295.patch deleted file mode 100644 index f796373..0000000 --- a/eol/5.026.003-slim-buster/rt-perl-133295.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0d9e812de5885109532ec8bf484f165213ab97cb Mon Sep 17 00:00:00 2001 -From: David Mitchell -Date: Fri, 14 Dec 2018 16:54:42 +0000 -Subject: [PATCH] ext/GDBM_File/t/fatal.t: handle non-fatality - -This script is supposed to exercise the error handling callback -mechanism in gdbm, by triggering an error by surreptitiously closing -the file handle which gdbm has opened. - -However, this doesn't trigger an error in newer releases of the gdbm -library, which uses mmap() rather than write() etc. In fact I can't see -any way of triggering an error: so just skip the relevant tests if we -can't trigger a failure. ---- - ext/GDBM_File/t/fatal.t | 35 ++++++++++++++++++++++++++--------- - 1 file changed, 26 insertions(+), 9 deletions(-) - -diff --git a/ext/GDBM_File/t/fatal.t b/ext/GDBM_File/t/fatal.t -index 3ba66be598c..159916901a9 100644 ---- a/ext/GDBM_File/t/fatal.t -+++ b/ext/GDBM_File/t/fatal.t -@@ -1,4 +1,12 @@ - #!./perl -w -+# -+# Exercise the error handling callback mechanism in gdbm. -+# -+# Try to trigger an error by surreptitiously closing the file handle which -+# gdbm has opened. Note that this won't trigger an error in newer -+# releases of the gdbm library, which uses mmap() rather than write() etc: -+# so skip in that case. -+ - use strict; - - use Test::More; -@@ -34,16 +42,25 @@ isnt((open $fh, "<&=$fileno"), undef, "dup fileno $fileno") - or diag("\$! = $!"); - isnt(close $fh, undef, - "close fileno $fileno, out from underneath the GDBM_File"); --is(eval { -+ -+# store some data to a closed file handle -+ -+my $res = eval { - $h{Perl} = 'Rules'; - untie %h; -- 1; --}, undef, 'Trapped error when attempting to write to knobbled GDBM_File'); -- --# Observed "File write error" and "lseek error" from two different systems. --# So there might be more variants. Important part was that we trapped the error --# via croak. --like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -- 'expected error message from GDBM_File'); -+ 99; -+}; -+ -+SKIP: { -+ skip "Can't tigger failure", 2 if $res == 99; -+ -+ is $res, undef, "eval should return undef"; -+ -+ # Observed "File write error" and "lseek error" from two different -+ # systems. So there might be more variants. Important part was that -+ # we trapped the error # via croak. -+ like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -+ 'expected error message from GDBM_File'); -+} - - unlink ; diff --git a/eol/5.028.003-main,threaded-buster/DevelPatchPerl.patch b/eol/5.028.003-main,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index c72bc46..0000000 --- a/eol/5.028.003-main,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,178 +0,0 @@ -diff --git a/Configure b/Configure -index f99377e..e020242 100755 ---- a/Configure -+++ b/Configure -@@ -4689,7 +4689,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4729,7 +4729,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5455,13 +5455,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5470,7 +5470,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5588,7 +5588,7 @@ case "$cppflags" in - ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23026,7 +23026,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[4567].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 6341396..701d22d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -85,19 +85,17 @@ my $epoch_is_64 - - for ( @time, @neg_time ) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - SKIP: { - skip '1970 test on VOS fails.', 12 -- if $^O eq 'vos' && $year == 70; -+ if $^O eq 'vos' && $year == 1970; - skip 'this platform does not support negative epochs.', 12 -- if $year < 70 && !$neg_epoch_ok; -+ if $year < 1970 && !$neg_epoch_ok; - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = localtime($time); - -@@ -106,13 +104,12 @@ SKIP: { - is( $h, $hour, "timelocal hour for @$_" ); - is( $D, $mday, "timelocal day for @$_" ); - is( $M, $mon, "timelocal month for @$_" ); -- is( $Y, $year, "timelocal year for @$_" ); -+ is( $Y, $year - 1900, "timelocal year for @$_" ); - } - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = gmtime($time); - -@@ -121,14 +118,13 @@ SKIP: { - is( $h, $hour, "timegm hour for @$_" ); - is( $D, $mday, "timegm day for @$_" ); - is( $M, $mon, "timegm month for @$_" ); -- is( $Y, $year, "timegm year for @$_" ); -+ is( $Y, $year - 1900, "timegm year for @$_" ); - } - } - } - - for (@bad_time) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) }; -@@ -229,6 +225,30 @@ SKIP: - ); - } - -+# 2-digit years -+{ -+ my $current_year = ( localtime() )[5]; -+ my $pre_break = ( $current_year + 49 ) - 100; -+ my $break = ( $current_year + 50 ) - 100; -+ my $post_break = ( $current_year + 51 ) - 100; -+ -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $pre_break ) ) )[5] ), -+ $pre_break + 100, -+ "year $pre_break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $break ) ) )[5] ), -+ $break + 100, -+ "year $break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $post_break ) ) )[5] ), -+ $post_break, -+ "year $post_break is treated as current century", -+ ); -+} -+ - SKIP: - { - skip 'These tests only run for the package maintainer.', 8 -diff --git a/hints/linux.sh b/hints/linux.sh -index a985a8e..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi diff --git a/eol/5.028.003-main,threaded-buster/Dockerfile b/eol/5.028.003-main,threaded-buster/Dockerfile deleted file mode 100644 index 7215777..0000000 --- a/eol/5.028.003-main,threaded-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.28.3.tar.xz -o perl-5.28.3.tar.xz \ - && echo '77dc1ddf541643af14d585867d3d0741cce45d0dbe8f1467024e63165d9e2fc5 *perl-5.28.3.tar.xz' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.28.3.tar.xz -C /usr/src/perl \ - && rm perl-5.28.3.tar.xz \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && TEST_JOBS=$(nproc) make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.28.3","-de0"] diff --git a/eol/5.028.003-main,threaded-buster/rt-perl-133295.patch b/eol/5.028.003-main,threaded-buster/rt-perl-133295.patch deleted file mode 100644 index f796373..0000000 --- a/eol/5.028.003-main,threaded-buster/rt-perl-133295.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0d9e812de5885109532ec8bf484f165213ab97cb Mon Sep 17 00:00:00 2001 -From: David Mitchell -Date: Fri, 14 Dec 2018 16:54:42 +0000 -Subject: [PATCH] ext/GDBM_File/t/fatal.t: handle non-fatality - -This script is supposed to exercise the error handling callback -mechanism in gdbm, by triggering an error by surreptitiously closing -the file handle which gdbm has opened. - -However, this doesn't trigger an error in newer releases of the gdbm -library, which uses mmap() rather than write() etc. In fact I can't see -any way of triggering an error: so just skip the relevant tests if we -can't trigger a failure. ---- - ext/GDBM_File/t/fatal.t | 35 ++++++++++++++++++++++++++--------- - 1 file changed, 26 insertions(+), 9 deletions(-) - -diff --git a/ext/GDBM_File/t/fatal.t b/ext/GDBM_File/t/fatal.t -index 3ba66be598c..159916901a9 100644 ---- a/ext/GDBM_File/t/fatal.t -+++ b/ext/GDBM_File/t/fatal.t -@@ -1,4 +1,12 @@ - #!./perl -w -+# -+# Exercise the error handling callback mechanism in gdbm. -+# -+# Try to trigger an error by surreptitiously closing the file handle which -+# gdbm has opened. Note that this won't trigger an error in newer -+# releases of the gdbm library, which uses mmap() rather than write() etc: -+# so skip in that case. -+ - use strict; - - use Test::More; -@@ -34,16 +42,25 @@ isnt((open $fh, "<&=$fileno"), undef, "dup fileno $fileno") - or diag("\$! = $!"); - isnt(close $fh, undef, - "close fileno $fileno, out from underneath the GDBM_File"); --is(eval { -+ -+# store some data to a closed file handle -+ -+my $res = eval { - $h{Perl} = 'Rules'; - untie %h; -- 1; --}, undef, 'Trapped error when attempting to write to knobbled GDBM_File'); -- --# Observed "File write error" and "lseek error" from two different systems. --# So there might be more variants. Important part was that we trapped the error --# via croak. --like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -- 'expected error message from GDBM_File'); -+ 99; -+}; -+ -+SKIP: { -+ skip "Can't tigger failure", 2 if $res == 99; -+ -+ is $res, undef, "eval should return undef"; -+ -+ # Observed "File write error" and "lseek error" from two different -+ # systems. So there might be more variants. Important part was that -+ # we trapped the error # via croak. -+ like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -+ 'expected error message from GDBM_File'); -+} - - unlink ; diff --git a/eol/5.028.003-main-buster/DevelPatchPerl.patch b/eol/5.028.003-main-buster/DevelPatchPerl.patch deleted file mode 100644 index c72bc46..0000000 --- a/eol/5.028.003-main-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,178 +0,0 @@ -diff --git a/Configure b/Configure -index f99377e..e020242 100755 ---- a/Configure -+++ b/Configure -@@ -4689,7 +4689,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4729,7 +4729,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5455,13 +5455,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5470,7 +5470,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5588,7 +5588,7 @@ case "$cppflags" in - ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23026,7 +23026,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[4567].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 6341396..701d22d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -85,19 +85,17 @@ my $epoch_is_64 - - for ( @time, @neg_time ) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - SKIP: { - skip '1970 test on VOS fails.', 12 -- if $^O eq 'vos' && $year == 70; -+ if $^O eq 'vos' && $year == 1970; - skip 'this platform does not support negative epochs.', 12 -- if $year < 70 && !$neg_epoch_ok; -+ if $year < 1970 && !$neg_epoch_ok; - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = localtime($time); - -@@ -106,13 +104,12 @@ SKIP: { - is( $h, $hour, "timelocal hour for @$_" ); - is( $D, $mday, "timelocal day for @$_" ); - is( $M, $mon, "timelocal month for @$_" ); -- is( $Y, $year, "timelocal year for @$_" ); -+ is( $Y, $year - 1900, "timelocal year for @$_" ); - } - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = gmtime($time); - -@@ -121,14 +118,13 @@ SKIP: { - is( $h, $hour, "timegm hour for @$_" ); - is( $D, $mday, "timegm day for @$_" ); - is( $M, $mon, "timegm month for @$_" ); -- is( $Y, $year, "timegm year for @$_" ); -+ is( $Y, $year - 1900, "timegm year for @$_" ); - } - } - } - - for (@bad_time) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) }; -@@ -229,6 +225,30 @@ SKIP: - ); - } - -+# 2-digit years -+{ -+ my $current_year = ( localtime() )[5]; -+ my $pre_break = ( $current_year + 49 ) - 100; -+ my $break = ( $current_year + 50 ) - 100; -+ my $post_break = ( $current_year + 51 ) - 100; -+ -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $pre_break ) ) )[5] ), -+ $pre_break + 100, -+ "year $pre_break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $break ) ) )[5] ), -+ $break + 100, -+ "year $break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $post_break ) ) )[5] ), -+ $post_break, -+ "year $post_break is treated as current century", -+ ); -+} -+ - SKIP: - { - skip 'These tests only run for the package maintainer.', 8 -diff --git a/hints/linux.sh b/hints/linux.sh -index a985a8e..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi diff --git a/eol/5.028.003-main-buster/Dockerfile b/eol/5.028.003-main-buster/Dockerfile deleted file mode 100644 index adc9149..0000000 --- a/eol/5.028.003-main-buster/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM buildpack-deps:buster -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN true \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.28.3.tar.xz -o perl-5.28.3.tar.xz \ - && echo '77dc1ddf541643af14d585867d3d0741cce45d0dbe8f1467024e63165d9e2fc5 *perl-5.28.3.tar.xz' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.28.3.tar.xz -C /usr/src/perl \ - && rm perl-5.28.3.tar.xz \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && TEST_JOBS=$(nproc) make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && true \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.28.3","-de0"] diff --git a/eol/5.028.003-main-buster/rt-perl-133295.patch b/eol/5.028.003-main-buster/rt-perl-133295.patch deleted file mode 100644 index f796373..0000000 --- a/eol/5.028.003-main-buster/rt-perl-133295.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0d9e812de5885109532ec8bf484f165213ab97cb Mon Sep 17 00:00:00 2001 -From: David Mitchell -Date: Fri, 14 Dec 2018 16:54:42 +0000 -Subject: [PATCH] ext/GDBM_File/t/fatal.t: handle non-fatality - -This script is supposed to exercise the error handling callback -mechanism in gdbm, by triggering an error by surreptitiously closing -the file handle which gdbm has opened. - -However, this doesn't trigger an error in newer releases of the gdbm -library, which uses mmap() rather than write() etc. In fact I can't see -any way of triggering an error: so just skip the relevant tests if we -can't trigger a failure. ---- - ext/GDBM_File/t/fatal.t | 35 ++++++++++++++++++++++++++--------- - 1 file changed, 26 insertions(+), 9 deletions(-) - -diff --git a/ext/GDBM_File/t/fatal.t b/ext/GDBM_File/t/fatal.t -index 3ba66be598c..159916901a9 100644 ---- a/ext/GDBM_File/t/fatal.t -+++ b/ext/GDBM_File/t/fatal.t -@@ -1,4 +1,12 @@ - #!./perl -w -+# -+# Exercise the error handling callback mechanism in gdbm. -+# -+# Try to trigger an error by surreptitiously closing the file handle which -+# gdbm has opened. Note that this won't trigger an error in newer -+# releases of the gdbm library, which uses mmap() rather than write() etc: -+# so skip in that case. -+ - use strict; - - use Test::More; -@@ -34,16 +42,25 @@ isnt((open $fh, "<&=$fileno"), undef, "dup fileno $fileno") - or diag("\$! = $!"); - isnt(close $fh, undef, - "close fileno $fileno, out from underneath the GDBM_File"); --is(eval { -+ -+# store some data to a closed file handle -+ -+my $res = eval { - $h{Perl} = 'Rules'; - untie %h; -- 1; --}, undef, 'Trapped error when attempting to write to knobbled GDBM_File'); -- --# Observed "File write error" and "lseek error" from two different systems. --# So there might be more variants. Important part was that we trapped the error --# via croak. --like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -- 'expected error message from GDBM_File'); -+ 99; -+}; -+ -+SKIP: { -+ skip "Can't tigger failure", 2 if $res == 99; -+ -+ is $res, undef, "eval should return undef"; -+ -+ # Observed "File write error" and "lseek error" from two different -+ # systems. So there might be more variants. Important part was that -+ # we trapped the error # via croak. -+ like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -+ 'expected error message from GDBM_File'); -+} - - unlink ; diff --git a/eol/5.028.003-slim,threaded-buster/DevelPatchPerl.patch b/eol/5.028.003-slim,threaded-buster/DevelPatchPerl.patch deleted file mode 100644 index c72bc46..0000000 --- a/eol/5.028.003-slim,threaded-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,178 +0,0 @@ -diff --git a/Configure b/Configure -index f99377e..e020242 100755 ---- a/Configure -+++ b/Configure -@@ -4689,7 +4689,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4729,7 +4729,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5455,13 +5455,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5470,7 +5470,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5588,7 +5588,7 @@ case "$cppflags" in - ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23026,7 +23026,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[4567].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 6341396..701d22d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -85,19 +85,17 @@ my $epoch_is_64 - - for ( @time, @neg_time ) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - SKIP: { - skip '1970 test on VOS fails.', 12 -- if $^O eq 'vos' && $year == 70; -+ if $^O eq 'vos' && $year == 1970; - skip 'this platform does not support negative epochs.', 12 -- if $year < 70 && !$neg_epoch_ok; -+ if $year < 1970 && !$neg_epoch_ok; - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = localtime($time); - -@@ -106,13 +104,12 @@ SKIP: { - is( $h, $hour, "timelocal hour for @$_" ); - is( $D, $mday, "timelocal day for @$_" ); - is( $M, $mon, "timelocal month for @$_" ); -- is( $Y, $year, "timelocal year for @$_" ); -+ is( $Y, $year - 1900, "timelocal year for @$_" ); - } - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = gmtime($time); - -@@ -121,14 +118,13 @@ SKIP: { - is( $h, $hour, "timegm hour for @$_" ); - is( $D, $mday, "timegm day for @$_" ); - is( $M, $mon, "timegm month for @$_" ); -- is( $Y, $year, "timegm year for @$_" ); -+ is( $Y, $year - 1900, "timegm year for @$_" ); - } - } - } - - for (@bad_time) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) }; -@@ -229,6 +225,30 @@ SKIP: - ); - } - -+# 2-digit years -+{ -+ my $current_year = ( localtime() )[5]; -+ my $pre_break = ( $current_year + 49 ) - 100; -+ my $break = ( $current_year + 50 ) - 100; -+ my $post_break = ( $current_year + 51 ) - 100; -+ -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $pre_break ) ) )[5] ), -+ $pre_break + 100, -+ "year $pre_break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $break ) ) )[5] ), -+ $break + 100, -+ "year $break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $post_break ) ) )[5] ), -+ $post_break, -+ "year $post_break is treated as current century", -+ ); -+} -+ - SKIP: - { - skip 'These tests only run for the package maintainer.', 8 -diff --git a/hints/linux.sh b/hints/linux.sh -index a985a8e..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi diff --git a/eol/5.028.003-slim,threaded-buster/Dockerfile b/eol/5.028.003-slim,threaded-buster/Dockerfile deleted file mode 100644 index d1b9276..0000000 --- a/eol/5.028.003-slim,threaded-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.28.3.tar.xz -o perl-5.28.3.tar.xz \ - && echo '77dc1ddf541643af14d585867d3d0741cce45d0dbe8f1467024e63165d9e2fc5 *perl-5.28.3.tar.xz' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.28.3.tar.xz -C /usr/src/perl \ - && rm perl-5.28.3.tar.xz \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && TEST_JOBS=$(nproc) make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.28.3","-de0"] diff --git a/eol/5.028.003-slim,threaded-buster/rt-perl-133295.patch b/eol/5.028.003-slim,threaded-buster/rt-perl-133295.patch deleted file mode 100644 index f796373..0000000 --- a/eol/5.028.003-slim,threaded-buster/rt-perl-133295.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0d9e812de5885109532ec8bf484f165213ab97cb Mon Sep 17 00:00:00 2001 -From: David Mitchell -Date: Fri, 14 Dec 2018 16:54:42 +0000 -Subject: [PATCH] ext/GDBM_File/t/fatal.t: handle non-fatality - -This script is supposed to exercise the error handling callback -mechanism in gdbm, by triggering an error by surreptitiously closing -the file handle which gdbm has opened. - -However, this doesn't trigger an error in newer releases of the gdbm -library, which uses mmap() rather than write() etc. In fact I can't see -any way of triggering an error: so just skip the relevant tests if we -can't trigger a failure. ---- - ext/GDBM_File/t/fatal.t | 35 ++++++++++++++++++++++++++--------- - 1 file changed, 26 insertions(+), 9 deletions(-) - -diff --git a/ext/GDBM_File/t/fatal.t b/ext/GDBM_File/t/fatal.t -index 3ba66be598c..159916901a9 100644 ---- a/ext/GDBM_File/t/fatal.t -+++ b/ext/GDBM_File/t/fatal.t -@@ -1,4 +1,12 @@ - #!./perl -w -+# -+# Exercise the error handling callback mechanism in gdbm. -+# -+# Try to trigger an error by surreptitiously closing the file handle which -+# gdbm has opened. Note that this won't trigger an error in newer -+# releases of the gdbm library, which uses mmap() rather than write() etc: -+# so skip in that case. -+ - use strict; - - use Test::More; -@@ -34,16 +42,25 @@ isnt((open $fh, "<&=$fileno"), undef, "dup fileno $fileno") - or diag("\$! = $!"); - isnt(close $fh, undef, - "close fileno $fileno, out from underneath the GDBM_File"); --is(eval { -+ -+# store some data to a closed file handle -+ -+my $res = eval { - $h{Perl} = 'Rules'; - untie %h; -- 1; --}, undef, 'Trapped error when attempting to write to knobbled GDBM_File'); -- --# Observed "File write error" and "lseek error" from two different systems. --# So there might be more variants. Important part was that we trapped the error --# via croak. --like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -- 'expected error message from GDBM_File'); -+ 99; -+}; -+ -+SKIP: { -+ skip "Can't tigger failure", 2 if $res == 99; -+ -+ is $res, undef, "eval should return undef"; -+ -+ # Observed "File write error" and "lseek error" from two different -+ # systems. So there might be more variants. Important part was that -+ # we trapped the error # via croak. -+ like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -+ 'expected error message from GDBM_File'); -+} - - unlink ; diff --git a/eol/5.028.003-slim-buster/DevelPatchPerl.patch b/eol/5.028.003-slim-buster/DevelPatchPerl.patch deleted file mode 100644 index c72bc46..0000000 --- a/eol/5.028.003-slim-buster/DevelPatchPerl.patch +++ /dev/null @@ -1,178 +0,0 @@ -diff --git a/Configure b/Configure -index f99377e..e020242 100755 ---- a/Configure -+++ b/Configure -@@ -4689,7 +4689,7 @@ else - fi - $rm -f try try.* - case "$gccversion" in --1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - case "$gccversion" in - '') gccosandvers='' ;; -@@ -4729,7 +4729,7 @@ esac - # gcc 3.* complain about adding -Idirectories that they already know about, - # so we will take those off from locincpth. - case "$gccversion" in --3*) -+3.*) - echo "main(){}">try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ -@@ -5455,13 +5455,13 @@ fi - case "$hint" in - default|recommended) - case "$gccversion" in -- 1*) dflt="$dflt -fpcc-struct-return" ;; -+ 1.*) dflt="$dflt -fpcc-struct-return" ;; - esac - case "$optimize:$DEBUGGING" in - *-g*:old) dflt="$dflt -DDEBUGGING";; - esac - case "$gccversion" in -- 2*) if $test -d /etc/conf/kconfig.d && -+ 2.*) if $test -d /etc/conf/kconfig.d && - $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 - then - # Interactive Systems (ISC) POSIX mode. -@@ -5470,7 +5470,7 @@ default|recommended) - ;; - esac - case "$gccversion" in -- 1*) ;; -+ 1.*) ;; - 2.[0-8]*) ;; - ?*) set strict-aliasing -fno-strict-aliasing - eval $checkccflag -@@ -5588,7 +5588,7 @@ case "$cppflags" in - ;; - esac - case "$gccversion" in --1*) cppflags="$cppflags -D__GNUC__" -+1.*) cppflags="$cppflags -D__GNUC__" - esac - case "$mips_type" in - '');; -@@ -23026,7 +23026,7 @@ fi - - : add -D_FORTIFY_SOURCE if feasible and not already there - case "$gccversion" in --[4567].*) case "$optimize$ccflags" in -+[456789].*|[1-9][0-9]*) case "$optimize$ccflags" in - *-O*) case "$ccflags$cppsymbols" in - *_FORTIFY_SOURCE=*) # Don't add it again. - echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4 -diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t -index 6341396..701d22d 100644 ---- a/cpan/Time-Local/t/Local.t -+++ b/cpan/Time-Local/t/Local.t -@@ -85,19 +85,17 @@ my $epoch_is_64 - - for ( @time, @neg_time ) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - SKIP: { - skip '1970 test on VOS fails.', 12 -- if $^O eq 'vos' && $year == 70; -+ if $^O eq 'vos' && $year == 1970; - skip 'this platform does not support negative epochs.', 12 -- if $year < 70 && !$neg_epoch_ok; -+ if $year < 1970 && !$neg_epoch_ok; - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = localtime($time); - -@@ -106,13 +104,12 @@ SKIP: { - is( $h, $hour, "timelocal hour for @$_" ); - is( $D, $mday, "timelocal day for @$_" ); - is( $M, $mon, "timelocal month for @$_" ); -- is( $Y, $year, "timelocal year for @$_" ); -+ is( $Y, $year - 1900, "timelocal year for @$_" ); - } - - # 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 ); - - my ( $s, $m, $h, $D, $M, $Y ) = gmtime($time); - -@@ -121,14 +118,13 @@ SKIP: { - is( $h, $hour, "timegm hour for @$_" ); - is( $D, $mday, "timegm day for @$_" ); - is( $M, $mon, "timegm month for @$_" ); -- is( $Y, $year, "timegm year for @$_" ); -+ is( $Y, $year - 1900, "timegm year for @$_" ); - } - } - } - - for (@bad_time) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; -- $year -= 1900; - $mon--; - - eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) }; -@@ -229,6 +225,30 @@ SKIP: - ); - } - -+# 2-digit years -+{ -+ my $current_year = ( localtime() )[5]; -+ my $pre_break = ( $current_year + 49 ) - 100; -+ my $break = ( $current_year + 50 ) - 100; -+ my $post_break = ( $current_year + 51 ) - 100; -+ -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $pre_break ) ) )[5] ), -+ $pre_break + 100, -+ "year $pre_break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $break ) ) )[5] ), -+ $break + 100, -+ "year $break is treated as next century", -+ ); -+ is( -+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $post_break ) ) )[5] ), -+ $post_break, -+ "year $post_break is treated as current century", -+ ); -+} -+ - SKIP: - { - skip 'These tests only run for the package maintainer.', 8 -diff --git a/hints/linux.sh b/hints/linux.sh -index a985a8e..c749f0f 100644 ---- a/hints/linux.sh -+++ b/hints/linux.sh -@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}" - - # Check if we're about to use Intel's ICC compiler - case "`${cc:-cc} -V 2>&1`" in --*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*) -+*"Intel(R) C"*" Compiler"*) - # record the version, formats: - # icc (ICC) 10.1 20080801 - # icpc (ICC) 10.1 20080801 -@@ -165,6 +165,9 @@ esac - # plibpth to bypass this check. - if [ -x /usr/bin/gcc ] ; then - gcc=/usr/bin/gcc -+# clang also provides -print-search-dirs -+elif ${cc:-cc} --version 2>/dev/null | grep -q '^clang ' ; then -+ gcc=${cc:-cc} - else - gcc=gcc - fi diff --git a/eol/5.028.003-slim-buster/Dockerfile b/eol/5.028.003-slim-buster/Dockerfile deleted file mode 100644 index a8b5350..0000000 --- a/eol/5.028.003-slim-buster/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM debian:buster-slim -LABEL maintainer="Peter Martini , Zak B. Elep " - -COPY *.patch /usr/src/perl/ -WORKDIR /usr/src/perl - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - bzip2 \ - ca-certificates \ - # cpio \ - curl \ - dpkg-dev \ - # file \ - gcc \ - # g++ \ - # libbz2-dev \ - # libdb-dev \ - libc6-dev \ - # libgdbm-dev \ - # liblzma-dev \ - make \ - netbase \ - patch \ - # procps \ - # zlib1g-dev \ - xz-utils \ - && curl -SL https://www.cpan.org/src/5.0/perl-5.28.3.tar.xz -o perl-5.28.3.tar.xz \ - && echo '77dc1ddf541643af14d585867d3d0741cce45d0dbe8f1467024e63165d9e2fc5 *perl-5.28.3.tar.xz' | sha256sum -c - \ - && tar --strip-components=1 -xaf perl-5.28.3.tar.xz -C /usr/src/perl \ - && rm perl-5.28.3.tar.xz \ - && cat *.patch | patch -p1 \ - && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ - && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ - && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ - && ./Configure -Darchname="$gnuArch" "$archFlag" -Duseshrplib -Dvendorprefix=/usr/local -des \ - && make -j$(nproc) \ - && TEST_JOBS=$(nproc) make test_harness \ - && make install \ - && cd /usr/src \ - && curl -LO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz \ - && echo '9b60767fe40752ef7a9d3f13f19060a63389a5c23acc3e9827e19b75500f81f3 *App-cpanminus-1.7044.tar.gz' | sha256sum -c - \ - && tar -xzf App-cpanminus-1.7044.tar.gz && cd App-cpanminus-1.7044 && perl bin/cpanm . && cd /root \ - && savedPackages="make netbase" \ - && apt-mark auto '.*' > /dev/null \ - && apt-mark manual $savedPackages \ - && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \ - && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7044* /tmp/* - -WORKDIR / - -CMD ["perl5.28.3","-de0"] diff --git a/eol/5.028.003-slim-buster/rt-perl-133295.patch b/eol/5.028.003-slim-buster/rt-perl-133295.patch deleted file mode 100644 index f796373..0000000 --- a/eol/5.028.003-slim-buster/rt-perl-133295.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0d9e812de5885109532ec8bf484f165213ab97cb Mon Sep 17 00:00:00 2001 -From: David Mitchell -Date: Fri, 14 Dec 2018 16:54:42 +0000 -Subject: [PATCH] ext/GDBM_File/t/fatal.t: handle non-fatality - -This script is supposed to exercise the error handling callback -mechanism in gdbm, by triggering an error by surreptitiously closing -the file handle which gdbm has opened. - -However, this doesn't trigger an error in newer releases of the gdbm -library, which uses mmap() rather than write() etc. In fact I can't see -any way of triggering an error: so just skip the relevant tests if we -can't trigger a failure. ---- - ext/GDBM_File/t/fatal.t | 35 ++++++++++++++++++++++++++--------- - 1 file changed, 26 insertions(+), 9 deletions(-) - -diff --git a/ext/GDBM_File/t/fatal.t b/ext/GDBM_File/t/fatal.t -index 3ba66be598c..159916901a9 100644 ---- a/ext/GDBM_File/t/fatal.t -+++ b/ext/GDBM_File/t/fatal.t -@@ -1,4 +1,12 @@ - #!./perl -w -+# -+# Exercise the error handling callback mechanism in gdbm. -+# -+# Try to trigger an error by surreptitiously closing the file handle which -+# gdbm has opened. Note that this won't trigger an error in newer -+# releases of the gdbm library, which uses mmap() rather than write() etc: -+# so skip in that case. -+ - use strict; - - use Test::More; -@@ -34,16 +42,25 @@ isnt((open $fh, "<&=$fileno"), undef, "dup fileno $fileno") - or diag("\$! = $!"); - isnt(close $fh, undef, - "close fileno $fileno, out from underneath the GDBM_File"); --is(eval { -+ -+# store some data to a closed file handle -+ -+my $res = eval { - $h{Perl} = 'Rules'; - untie %h; -- 1; --}, undef, 'Trapped error when attempting to write to knobbled GDBM_File'); -- --# Observed "File write error" and "lseek error" from two different systems. --# So there might be more variants. Important part was that we trapped the error --# via croak. --like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -- 'expected error message from GDBM_File'); -+ 99; -+}; -+ -+SKIP: { -+ skip "Can't tigger failure", 2 if $res == 99; -+ -+ is $res, undef, "eval should return undef"; -+ -+ # Observed "File write error" and "lseek error" from two different -+ # systems. So there might be more variants. Important part was that -+ # we trapped the error # via croak. -+ like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, -+ 'expected error message from GDBM_File'); -+} - - unlink ; diff --git a/eol/config.yml b/eol/config.yml deleted file mode 100644 index b40842a..0000000 --- a/eol/config.yml +++ /dev/null @@ -1,91 +0,0 @@ ---- -builds: - - main - - slim - -options: - common: "-Duseshrplib -Dvendorprefix=/usr/local" - threaded: "-Dusethreads" - -releases: - - version: 5.8.9 - sha256: 1097fbcd48ceccb2bc735d119c9db399a02a8ab9f7dc53e29e47e6a8d0d72e79 - extra_flags: "-A ccflags=-fwrapv" - run_tests: serial - debian_release: - - stretch - - buster - - - version: 5.10.1 - sha256: 9385f2c8c2ca8b1dc4a7c31903f1f8dc8f2ba867dc2a9e5c93012ed6b564e826 - extra_flags: "-A ccflags=-fwrapv" - run_tests: no - debian_release: - - stretch - - buster - - - version: 5.12.5 - sha256: 10749417fd3010aae320a34181ad4cd6a4855c1fc63403b87fa4d630b18e966c - extra_flags: "-A ccflags=-fwrapv" - run_tests: serial - debian_release: - - stretch - - buster - - - version: 5.14.4 - sha256: eece8c2b0d491bf6f746bd1f4f1bb7ce26f6b98e91c54690c617d7af38964745 - extra_flags: "-A ccflags=-fwrapv" - run_tests: no - debian_release: - - stretch - - buster - - - version: 5.16.3 - sha256: bb7bc735e6813b177dcfccd480defcde7eddefa173b5967eac11babd1bfa98e8 - extra_flags: "-A ccflags=-fwrapv" - run_tests: no - debian_release: - - stretch - - buster - - - version: 5.18.4 - sha256: 1fb4d27b75cd244e849f253320260efe1750641aaff4a18ce0d67556ff1b96a5 - extra_flags: "-A ccflags=-fwrapv" - run_tests: no # buster: Failed test 'Trapped error when attempting to write to knobbled GDBM_File' - debian_release: - - stretch - - buster - - - version: 5.20.3 - sha256: 1b40068166c242e34a536836286e70b78410602a80615143301e52aa2901493b - run_tests: no # buster: Failed test 'Trapped error when attempting to write to knobbled GDBM_File' - debian_release: - - stretch - - buster - - - version: 5.22.4 - sha256: 8b3122046d1186598082d0e6da53193b045e85e3505e7d37ee0bdd0bdb539b71 - run_tests: no # buster: Failed test 'Trapped error when attempting to write to knobbled GDBM_File' - debian_release: - - stretch - - buster - - - version: 5.24.4 - sha256: e34ff38c54857f431f37403b757267c9998152bf46b5c750b462f62461279b10 - run_tests: no # buster: Failed test 'Trapped error when attempting to write to knobbled GDBM_File' - debian_release: - - stretch - - buster - - - version: 5.26.3 - sha256: 9ff35a613213f29ab53975141af6825ae7d4408895538cac0922e47ab92a1477 - debian_release: - - stretch - - buster - - - version: 5.28.3 - sha256: 77dc1ddf541643af14d585867d3d0741cce45d0dbe8f1467024e63165d9e2fc5 - type: xz - debian_release: - - stretch - - buster diff --git a/eol/downloads b/eol/downloads deleted file mode 120000 index e1767d8..0000000 --- a/eol/downloads +++ /dev/null @@ -1 +0,0 @@ -../downloads \ No newline at end of file