Bump minimum Perl version to 5.14
authorJohn Naylor <[email protected]>
Wed, 14 Sep 2022 02:58:13 +0000 (09:58 +0700)
committerJohn Naylor <[email protected]>
Wed, 14 Sep 2022 05:37:04 +0000 (12:37 +0700)
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 5.14.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 have thus arranged the
buildfarm to test 5.14.0. That allows configure scripts and documentation
to state 5.14 without fine print.

The MSVC build didn't check the version, since our previous minimum 5.8.3
was considered too old to check for on Windows. We will need a check for
Windows sometime during the v16 cycle, but that could be rendered moot
by the impending Meson conversion, so it seems safe to just document
the requirement for now.

Reviewed by Tom Lane
Discussion: https://www.postgresql.org/message-id/20220902181553[email protected]

config/perl.m4
configure
doc/src/sgml/install-windows.sgml
doc/src/sgml/installation.sgml
src/pl/plperl/plc_perlboot.pl
src/test/perl/PostgreSQL/Test/Cluster.pm
src/test/perl/README
src/tools/msvc/gendef.pl
src/tools/pgindent/pgindent

index c9fd91397c22a6007c362d91e822b48abb5b2a1f..8126e79f67dcb27103dd829b64c56e764dd0b20b 100644 (file)
@@ -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
index fd2a782454ba8ffc2ce7879bb144985e0acfaa2b..f325bd85b88c73809dc2714dd77c18b27cac9aa5 100755 (executable)
--- 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
index c00ab2b4b2dec83b3aedd38e83055d3d06e4b44b..29d3294dc80a75ded89f4cd8c6f8267d86d421ea 100644 (file)
@@ -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>
index 7c79608e5517d6c9448015c6a05a68700a820477..319c7e69660e1e38fd0305b50a9018691fb6a1aa 100644 (file)
@@ -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
index 8fd7f998bc2a33d92897c751e12b95aa8656524a..72cb53f6e3e99968595079b329f0fed2b8cfbf53 100644 (file)
@@ -6,7 +6,6 @@
 use strict;
 use warnings;
 
-use 5.008001;
 use vars qw(%_SHARED $_TD);
 
 PostgreSQL::InServer::Util::bootstrap();
index 27fa607da41d108bfc121d49eee72628a77f1b19..4fef9c12e6110b09b8cccae63ecb5d4d98b83882 100644 (file)
@@ -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.
 
index 4b160cce36ed3cb88d4e021b9a9893f0393f894b..6ddee42a1053cb5ca0c2f278864a422714f70e01 100644 (file)
@@ -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::[email protected]
     cpanm install IPC::[email protected]
index b8c514a831110975ef3cb1b1f3e9fb3983b8e3a1..b4af3dea81bd98f8f18dce23f07b568a1a417692 100644 (file)
@@ -3,7 +3,6 @@
 
 use strict;
 use warnings;
-use 5.8.0;
 use List::Util qw(max);
 
 my @def;
index 2ef07bb9fd53047c8e90d272442850112493ece8..47d2790ef60f7a0944277842b8fe9b4486994caf 100755 (executable)
@@ -4,7 +4,6 @@
 
 use strict;
 use warnings;
-use 5.008001;
 
 use Cwd qw(abs_path getcwd);
 use File::Find;