Which Perl versions Autoconf needs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2023-03-29 16:32, Jacob Bachmeyer wrote:

Is there anything more needed from me to get similar fixes into Autoconf?

I started to do that, by installing this:

https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=e2220ed33e69d8bc6504e3f6279894afe33a99a5

into Autoconf master on Savannah and then drafting the attached patch. However, the attached patch is not right, because some other Perl 5.10 code is now in autoconf/build-aux/help-extract.pl (and perhaps a few other places; I haven't checked). So I did not install this draft patch.

If it's easy to backport help-extract.pl (and etc.?) to older Perl then feel free to come up with an additional patch set. If not, I wouldn't worry too much. As Warren mentioned, these old Perls are getting rare on platforms that users are likely to be running Autoconf on.

I ran into this issue when testing the latest Autoconf release candidate on Solaris 10, which ships with Perl 5.8.4. Although Solaris 10 is obsolescent Oracle says they will support it through January 2024.
From 6067ea81d1b879871c76320025349f068bf3743b Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@xxxxxxxxxxx>
Date: Wed, 29 Mar 2023 13:41:50 -0700
Subject: [PATCH] Go back to requiring only Perl 5.6+
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Commit 61901a1a14fd50c03cfb1529d091554376fef286 dated 2022-07-10
bumped the Perl requirement to 5.10 or later, because
commit 3a9802d60156809c139e9b4620bf04917e143ee2 dated 2021-08-31
added code using Time::HiRes’s ‘stat’ function, a feature
added in Perl 5.8.9+ or Perl 5.10+, and it was hard
to find Perl 5.8.9 hosts to test with.  Also, requiring Perl 5.10
meant that we could then use operators like Digest::SHA, the // and
//= operators, the regexp \K escape, and ‘state’ variables.

However, that Time::HiRes code, which was taken from Automake, has
recently been made optional by Automake, and it now works again with
Perl 5.6.  And Autoconf is not yet using any other post-5.6 feature as
far as I know.

I ran into this problem when testing the Autoconf release candidate on
Solaris 10, which has Perl 5.8.4.  Oracle says Solaris 10’s
end-of-life is January 2024, so it’s still (barely) a viable porting
target.  Of course with Solaris 10 one must install a recent-enough
GNU m4, but adding a requirement to also install a recent-enough Perl
is a new barrier, and if it’s not needed then it might be better to
wait until it is needed (or until 2024 arrives).

* NEWS: Remove news item about Perl 5.10.
* build-aux/fetch.pl: Do not munge imported code to require 5.10.
---
 NEWS                         |  3 --
 build-aux/fetch.pl           |  1 -
 build-aux/help-extract.pl    |  1 -
 configure.ac                 |  9 ++++-
 lib/Autom4te/C4che.pm        |  2 +-
 lib/Autom4te/ChannelDefs.pm  |  2 +-
 lib/Autom4te/Channels.pm     |  2 +-
 lib/Autom4te/Config.pm       |  2 +-
 lib/Autom4te/Configure_ac.pm |  2 +-
 lib/Autom4te/FileUtils.pm    |  2 +-
 lib/Autom4te/General.pm      |  2 +-
 lib/Autom4te/Getopt.pm       |  2 +-
 lib/Autom4te/Request.pm      |  2 +-
 lib/Autom4te/XFile.pm        |  2 +-
 m4/perl-time-hires.m4        | 74 ------------------------------------
 tests/mktests.pl             |  2 +-
 16 files changed, 19 insertions(+), 91 deletions(-)
 delete mode 100644 m4/perl-time-hires.m4

diff --git a/NEWS b/NEWS
index d64648c6..f373eca6 100644
--- a/NEWS
+++ b/NEWS
@@ -12,9 +12,6 @@ GNU Autoconf NEWS - User visible changes.
   means Autoconf no longer supports pre-1989 C compilers, as they do
   not support function prototypes.
 
-*** Autoconf now requires perl 5.10 (2007) or later.
-  Generated 'configure' scripts continue to run without perl.
-
 *** Autoconf now requires GNU M4 1.4.8 (2006) or later.
   Generated 'configure' scripts continue to run without M4.
 
diff --git a/build-aux/fetch.pl b/build-aux/fetch.pl
index 11102035..f391dcf6 100755
--- a/build-aux/fetch.pl
+++ b/build-aux/fetch.pl
@@ -240,7 +240,6 @@ sub fetch ($$$$$$)
   # don't use \s here or it will eat blank lines
   $content =~ s/[ \t]+$//gm;
   $content =~ s/\bAutomake::/Autom4te::/g if $edit;
-  $content =~ s/^use 5\.006;$/use 5.010;/mg if $edit;
 
   replace_if_change ($destpath, $content, $quiet);
 }
diff --git a/build-aux/help-extract.pl b/build-aux/help-extract.pl
index 83f79da9..f87166e3 100644
--- a/build-aux/help-extract.pl
+++ b/build-aux/help-extract.pl
@@ -16,7 +16,6 @@
 
 # Written by Zack Weinberg.
 
