diff --git a/5.028.003-main,threaded-buster/DevelPatchPerl.patch b/5.028.003-main,threaded-buster/DevelPatchPerl.patch new file mode 100644 index 0000000..504674a --- /dev/null +++ b/5.028.003-main,threaded-buster/DevelPatchPerl.patch @@ -0,0 +1,169 @@ +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..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.028.003-main,threaded-buster/Dockerfile b/5.028.003-main,threaded-buster/Dockerfile new file mode 100644 index 0000000..7215777 --- /dev/null +++ b/5.028.003-main,threaded-buster/Dockerfile @@ -0,0 +1,29 @@ +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/5.028.003-main,threaded-stretch/DevelPatchPerl.patch b/5.028.003-main,threaded-stretch/DevelPatchPerl.patch new file mode 100644 index 0000000..504674a --- /dev/null +++ b/5.028.003-main,threaded-stretch/DevelPatchPerl.patch @@ -0,0 +1,169 @@ +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..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.028.003-main,threaded-stretch/Dockerfile b/5.028.003-main,threaded-stretch/Dockerfile new file mode 100644 index 0000000..fd60ed7 --- /dev/null +++ b/5.028.003-main,threaded-stretch/Dockerfile @@ -0,0 +1,29 @@ +FROM buildpack-deps:stretch +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/5.028.003-main-buster/DevelPatchPerl.patch b/5.028.003-main-buster/DevelPatchPerl.patch new file mode 100644 index 0000000..504674a --- /dev/null +++ b/5.028.003-main-buster/DevelPatchPerl.patch @@ -0,0 +1,169 @@ +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..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.028.003-main-buster/Dockerfile b/5.028.003-main-buster/Dockerfile new file mode 100644 index 0000000..adc9149 --- /dev/null +++ b/5.028.003-main-buster/Dockerfile @@ -0,0 +1,29 @@ +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/5.028.003-main-stretch/DevelPatchPerl.patch b/5.028.003-main-stretch/DevelPatchPerl.patch new file mode 100644 index 0000000..504674a --- /dev/null +++ b/5.028.003-main-stretch/DevelPatchPerl.patch @@ -0,0 +1,169 @@ +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..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.028.003-main-stretch/Dockerfile b/5.028.003-main-stretch/Dockerfile new file mode 100644 index 0000000..7685eb9 --- /dev/null +++ b/5.028.003-main-stretch/Dockerfile @@ -0,0 +1,29 @@ +FROM buildpack-deps:stretch +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/5.028.003-slim,threaded-buster/DevelPatchPerl.patch b/5.028.003-slim,threaded-buster/DevelPatchPerl.patch new file mode 100644 index 0000000..504674a --- /dev/null +++ b/5.028.003-slim,threaded-buster/DevelPatchPerl.patch @@ -0,0 +1,169 @@ +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..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.028.003-slim,threaded-buster/Dockerfile b/5.028.003-slim,threaded-buster/Dockerfile new file mode 100644 index 0000000..d1b9276 --- /dev/null +++ b/5.028.003-slim,threaded-buster/Dockerfile @@ -0,0 +1,53 @@ +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/5.028.003-slim,threaded-stretch/DevelPatchPerl.patch b/5.028.003-slim,threaded-stretch/DevelPatchPerl.patch new file mode 100644 index 0000000..504674a --- /dev/null +++ b/5.028.003-slim,threaded-stretch/DevelPatchPerl.patch @@ -0,0 +1,169 @@ +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..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.028.003-slim,threaded-stretch/Dockerfile b/5.028.003-slim,threaded-stretch/Dockerfile new file mode 100644 index 0000000..dc29522 --- /dev/null +++ b/5.028.003-slim,threaded-stretch/Dockerfile @@ -0,0 +1,53 @@ +FROM debian:stretch-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/5.028.003-slim-buster/DevelPatchPerl.patch b/5.028.003-slim-buster/DevelPatchPerl.patch new file mode 100644 index 0000000..504674a --- /dev/null +++ b/5.028.003-slim-buster/DevelPatchPerl.patch @@ -0,0 +1,169 @@ +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..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.028.003-slim-buster/Dockerfile b/5.028.003-slim-buster/Dockerfile new file mode 100644 index 0000000..a8b5350 --- /dev/null +++ b/5.028.003-slim-buster/Dockerfile @@ -0,0 +1,53 @@ +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/5.028.003-slim-stretch/DevelPatchPerl.patch b/5.028.003-slim-stretch/DevelPatchPerl.patch new file mode 100644 index 0000000..504674a --- /dev/null +++ b/5.028.003-slim-stretch/DevelPatchPerl.patch @@ -0,0 +1,169 @@ +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..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.028.003-slim-stretch/Dockerfile b/5.028.003-slim-stretch/Dockerfile new file mode 100644 index 0000000..5a09164 --- /dev/null +++ b/5.028.003-slim-stretch/Dockerfile @@ -0,0 +1,53 @@ +FROM debian:stretch-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/5.030.003-main,threaded-buster/DevelPatchPerl.patch b/5.030.003-main,threaded-buster/DevelPatchPerl.patch new file mode 100644 index 0000000..11fdab0 --- /dev/null +++ b/5.030.003-main,threaded-buster/DevelPatchPerl.patch @@ -0,0 +1,14 @@ +diff --git a/hints/linux.sh b/hints/linux.sh +index a985a8e..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.030.003-main,threaded-buster/Dockerfile b/5.030.003-main,threaded-buster/Dockerfile new file mode 100644 index 0000000..5b0ba1e --- /dev/null +++ b/5.030.003-main,threaded-buster/Dockerfile @@ -0,0 +1,29 @@ +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.30.3.tar.xz -o perl-5.30.3.tar.xz \ + && echo '6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 *perl-5.30.3.tar.xz' | sha256sum -c - \ + && tar --strip-components=1 -xaf perl-5.30.3.tar.xz -C /usr/src/perl \ + && rm perl-5.30.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.30.3","-de0"] diff --git a/5.030.003-main,threaded-stretch/DevelPatchPerl.patch b/5.030.003-main,threaded-stretch/DevelPatchPerl.patch new file mode 100644 index 0000000..11fdab0 --- /dev/null +++ b/5.030.003-main,threaded-stretch/DevelPatchPerl.patch @@ -0,0 +1,14 @@ +diff --git a/hints/linux.sh b/hints/linux.sh +index a985a8e..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.030.003-main,threaded-stretch/Dockerfile b/5.030.003-main,threaded-stretch/Dockerfile new file mode 100644 index 0000000..904f7b8 --- /dev/null +++ b/5.030.003-main,threaded-stretch/Dockerfile @@ -0,0 +1,29 @@ +FROM buildpack-deps:stretch +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.30.3.tar.xz -o perl-5.30.3.tar.xz \ + && echo '6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 *perl-5.30.3.tar.xz' | sha256sum -c - \ + && tar --strip-components=1 -xaf perl-5.30.3.tar.xz -C /usr/src/perl \ + && rm perl-5.30.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.30.3","-de0"] diff --git a/5.030.003-main-buster/DevelPatchPerl.patch b/5.030.003-main-buster/DevelPatchPerl.patch new file mode 100644 index 0000000..11fdab0 --- /dev/null +++ b/5.030.003-main-buster/DevelPatchPerl.patch @@ -0,0 +1,14 @@ +diff --git a/hints/linux.sh b/hints/linux.sh +index a985a8e..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.030.003-main-buster/Dockerfile b/5.030.003-main-buster/Dockerfile new file mode 100644 index 0000000..8cdcd80 --- /dev/null +++ b/5.030.003-main-buster/Dockerfile @@ -0,0 +1,29 @@ +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.30.3.tar.xz -o perl-5.30.3.tar.xz \ + && echo '6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 *perl-5.30.3.tar.xz' | sha256sum -c - \ + && tar --strip-components=1 -xaf perl-5.30.3.tar.xz -C /usr/src/perl \ + && rm perl-5.30.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.30.3","-de0"] diff --git a/5.030.003-main-stretch/DevelPatchPerl.patch b/5.030.003-main-stretch/DevelPatchPerl.patch new file mode 100644 index 0000000..11fdab0 --- /dev/null +++ b/5.030.003-main-stretch/DevelPatchPerl.patch @@ -0,0 +1,14 @@ +diff --git a/hints/linux.sh b/hints/linux.sh +index a985a8e..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.030.003-main-stretch/Dockerfile b/5.030.003-main-stretch/Dockerfile new file mode 100644 index 0000000..d517fa8 --- /dev/null +++ b/5.030.003-main-stretch/Dockerfile @@ -0,0 +1,29 @@ +FROM buildpack-deps:stretch +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.30.3.tar.xz -o perl-5.30.3.tar.xz \ + && echo '6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 *perl-5.30.3.tar.xz' | sha256sum -c - \ + && tar --strip-components=1 -xaf perl-5.30.3.tar.xz -C /usr/src/perl \ + && rm perl-5.30.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.30.3","-de0"] diff --git a/5.030.003-slim,threaded-buster/DevelPatchPerl.patch b/5.030.003-slim,threaded-buster/DevelPatchPerl.patch new file mode 100644 index 0000000..11fdab0 --- /dev/null +++ b/5.030.003-slim,threaded-buster/DevelPatchPerl.patch @@ -0,0 +1,14 @@ +diff --git a/hints/linux.sh b/hints/linux.sh +index a985a8e..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.030.003-slim,threaded-buster/Dockerfile b/5.030.003-slim,threaded-buster/Dockerfile new file mode 100644 index 0000000..05bce10 --- /dev/null +++ b/5.030.003-slim,threaded-buster/Dockerfile @@ -0,0 +1,53 @@ +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.30.3.tar.xz -o perl-5.30.3.tar.xz \ + && echo '6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 *perl-5.30.3.tar.xz' | sha256sum -c - \ + && tar --strip-components=1 -xaf perl-5.30.3.tar.xz -C /usr/src/perl \ + && rm perl-5.30.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.30.3","-de0"] diff --git a/5.030.003-slim,threaded-stretch/DevelPatchPerl.patch b/5.030.003-slim,threaded-stretch/DevelPatchPerl.patch new file mode 100644 index 0000000..11fdab0 --- /dev/null +++ b/5.030.003-slim,threaded-stretch/DevelPatchPerl.patch @@ -0,0 +1,14 @@ +diff --git a/hints/linux.sh b/hints/linux.sh +index a985a8e..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.030.003-slim,threaded-stretch/Dockerfile b/5.030.003-slim,threaded-stretch/Dockerfile new file mode 100644 index 0000000..e3b586d --- /dev/null +++ b/5.030.003-slim,threaded-stretch/Dockerfile @@ -0,0 +1,53 @@ +FROM debian:stretch-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.30.3.tar.xz -o perl-5.30.3.tar.xz \ + && echo '6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 *perl-5.30.3.tar.xz' | sha256sum -c - \ + && tar --strip-components=1 -xaf perl-5.30.3.tar.xz -C /usr/src/perl \ + && rm perl-5.30.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.30.3","-de0"] diff --git a/5.030.003-slim-buster/DevelPatchPerl.patch b/5.030.003-slim-buster/DevelPatchPerl.patch new file mode 100644 index 0000000..11fdab0 --- /dev/null +++ b/5.030.003-slim-buster/DevelPatchPerl.patch @@ -0,0 +1,14 @@ +diff --git a/hints/linux.sh b/hints/linux.sh +index a985a8e..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.030.003-slim-buster/Dockerfile b/5.030.003-slim-buster/Dockerfile new file mode 100644 index 0000000..6d0313a --- /dev/null +++ b/5.030.003-slim-buster/Dockerfile @@ -0,0 +1,53 @@ +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.30.3.tar.xz -o perl-5.30.3.tar.xz \ + && echo '6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 *perl-5.30.3.tar.xz' | sha256sum -c - \ + && tar --strip-components=1 -xaf perl-5.30.3.tar.xz -C /usr/src/perl \ + && rm perl-5.30.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.30.3","-de0"] diff --git a/5.030.003-slim-stretch/DevelPatchPerl.patch b/5.030.003-slim-stretch/DevelPatchPerl.patch new file mode 100644 index 0000000..11fdab0 --- /dev/null +++ b/5.030.003-slim-stretch/DevelPatchPerl.patch @@ -0,0 +1,14 @@ +diff --git a/hints/linux.sh b/hints/linux.sh +index a985a8e..8cbe7dc 100644 +--- a/hints/linux.sh ++++ b/hints/linux.sh +@@ -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/5.030.003-slim-stretch/Dockerfile b/5.030.003-slim-stretch/Dockerfile new file mode 100644 index 0000000..8466c56 --- /dev/null +++ b/5.030.003-slim-stretch/Dockerfile @@ -0,0 +1,53 @@ +FROM debian:stretch-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.30.3.tar.xz -o perl-5.30.3.tar.xz \ + && echo '6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 *perl-5.30.3.tar.xz' | sha256sum -c - \ + && tar --strip-components=1 -xaf perl-5.30.3.tar.xz -C /usr/src/perl \ + && rm perl-5.30.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.30.3","-de0"]