[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: m4 1.4.7 trace line number differences
From: |
Eric Blake |
Subject: |
Re: m4 1.4.7 trace line number differences |
Date: |
Sat, 25 Jul 2009 17:24:42 -0600 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.22) Gecko/20090605 Thunderbird/2.0.0.22 Mnenhy/0.7.6.666 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
According to Ralf Wildenhues on 7/25/2009 11:34 AM:
>> Since 1.4.6 is now
>> 2 years and 11 months old (and only one month newer than 1.4.5), I'm okay
>> with raising our minimum requirement, at the same time as fixing the
>> testsuite to tolerate 1.4.6. I'll be committing something shortly, once a
>> testsuite completes successfully under m4 1.4.6...
>
> Sounds like a good plan to me, thanks.
Done as follows:
- --
Don't work too hard, make some time for fun as well!
Eric Blake address@hidden
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkprlDkACgkQ84KuGfSFAYD9qQCeNMOvmdx4AlmaZumQQXwjnN7s
hC4AoImyo42OvyJSIJwud31q30m2HHfk
=4iaA
-----END PGP SIGNATURE-----
>From 2043f859d91c72d5c0df941bd8abf91a9edae238 Mon Sep 17 00:00:00 2001
From: Eric Blake <address@hidden>
Date: Sat, 25 Jul 2009 17:17:41 -0600
Subject: [PATCH] Require m4 1.4.6, and fix testsuite to support this version.
* m4/m4.m4 (AC_PROG_GNU_M4): Reject m4 1.4.5, now that we use
regexp it can't handle.
* NEWS: Mention minimum version bump.
* README: Likewise.
* README-hacking: Likewise.
* doc/autoconf.texi (Introduction, Why GNU M4): Likewise.
* tests/tools.at (autom4te --trace and whitespace): Update test so
still work with older m4 line numbers.
* tests/m4sugar.at (m4@&address@hidden: nested): Likewise.
Reported by Ralf Wildenhues.
Signed-off-by: Eric Blake <address@hidden>
---
ChangeLog | 13 +++++++++++++
NEWS | 5 +++++
README | 2 +-
README-hacking | 2 +-
doc/autoconf.texi | 4 ++--
m4/m4.m4 | 18 ++++++++++--------
tests/m4sugar.at | 11 ++++++-----
tests/tools.at | 11 +++++++----
8 files changed, 45 insertions(+), 21 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 4ecd0d8..5caec55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2009-07-25 Eric Blake <address@hidden>
+
+ Require m4 1.4.6, and fix testsuite to support this version.
+ * m4/m4.m4 (AC_PROG_GNU_M4): Reject m4 1.4.5, now that we use
+ regexp it can't handle.
+ * NEWS: Mention minimum version bump.
+ * README: Likewise.
+ * README-hacking: Likewise.
+ * doc/autoconf.texi (Introduction, Why GNU M4): Likewise.
+ * tests/tools.at (autom4te --trace and whitespace): Update test so
+ still work with older m4 line numbers.
+ * tests/m4sugar.at (m4@&address@hidden: nested): Likewise.
+
2009-07-25 Bruno Haible <address@hidden>
Clarify autom4te debugging tips.
diff --git a/NEWS b/NEWS
index 3830fc0..8bf819e 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,11 @@ GNU Autoconf NEWS - User visible changes.
* Major changes in Autoconf 2.64 (2009-??-??) [stable]
Released by Eric Blake, based on git versions 2.63b.*.
+** Autoconf now requires GNU M4 1.4.6 or later. Earlier versions of M4
+ have a bug in regular expression handling that interferes with some
+ of the speedups provided since Autoconf 2.63. GNU M4 1.4.13 or
+ later is recommended.
+
** AS_IF and AS_CASE have been taught to avoid syntax errors even when
given arguments that expand to just whitespace.
diff --git a/README b/README
index 1e35ff7..4b048a9 100644
--- a/README
+++ b/README
@@ -11,7 +11,7 @@ operating system features that the package can use, in the
form of M4
macro calls.
Producing configuration scripts using Autoconf requires GNU M4 and
-Perl. You should install GNU M4 (version 1.4.5 or later is required;
+Perl. You should install GNU M4 (version 1.4.6 or later is required;
1.4.13 or later is recommended) and Perl (5.005_03 or later) before
configuring Autoconf, so that Autoconf's configure script can find
them. The configuration scripts produced by Autoconf are
diff --git a/README-hacking b/README-hacking
index 6eb8c44..c957086 100644
--- a/README-hacking
+++ b/README-hacking
@@ -17,7 +17,7 @@ tools we depend upon, including:
- Autoconf 2.60+ <http://www.gnu.org/software/autoconf/>
- Automake 1.10+ <http://www.gnu.org/software/automake/>
- Help2man 1.29+ <http://www.gnu.org/software/help2man/>
-- M4 1.4.5+ <http://www.gnu.org/software/m4/>
+- M4 1.4.6+ <http://www.gnu.org/software/m4/>
- Perl 5.005_03+ <http://www.cpan.org/>
- Texinfo 4.8+ <http://www.gnu.org/software/texinfo/>
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index 39286fd..347e0f2 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -728,7 +728,7 @@ Introduction
Autoconf imposes some restrictions on the names of macros used with
@code{#if} in C programs (@pxref{Preprocessor Symbol Index}).
-Autoconf requires @acronym{GNU} M4 version 1.4.5 or later in order to
+Autoconf requires @acronym{GNU} M4 version 1.4.6 or later in order to
generate the scripts. It uses features that some versions of M4,
including @acronym{GNU} M4 1.3, do not have. Autoconf works better
with @acronym{GNU} M4 version 1.4.13 or later, though this is not
@@ -23234,7 +23234,7 @@ Why GNU M4
__line__
@end example
-Autoconf requires version 1.4.5 or later of @acronym{GNU} M4.
+Autoconf requires version 1.4.6 or later of @acronym{GNU} M4.
Since only software maintainers need to use Autoconf, and since @acronym{GNU}
M4 is simple to configure and install, it seems reasonable to require
diff --git a/m4/m4.m4 b/m4/m4.m4
index d637e92..096fb28 100644
--- a/m4/m4.m4
+++ b/m4/m4.m4
@@ -1,4 +1,4 @@
-# m4.m4 serial 8
+# m4.m4 serial 9
# Copyright (C) 2000, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
@@ -10,13 +10,14 @@
# AC_PROG_GNU_M4
# --------------
-# Check for GNU M4, at least 1.4.5 (all earlier versions had a bug in
-# trace support:
-# http://lists.gnu.org/archive/html/bug-gnu-utils/2006-11/msg00096.html)
+# Check for GNU M4, at least 1.4.6 (all earlier versions had bugs in
+# trace support and regexp support):
+# http://lists.gnu.org/archive/html/bug-gnu-utils/2006-11/msg00096.html
+# http://lists.gnu.org/archive/html/bug-autoconf/2009-07/msg00023.html
# Also, check whether --error-output (through 1.4.x) or --debugfile (2.0)
# is supported, and AC_SUBST M4_DEBUGFILE accordingly.
AC_DEFUN([AC_PROG_GNU_M4],
- [AC_ARG_VAR([M4], [Location of GNU M4 1.4.5 or later. Defaults to the first
+ [AC_ARG_VAR([M4], [Location of GNU M4 1.4.6 or later. Defaults to the first
program of `m4', `gm4', or `gnum4' on PATH that meets Autoconf needs.])
AC_CACHE_CHECK([for GNU M4 that supports accurate traces], [ac_cv_path_M4],
[rm -f conftest.m4f
@@ -24,15 +25,16 @@ ac_had_posixly_correct=${POSIXLY_CORRECT:+yes}
AS_UNSET([POSIXLY_CORRECT])
AC_PATH_PROGS_FEATURE_CHECK([M4], [m4 gm4 gnum4],
[dnl Creative quoting here to avoid raw dnl and ifdef in configure.
- # Root out GNU M4 1.4.4, as well as non-GNU m4 that ignore -t, -F.
- ac_snippet=change'quote(<,>)in''dir(<if''def>,mac,bug)d'nl
+ # Root out GNU M4 1.4.5, as well as non-GNU m4 that ignore -t, -F.
+ ac_snippet=change'quote(<,>)in''dir(<if''def>,mac,bug)'
+ ac_snippet=${ac_snippet}pat'subst(a,\(b\)\|\(a\),\1)d'nl
test -z "`$ac_path_M4 -F conftest.m4f </dev/null 2>&1`" \
&& test -z "`echo $ac_snippet | $ac_path_M4 --trace=mac 2>&1`" \
&& test -f conftest.m4f \
&& ac_cv_path_M4=$ac_path_M4 ac_path_M4_found=:
rm -f conftest.m4f],
[AC_MSG_ERROR([no acceptable m4 could be found in \$PATH.
-GNU M4 1.4.5 or later is required; 1.4.13 is recommended])])])
+GNU M4 1.4.6 or later is required; 1.4.13 is recommended])])])
M4=$ac_cv_path_M4
AC_CACHE_CHECK([whether $ac_cv_path_M4 accepts --gnu],
[ac_cv_prog_gnu_m4_gnu],
diff --git a/tests/m4sugar.at b/tests/m4sugar.at
index 04f06b9..2e89cc5 100644
--- a/tests/m4sugar.at
+++ b/tests/m4sugar.at
@@ -581,13 +581,14 @@ AT_CHECK_M4SUGAR_TEXT([[dnl
m4_defun([a], [[a]])dnl
m4_defun([b], [[b]m4_require([a])])dnl
m4_defun([c], [[c]m4_require([b])])dnl
-m4_defun([outer],
+dnl the extra macro layer works around line number differences in older m4
+m4_define([foo], [m4_defun([outer],
[pre
a
c
a
c
-post])dnl
+post])])foo[]dnl
outer
]],
[[a
@@ -599,11 +600,11 @@ a
c
post
]],
-[[script.4s:14: warning: m4@&address@hidden: `a' was expanded before it was
required
+[[script.4s:15: warning: m4@&address@hidden: `a' was expanded before it was
required
script.4s:5: b is expanded from...
script.4s:6: c is expanded from...
-script.4s:7: outer is expanded from...
-script.4s:14: the top level
+script.4s:14: outer is expanded from...
+script.4s:15: the top level
]])
dnl Direct invocation, expand-before-require but no nested require. As this
diff --git a/tests/tools.at b/tests/tools.at
index e54ed69..cba570e 100644
--- a/tests/tools.at
+++ b/tests/tools.at
@@ -228,14 +228,17 @@ AT_CLEANUP
AT_SETUP([autom4te --trace and whitespace])
-AT_DATA([file.m4],
-[[m4@&address@hidden([ a
+dnl line numbering differs between m4 1.4.6 and 1.4.13 if we don't
+dnl go through a single line wrapper
+AT_DATA_M4SUGAR([file.m4],
+[[m4_define([foo], [m4_echo([ a
b c ], [\
d\
-])
+])])
+foo
]])
AT_CHECK_AUTOM4TE([--language=m4sugar -t 'm4@&address@hidden' file.m4], [0],
-[[file.m4:1:m4@&address@hidden: a b c :d
+[[file.m4:5:m4@&address@hidden: a b c :d
]])
AT_CLEANUP
--
1.6.3.3.334.g916e1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: m4 1.4.7 trace line number differences,
Eric Blake <=