Search
j0ke.net Open Build Service
>
Projects
>
devel
:
tools
:
building
>
autoconf
> autoconf-2.67-fix_dnl.patch
Sign Up
|
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File autoconf-2.67-fix_dnl.patch of Package autoconf
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