-use 5.010;
 use strict;
 use warnings;
 use File::Spec::Functions qw(catfile);
diff --git a/configure.ac b/configure.ac
index 1ec9b2c7..5805d743 100644
--- a/configure.ac
+++ b/configure.ac
@@ -153,7 +153,14 @@ AM_MISSING_PROG([HELP2MAN], [help2man])
 ## ------ ##
 
 # We use an absolute name for perl so the #! line in autoscan will work.
-AC_PATH_PERL_WITH_TIME_HIRES_STAT
+AC_PATH_PROG([PERL], [perl], [no])
+AC_SUBST([PERL])dnl
+if test "$PERL" = no; then
+  AC_MSG_ERROR([perl is not found])
+fi
+$PERL -e 'require 5.006;' || {
+   AC_MSG_ERROR([Perl 5.006 or better is required])
+}
 
 # Find out whether the system supports flock
 # Note this test does not try to find out whether it works with this
diff --git a/lib/Autom4te/C4che.pm b/lib/Autom4te/C4che.pm
index b4af7974..523f15bf 100644
--- a/lib/Autom4te/C4che.pm
+++ b/lib/Autom4te/C4che.pm
@@ -31,7 +31,7 @@ This Perl module handles the cache of M4 runs used by autom4te.
 
 =cut
 
-use 5.010;
+use 5.006;
 use strict;
 use warnings FATAL => 'all';
 
diff --git a/lib/Autom4te/ChannelDefs.pm b/lib/Autom4te/ChannelDefs.pm
index bf6bf617..85ea6f82 100644
--- a/lib/Autom4te/ChannelDefs.pm
+++ b/lib/Autom4te/ChannelDefs.pm
@@ -44,7 +44,7 @@ shorthand function to output on specific channels.
 
 =cut
 
-use 5.010;
+use 5.006;
 use strict;
 use warnings FATAL => 'all';
 
diff --git a/lib/Autom4te/Channels.pm b/lib/Autom4te/Channels.pm
index 89f5f71f..a2ed0a0b 100644
--- a/lib/Autom4te/Channels.pm
+++ b/lib/Autom4te/Channels.pm
@@ -66,7 +66,7 @@ etc.) that can also be overridden on a per-message basis.
 
 =cut
 
-use 5.010;
+use 5.006;
 use strict;
 use warnings FATAL => 'all';
 
diff --git a/lib/Autom4te/Config.pm b/lib/Autom4te/Config.pm
index 5a800175..941905d1 100644
--- a/lib/Autom4te/Config.pm
+++ b/lib/Autom4te/Config.pm
@@ -25,7 +25,7 @@ package Autom4te::Config;
 # and autoconf's build machinery is not prepared to do that.
 # Revisit after 2.70.
 
-use 5.010;
+use 5.006;
 use strict;
 use warnings FATAL => 'all';
 
diff --git a/lib/Autom4te/Configure_ac.pm b/lib/Autom4te/Configure_ac.pm
index fb00682b..a22e8a77 100644
--- a/lib/Autom4te/Configure_ac.pm
+++ b/lib/Autom4te/Configure_ac.pm
@@ -20,7 +20,7 @@
 
 package Autom4te::Configure_ac;
 
-use 5.010;
+use 5.006;
 use strict;
 use warnings FATAL => 'all';
 
diff --git a/lib/Autom4te/FileUtils.pm b/lib/Autom4te/FileUtils.pm
index 2468fe6d..c1e8e8c3 100644
--- a/lib/Autom4te/FileUtils.pm
+++ b/lib/Autom4te/FileUtils.pm
@@ -34,7 +34,7 @@ This perl module provides various general purpose file handling functions.
 
 =cut
 
-use 5.010;
+use 5.006;
 use strict;
 use warnings FATAL => 'all';
 
diff --git a/lib/Autom4te/General.pm b/lib/Autom4te/General.pm
index 57a706a7..ba79eff5 100644
--- a/lib/Autom4te/General.pm
+++ b/lib/Autom4te/General.pm
@@ -32,7 +32,7 @@ used in several executables of the Autoconf package.
 
 =cut
 
-use 5.010;
+use 5.006;
 use strict;
 use warnings FATAL => 'all';
 
diff --git a/lib/Autom4te/Getopt.pm b/lib/Autom4te/Getopt.pm
index fac5e36f..6ad3dad0 100644
--- a/lib/Autom4te/Getopt.pm
+++ b/lib/Autom4te/Getopt.pm
@@ -30,7 +30,7 @@ line options in conformance to the GNU Coding standards.
 
 =cut
 
-use 5.010;
+use 5.006;
 use strict;
 use warnings FATAL => 'all';
 
diff --git a/lib/Autom4te/Request.pm b/lib/Autom4te/Request.pm
index d3af46bc..53f9ad7a 100644
--- a/lib/Autom4te/Request.pm
+++ b/lib/Autom4te/Request.pm
@@ -32,7 +32,7 @@ used in several executables of the Autoconf and Automake packages.
 
 =cut
 
