5a56020ed5
OBS-URL: https://build.opensuse.org/package/show/devel:tools:building/autoconf?expand=0&rev=05000cdf1198ddee724defaaf1de2d49
164 lines
4.2 KiB
Diff
164 lines
4.2 KiB
Diff
From f6030a3204a9b87e9b346e6eff4ce1117382fc86 Mon Sep 17 00:00:00 2001
|
|
From: Eric Blake <eblake@redhat.com>
|
|
Date: Thu, 16 Sep 2010 08:43:27 -0600
|
|
Subject: [PATCH] m4sugar: fix regression in AC_MSG_ERROR expansion
|
|
|
|
AS_ERROR Regression introduced in commit cffdc3947, but the
|
|
underlying problem stems from the introduction of m4_defun_init
|
|
in commit d0c5f482.
|
|
|
|
* lib/m4sugar/m4sugar.m4 (m4_defun_init): Avoid macro
|
|
concatenation on subsequent expansions
|
|
* tests/m4sh.at (AS_WARN and AS_ERROR): New test.
|
|
* tests/m4sugar.at (m4@&t@_require: one-shot initialization):
|
|
Enhance test.
|
|
* NEWS: Document the fix.
|
|
* THANKS: Update.
|
|
Reported by Adrian Bunk and and Nishio Futoshi.
|
|
|
|
Signed-off-by: Eric Blake <eblake@redhat.com>
|
|
---
|
|
ChangeLog | 12 ++++++++
|
|
NEWS | 3 ++
|
|
THANKS | 1 +
|
|
lib/m4sugar/m4sugar.m4 | 2 +-
|
|
tests/m4sh.at | 66 +++++++++++++++++++++++++++++++++++++++++++++++-
|
|
tests/m4sugar.at | 10 ++++---
|
|
6 files changed, 88 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/lib/m4sugar/m4sugar.m4 b/lib/m4sugar/m4sugar.m4
|
|
index 95b7bcf..d440127 100644
|
|
--- a/lib/m4sugar/m4sugar.m4
|
|
+++ b/lib/m4sugar/m4sugar.m4
|
|
@@ -1973,7 +1973,7 @@ m4_define([m4_defun],
|
|
# m4_defun'd, we can add a parameter, similar to the third parameter
|
|
# to m4_defun.
|
|
m4_define([m4_defun_init],
|
|
-[m4_define([$1], [$3])m4_defun([$1],
|
|
+[m4_define([$1], [$3[]])m4_defun([$1],
|
|
[$2[]_m4_popdef(]m4_dquote($[0])[)m4_indir(]m4_dquote($[0])dnl
|
|
[m4_if(]m4_dquote($[#])[, [0], [], ]m4_dquote([,$]@)[))], [m4_pushdef])])
|
|
|
|
diff --git a/tests/m4sh.at b/tests/m4sh.at
|
|
index e73c971..08680c3 100644
|
|
--- a/tests/m4sh.at
|
|
+++ b/tests/m4sh.at
|
|
@@ -18,6 +18,71 @@ AT_BANNER([M4sh.])
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
+## ------------------- ##
|
|
+## AS_WARN, AS_ERROR. ##
|
|
+## ------------------- ##
|
|
+
|
|
+AT_SETUP([AS@&t@_WARN and AS@&t@_ERROR])
|
|
+AT_KEYWORDS([m4sh])
|
|
+
|
|
+dnl without logging
|
|
+AT_DATA_M4SH([script.as],
|
|
+[[AS_INIT
|
|
+AS_WARN([*watch out*])dnl
|
|
+
|
|
+if test x"$die" != x; then
|
|
+ AS_ERROR([you're dead])dnl
|
|
+
|
|
+ AS_ERROR([really])dnl
|
|
+
|
|
+fi
|
|
+echo got here
|
|
+]])
|
|
+
|
|
+AT_CHECK_M4SH
|
|
+AT_CHECK([$CONFIG_SHELL ./script], [],
|
|
+[[got here
|
|
+]], [[script: WARNING: *watch out*
|
|
+]])
|
|
+AT_CHECK([die=: $CONFIG_SHELL ./script], [1],
|
|
+[], [[script: WARNING: *watch out*
|
|
+script: error: you're dead
|
|
+]])
|
|
+
|
|
+dnl with logging
|
|
+rm script
|
|
+AT_DATA_M4SH([script.as],
|
|
+[[AS_INIT
|
|
+m4_define([gone], [AS_ERROR([really])])
|
|
+m4_define([AS_MESSAGE_LOG_FD], [5])
|
|
+exec AS_MESSAGE_LOG_FD>log.txt
|
|
+AS_WARN([*watch out*])dnl
|
|
+
|
|
+if test x"$die" != x; then
|
|
+ AS_ERROR([you're dead])dnl
|
|
+
|
|
+ AS_ERROR([really])dnl
|
|
+
|
|
+fi
|
|
+echo got here
|
|
+exec AS_MESSAGE_LOG_FD>&-
|
|
+]])
|
|
+
|
|
+AT_CHECK_M4SH
|
|
+AT_CHECK([$CONFIG_SHELL ./script], [],
|
|
+[[got here
|
|
+]], [[script: WARNING: *watch out*
|
|
+]])
|
|
+AT_CHECK([[grep 'script:[0-9]*: WARNING: \*watch out\*' log.txt]], [], [ignore])
|
|
+AT_CHECK([die=: $CONFIG_SHELL ./script], [1],
|
|
+[], [[script: WARNING: *watch out*
|
|
+script: error: you're dead
|
|
+]])
|
|
+AT_CHECK([[grep 'script:[0-9]*: WARNING: \*watch out\*' log.txt]], [], [ignore])
|
|
+AT_CHECK([[grep 'script:[0-9]*: error: you'\''re dead' log.txt]], [], [ignore])
|
|
+
|
|
+AT_CLEANUP
|
|
+
|
|
## ---------------- ##
|
|
## LINENO support. ##
|
|
## ---------------- ##
|
|
@@ -95,7 +160,6 @@ AT_CHECK([sh ./test/test-2], 0, [expout])
|
|
AT_CLEANUP
|
|
|
|
|
|
-
|
|
## ---------------------- ##
|
|
## LINENO stack support. ##
|
|
## ---------------------- ##
|
|
diff --git a/tests/m4sugar.at b/tests/m4sugar.at
|
|
index 50a7b00..900bc3b 100644
|
|
--- a/tests/m4sugar.at
|
|
+++ b/tests/m4sugar.at
|
|
@@ -460,13 +460,15 @@ AT_KEYWORDS([m4@&t@_defun_init m4@&t@_copy m4@&t@_defun_once])
|
|
|
|
dnl check out m4_defun_init, m4_copy, and odd macro names
|
|
AT_CHECK_M4SUGAR_TEXT([[
|
|
+m4_define([t], [text])dnl
|
|
m4_defun_init([a], [[init a
|
|
-]], [[common a]])dnl
|
|
+]], [[common a] t])dnl
|
|
m4_defun([b], [[b]m4_require([a])])dnl
|
|
m4_defun([c], [[c]m4_require([a])])dnl
|
|
b
|
|
c
|
|
-a
|
|
+a()dnl
|
|
+
|
|
m4_defun_init([-], [hello, ], [m4_if([$#], [0], [world], [[$1]])])dnl
|
|
m4_copy([-], [.])dnl
|
|
m4_indir([.])
|
|
@@ -474,10 +476,10 @@ m4_indir([.], [goodbye])
|
|
m4_indir([-], [again])
|
|
]], [[
|
|
init a
|
|
-common a
|
|
+common a text
|
|
b
|
|
c
|
|
-common a
|
|
+common a text
|
|
hello, world
|
|
goodbye
|
|
hello, again
|
|
--
|
|
1.7.1
|
|
|