On Wed, Sep 14, 2022 at 6:47 AM Tom Lane <t...@sss.pgh.pa.us> wrote: > > I've just switched longfin to use built-from-source perl 5.14.0.
In that case, here is a quick update with commit message. Not yet any change for MSVC, but I can put together something later. Since we're much less willing to support older Windows and Visual Studio versions, maybe it's low-enough risk defer the check to the Meson conversion? I understand our MSVC process will then go away much more quickly than autoconf... -- John Naylor EDB: http://www.enterprisedb.com
From d8e241968395c552d667c1eb393cbaea12f0df6c Mon Sep 17 00:00:00 2001 From: John Naylor <john.nay...@postgresql.org> Date: Wed, 14 Sep 2022 09:58:13 +0700 Subject: [PATCH v2] Bump minimum Perl version to 5.14 The oldest vendor-shipped Perl in the buildfarm is 5.14.2, which is the last version that Debian Wheezy shipped. That OS is EOL, but we keep it running because there is no other convenient way to test certain non-mainstream 32-bit platforms. There is no bugfix in the .2 release that is required, and yet it's also not the latest minor release -- that would be 5.14.4. To clarify the situation, we also have arranged the buildfarm to test 5.14.0. That allows configure scripts and documentation to state 5.14 without fine print. Discussion: https://www.postgresql.org/message-id/20220902181553.ev4pgzhubhdkg...@awork3.anarazel.de --- config/perl.m4 | 4 ++-- configure | 6 +++--- doc/src/sgml/install-windows.sgml | 2 +- doc/src/sgml/installation.sgml | 4 ++-- src/pl/plperl/plc_perlboot.pl | 1 - src/test/perl/PostgreSQL/Test/Cluster.pm | 2 +- src/test/perl/README | 10 +++------- src/tools/msvc/gendef.pl | 1 - src/tools/pgindent/pgindent | 1 - 9 files changed, 12 insertions(+), 19 deletions(-) diff --git a/config/perl.m4 b/config/perl.m4 index c9fd91397c..8126e79f67 100644 --- a/config/perl.m4 +++ b/config/perl.m4 @@ -11,11 +11,11 @@ if test "$PERL"; then pgac_perl_version=`$PERL -v 2>/dev/null | sed -n ['s/This is perl.*v[a-z ]*\([0-9]\.[0-9][0-9.]*\).*$/\1/p']` AC_MSG_NOTICE([using perl $pgac_perl_version]) if echo "$pgac_perl_version" | sed ['s/[.a-z_]/ /g'] | \ - $AWK '{ if ([$]1 == 5 && ([$]2 > 8 || ($[2] == 8 && [$]3 >= 3))) exit 1; else exit 0;}' + $AWK '{ if ([$]1 == 5 && ([$]2 >= 14)) exit 1; else exit 0;}' then AC_MSG_WARN([ *** The installed version of Perl, $PERL, is too old to use with PostgreSQL. -*** Perl version 5.8.3 or later is required, but this is $pgac_perl_version.]) +*** Perl version 5.14 or later is required, but this is $pgac_perl_version.]) PERL="" fi fi diff --git a/configure b/configure index fd2a782454..f325bd85b8 100755 --- a/configure +++ b/configure @@ -10491,14 +10491,14 @@ if test "$PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: using perl $pgac_perl_version" >&5 $as_echo "$as_me: using perl $pgac_perl_version" >&6;} if echo "$pgac_perl_version" | sed 's/[.a-z_]/ /g' | \ - $AWK '{ if ($1 == 5 && ($2 > 8 || ($2 == 8 && $3 >= 3))) exit 1; else exit 0;}' + $AWK '{ if ($1 == 5 && ($2 >= 14)) exit 1; else exit 0;}' then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** The installed version of Perl, $PERL, is too old to use with PostgreSQL. -*** Perl version 5.8.3 or later is required, but this is $pgac_perl_version." >&5 +*** Perl version 5.14 or later is required, but this is $pgac_perl_version." >&5 $as_echo "$as_me: WARNING: *** The installed version of Perl, $PERL, is too old to use with PostgreSQL. -*** Perl version 5.8.3 or later is required, but this is $pgac_perl_version." >&2;} +*** Perl version 5.14 or later is required, but this is $pgac_perl_version." >&2;} PERL="" fi fi diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml index c00ab2b4b2..29d3294dc8 100644 --- a/doc/src/sgml/install-windows.sgml +++ b/doc/src/sgml/install-windows.sgml @@ -190,7 +190,7 @@ $ENV{MSBFLAGS}="/m"; or Cygwin Perl will not work. It must also be present in the PATH. Binaries can be downloaded from <ulink url="https://www.activestate.com"></ulink> - (Note: version 5.8.3 or later is required, + (Note: version 5.14 or later is required, the free Standard Distribution is sufficient). </para></listitem> </varlistentry> diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index 7c79608e55..319c7e6966 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -165,7 +165,7 @@ su - postgres <application>PL/Perl</application> you need a full <productname>Perl</productname> installation, including the <filename>libperl</filename> library and the header files. - The minimum required version is <productname>Perl</productname> 5.8.3. + The minimum required version is <productname>Perl</productname> 5.14. Since <application>PL/Perl</application> will be a shared library, the <indexterm><primary>libperl</primary></indexterm> <filename>libperl</filename> library must be a shared library @@ -325,7 +325,7 @@ su - postgres <primary>perl</primary> </indexterm> - <application>Perl</application> 5.8.3 or later is needed to build from a Git checkout, + <application>Perl</application> 5.14 or later is needed to build from a Git checkout, or if you changed the input files for any of the build steps that use Perl scripts. If building on Windows you will need <application>Perl</application> in any case. <application>Perl</application> is diff --git a/src/pl/plperl/plc_perlboot.pl b/src/pl/plperl/plc_perlboot.pl index 8fd7f998bc..72cb53f6e3 100644 --- a/src/pl/plperl/plc_perlboot.pl +++ b/src/pl/plperl/plc_perlboot.pl @@ -6,7 +6,6 @@ use strict; use warnings; -use 5.008001; use vars qw(%_SHARED $_TD); PostgreSQL::InServer::Util::bootstrap(); diff --git a/src/test/perl/PostgreSQL/Test/Cluster.pm b/src/test/perl/PostgreSQL/Test/Cluster.pm index 27fa607da4..4fef9c12e6 100644 --- a/src/test/perl/PostgreSQL/Test/Cluster.pm +++ b/src/test/perl/PostgreSQL/Test/Cluster.pm @@ -2780,7 +2780,7 @@ all values '' if not found. Does not differentiate between null and empty string for fields, no field is ever undef. The restart_lsn and confirmed_flush_lsn fields are returned verbatim, and also -as a 2-list of [highword, lowword] integer. Since we rely on Perl 5.8.8 we can't +as a 2-list of [highword, lowword] integer. Since we rely on Perl 5.14 we can't "use bigint", it's from 5.20, and we can't assume we have Math::Bigint from CPAN either. diff --git a/src/test/perl/README b/src/test/perl/README index 4b160cce36..6ddee42a10 100644 --- a/src/test/perl/README +++ b/src/test/perl/README @@ -78,10 +78,6 @@ Each test script should end with: done_testing(); -Test::More::like entails use of the qr// operator. Avoid Perl 5.8.8 bug -#39185 by not using the "$" regular expression metacharacter in qr// when also -using the "/m" modifier. Instead of "$", use "\n" or "(?=\n|\z)". - Test::Builder::Level controls how far up in the call stack a test will look at when reporting a failure. This should be incremented by any subroutine which directly or indirectly calls test routines from Test::More, such as @@ -103,7 +99,7 @@ Portability ----------- Avoid using any bleeding-edge Perl features. We have buildfarm animals -running Perl versions as old as 5.8.3, so your tests will be expected +running Perl versions as old as 5.14, so your tests will be expected to pass on that. Also, do not use any non-core Perl modules except IPC::Run. Or, if you @@ -116,8 +112,8 @@ One way to test for compatibility with old Perl versions is to use perlbrew; see http://perlbrew.pl . After installing that, do export PERLBREW_CONFIGURE_FLAGS='-de -Duseshrplib' - perlbrew --force install 5.8.3 - perlbrew use 5.8.3 + perlbrew --force install 5.14.0 + perlbrew use 5.14.0 perlbrew install-cpanm cpanm install Test::Simple@0.98 cpanm install IPC::Run@0.79 diff --git a/src/tools/msvc/gendef.pl b/src/tools/msvc/gendef.pl index b8c514a831..b4af3dea81 100644 --- a/src/tools/msvc/gendef.pl +++ b/src/tools/msvc/gendef.pl @@ -3,7 +3,6 @@ use strict; use warnings; -use 5.8.0; use List::Util qw(max); my @def; diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent index 2ef07bb9fd..47d2790ef6 100755 --- a/src/tools/pgindent/pgindent +++ b/src/tools/pgindent/pgindent @@ -4,7 +4,6 @@ use strict; use warnings; -use 5.008001; use Cwd qw(abs_path getcwd); use File::Find; -- 2.36.1