-use 5.010;
+use 5.006;
 use strict;
 use warnings FATAL => 'all';
 
diff --git a/lib/Autom4te/XFile.pm b/lib/Autom4te/XFile.pm
index d6a8602d..5c9c07ea 100644
--- a/lib/Autom4te/XFile.pm
+++ b/lib/Autom4te/XFile.pm
@@ -69,7 +69,7 @@ and C<getlines> methods to translate C<\r\n> to C<\n>.
 
 =cut
 
-use 5.010;
+use 5.006;
 use strict;
 use warnings FATAL => 'all';
 
diff --git a/m4/perl-time-hires.m4 b/m4/perl-time-hires.m4
deleted file mode 100644
index 2d9e64ec..00000000
--- a/m4/perl-time-hires.m4
+++ /dev/null
@@ -1,74 +0,0 @@
-# perl-time-hires.m4 serial 1
-
-# Copyright (C) 2022-2023 Free Software Foundation, Inc.
-
-# Copying and distribution of this file, with or without modification,
-# are permitted in any medium without royalty provided the copyright
-# notice and this notice are preserved.  This file is offered as-is,
-# without warranty of any kind.
-
-# AClocal_PATH_PROG_GLOBS_FEATURE_CHECK
-# ---------------------------------
-# Like AC_PATH_PROGS_FEATURE_CHECK, but each of 'progs-to-check-for' may
-# be a shell glob, which is expanded once for each path entry.
-# That is, AClocal_PATH_PROG_GLOBS_FEATURE_CHECK([PERL], [perl-*]) will
-# test each program named something like 'perl-*' found anywhere on the
-# path.  Due to the syntax conflict with Autoconf string quoting,
-# character sets (e.g. perl-[56]*) are not supported.
-m4_define([AClocal_PATH_PROG_GLOBS_FEATURE_CHECK],
-[if test -z "$$1"; then
-  ac_path_$1_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  dnl AS_ESCAPE has been excessively optimized and does not work for anything
-  dnl other than constructing strings.  I have not been able to figure out how
-  dnl to get [ and ] through this process without mangling them, so
-  dnl character sets are not supported for now.
-  _AS_PATH_WALK([$5],
-  [for ac_prog in m4_bpatsubst([$2], [[!?*]], [\\\&])
-   do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_pathglob_$1="$as_dir$ac_prog$ac_exec_ext"
-      for ac_path_$1 in $ac_pathglob_$1; do
-        AS_EXECUTABLE_P(["$ac_path_$1"]) || continue
-$3
-        $ac_path_$1_found && break 4
-      done
-    done
-  done])dnl
-  if test -z "$ac_cv_path_$1"; then
-    m4_default([$4],
-      [AC_MSG_ERROR([no acceptable m4_bpatsubst([$2], [ .*]) could be dnl
-found in m4_default([$5], [\$PATH])])])
-  fi
-else
-  ac_cv_path_$1=$$1
-fi
-])
-
-# AC_PATH_PERL_WITH_TIME_HIRES_STAT
-# ---------------------------------
-# Check for a version of perl that supports Time::HiRes::stat.
-# This was added to perl core in 5.10 and it's convenient to
-# have a consistent 'use 5.0xx' baseline for all the perl scripts,
-# so that is the version we require, even though technically we
-# could be getting away with 5.8 or even 5.6 in many of the scripts.
-# (Note: Files shared with Automake do not necessarily use our baseline.)
-AC_DEFUN([AC_PATH_PERL_WITH_TIME_HIRES_STAT],
-  [AC_ARG_VAR([PERL], [Location of Perl 5.10 or later.  Defaults to
-    the first program named 'perl', 'perl5*', or 'perl-5.*' on the PATH
-    that meets Autoconf's needs.])
-  AC_CACHE_CHECK([for Perl >=5.10.0 with Time::HiRes::stat],
-                 [ac_cv_path_PERL],
-    [AClocal_PATH_PROG_GLOBS_FEATURE_CHECK(
-        [PERL], [perl perl5* perl-5.*],
-        [AS_ECHO("$as_me:${as_lineno-$LINENO}: trying $ac_path_PERL") \
-             >&AS_MESSAGE_LOG_FD
-         $ac_path_PERL >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD -e '
-  use 5.010;
-  use Time::HiRes qw(stat);
-  1;' \
-         && ac_cv_path_PERL=$ac_path_PERL ac_path_PERL_found=:],
-    [AC_MSG_ERROR([no acceptable perl could be found in \$PATH.
-Perl 5.10.0 or later is required, with Time::HiRes::stat.])])])
-  PERL=$ac_cv_path_PERL
-])
diff --git a/tests/mktests.pl b/tests/mktests.pl
index db6087ad..effed0bc 100644
--- a/tests/mktests.pl
+++ b/tests/mktests.pl
@@ -17,7 +17,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-use 5.010;
+use 5.006;
 use strict;
 use warnings FATAL => 'all';
 
-- 
2.37.2


[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux