autoconf-patches
[Top][All Lists]
Advanced

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

Fix m4_re_string, m4_re_word


From: Noah Misch
Subject: Fix m4_re_string, m4_re_word
Date: Tue, 18 Jan 2005 04:39:23 -0800
User-agent: Mutt/1.5.6i

m4_re_string and m4_re_word have not worked in some time; a cleanup some time
back accidentally changed e.g. `[A-Za-z0-9_]' to `A-Za-z0-9_'.  This patch
reverts that change and adds a test case.

AT_CHECK_ENV, one of the few (only?) m4_re_word users, now once again checks for
environment pollution.  I updated its whitelist.

A few tests in semantics.at modified CPPFLAGS in their test `configure.ac's,
which AT_CHECK_ENV caught.  I just adjusted them to not do that anymore.

The `GNU Fortran' test (#98 after applying this patch) now fails because it
modifies variables in the user namespace (AFAICS).  I will post a separate patch
fixing that.  All other tests pass.

(I forgot to update the comment above AT_CHECK_ENV; I am about to post a patch
that affects that area heavily, so I will do so with it.)

2005-01-18  Noah Misch  <address@hidden>

        * lib/m4sugar/m4sugar.m4 (m4_re_string, m4_re_word): Revert 2002-03-04.
        * tests/local.at (AT_CHECK_M4SUGAR): Add `m4sugar' to keywords.
        (AT_CHECK_ENV): Ignore LTLIBOBJS, FC variables, EGREP, FGREP, and SED.
        * tests/m4sugar.at (AT_CHECK_M4SUGAR_TEXT, AT_CHECK_M4RE): New macros.
        (Standard regular expressions): New test.
        (m4_warn, m4_require: circular dependencies, m4_text_wrap): Strip excess
        test name quoting.
        * tests/semantics.at (AC_CHECK_HEADERS_OLD, AC_CHECK_HEADERS_NEW): Pass
        CPPFLAGS to `configure' instead of setting it in `configure'.
        

diff -urp -X dontdiff ac-clean/lib/m4sugar/m4sugar.m4 
ac-m4re/lib/m4sugar/m4sugar.m4
--- ac-clean/lib/m4sugar/m4sugar.m4     2005-01-04 09:15:51.000000000 -0500
+++ ac-m4re/lib/m4sugar/m4sugar.m4      2005-01-18 00:59:58.605751240 -0500
@@ -3,8 +3,8 @@ divert(-1)#                             
 # Base M4 layer.
 # Requires GNU M4.
 #
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation,
-# Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
+# Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -1373,8 +1373,9 @@ m4_define([m4_re_escape],
 # m4_re_string
 # ------------
 # Regexp for `[a-zA-Z_0-9]*'
+# m4_dquote provides literal [] for the character class.
 m4_define([m4_re_string],
-m4_defn([m4_cr_symbols2])dnl
+m4_dquote(m4_defn([m4_cr_symbols2]))dnl
 [*]dnl
 )
 
@@ -1383,7 +1384,7 @@ m4_defn([m4_cr_symbols2])dnl
 # ----------
 # Regexp for `[a-zA-Z_][a-zA-Z_0-9]*'
 m4_define([m4_re_word],
-m4_defn([m4_cr_symbols1])dnl
+m4_dquote(m4_defn([m4_cr_symbols1]))dnl
 m4_defn([m4_re_string])dnl
 )
 
diff -urp -X dontdiff ac-clean/tests/local.at ac-m4re/tests/local.at
--- ac-clean/tests/local.at     2005-01-02 12:39:22.000000000 -0500
+++ ac-m4re/tests/local.at      2005-01-18 00:45:21.151069092 -0500
@@ -1,6 +1,7 @@
 # M4 macros used in building Autoconf test suites.        -*- Autotest -*-
 
-# Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Free Software
+# Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -107,7 +108,8 @@ m4_define([AT_DATA_M4SUGAR],
 # AT_CHECK_M4SUGAR(FLAGS, [EXIT-STATUS = 0], STDOUT, STDERR)
 # ----------------------------------------------------------
 m4_define([AT_CHECK_M4SUGAR],
-[AT_CHECK_AUTOM4TE([--language=m4sugar script.4s -o script $1],
+[AT_KEYWORDS([m4sugar])
+AT_CHECK_AUTOM4TE([--language=m4sugar script.4s -o script $1],
                   [$2], [$3], [$4])])
 
 
@@ -202,7 +204,7 @@ m4_defun([AC_STATE_SAVE],
       [^a[cs]_],
       [^((exec_)?prefix|DEFS|CONFIG_STATUS)=],
       [^(CC|CFLAGS|CPP|GCC|CXX|CXXFLAGS|CXXCPP|GXX|F77|FFLAGS|FLIBS|G77)=],
-      [^(LIBS|LIB@&address@hidden|LDFLAGS)=],
+      [^(LIBS|LIB@&address@hidden|LTLIBOBJS|LDFLAGS)=],
       [^INSTALL(_(DATA|PROGRAM|SCRIPT))?=],
       [^(CYGWIN|ISC|MINGW32|MINIX|EMXOS2|XENIX|EXEEXT|OBJEXT)=],
       [^(X_(CFLAGS|(EXTRA_|PRE_)?LIBS)|x_(includes|libraries)|(have|no)_x)=],
@@ -210,8 +212,10 @@ m4_defun([AC_STATE_SAVE],
       [^(cross_compiling)=],
       [^(interpval|PATH_SEPARATOR)=],
       [^(F77_DUMMY_MAIN|f77_(case|underscore))=],
+      [^(FC_DUMMY_MAIN|FC|FCFLAGS|FCLIBS|FCFLAGS_f)=],
       [^(ALLOCA|GETLOADAVG_LIBS|KMEM_GROUP|NEED_SETGID|POW_LIB)=],
       [^(AWK|LEX|LEXLIB|LEX_OUTPUT_ROOT|LN_S|M4|RANLIB|SET_MAKE|YACC)=],
+      [^(EGREP|FGREP|SED)=],
       [^(_|@|.[*#?].|LINENO|OLDPWD|PIPESTATUS|RANDOM|SECONDS)=])' 2>/dev/null |
   # There maybe variables spread on several lines, eg IFS, remove the dead
   # lines.
diff -urp -X dontdiff ac-clean/tests/m4sugar.at ac-m4re/tests/m4sugar.at
--- ac-clean/tests/m4sugar.at   2003-08-27 11:14:04.000000000 -0400
+++ ac-m4re/tests/m4sugar.at    2005-01-18 01:08:20.335172729 -0500
@@ -2,7 +2,7 @@
 
 AT_BANNER([M4sugar.])
 
-# Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2005 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -20,6 +20,22 @@ AT_BANNER([M4sugar.])
 # 02111-1307, USA.
 
 
+# AT_CHECK_M4SUGAR_TEXT(CODE, STDOUT, STDER)
+# ------------------------------------------
+# Check that m4sugar CODE expands to STDOUT and emits STDERR.
+m4_define([AT_CHECK_M4SUGAR_TEXT],
+[
+AT_DATA_M4SUGAR([script.4s],
+[[m4_init
+m4_divert_push(0)[]dnl
+]$1[[]dnl
+m4_divert_pop(0)
+]])
+
+AT_CHECK_M4SUGAR([-o-],, [$2], [$3])
+])# AT_CHECK_M4SUGAR_TEXT
+
+
 # Order of the tests:
 # - m4_warn
 #
@@ -32,7 +48,7 @@ AT_BANNER([M4sugar.])
 ## m4_warn.  ##
 ## --------- ##
 
-AT_SETUP([[m4@&address@hidden)
+AT_SETUP([m4@&address@hidden)
 
 # m4_text_wrap is used to display the help strings.  Also, check that
 # commas are not swallowed.  This can easily happen because of
@@ -83,7 +99,7 @@ AT_CLEANUP
 ## m4_require: circular dependencies.  ##
 ## ----------------------------------- ##
 
-AT_SETUP([[m4@&address@hidden: circular dependencies]])
+AT_SETUP([m4@&address@hidden: circular dependencies])
 
 # m4_text_wrap is used to display the help strings.  Also, check that
 # commas are not swallowed.  This can easily happen because of
@@ -122,7 +138,7 @@ AT_CLEANUP
 ## m4_text_wrap.  ##
 ## -------------- ##
 
-AT_SETUP([[m4@&address@hidden)
+AT_SETUP([m4@&address@hidden)
 
 # m4_text_wrap is used to display the help strings.  Also, check that
 # commas are not swallowed.  This can easily happen because of
@@ -164,3 +180,30 @@ First, second , third, [,quoted]
 AT_CHECK_M4SUGAR([-o-], 0, [expout])
 
 AT_CLEANUP
+
+## ------------------------------ ##
+## Standard regular expressions.  ##
+## ------------------------------ ##
+
+AT_SETUP([Standard regular expressions])
+
+# AT_CHECK_M4RE(RE-NAME, TEXT, INTENT = `ok' | `')
+# ------------------------------------------------
+# Check whether RE-NAME (a macro whose definition is a regular expression)
+# matches TEXT.  INTENT = `ok' if the match should succeed or else empty.
+m4_define([AT_CHECK_M4RE],
+[AT_CHECK_M4SUGAR_TEXT(
+[[m4_bregexp([$2], ^m4_defn([$1])$, [ok])
+]], [$3
+])])
+
+AT_CHECK_M4RE([m4_re_word], [ab9_c], [ok])
+AT_CHECK_M4RE([m4_re_word], [_9abc], [ok])
+AT_CHECK_M4RE([m4_re_word], [9ab_c])
+
+AT_CHECK_M4RE([m4_re_string], [ab9_c], [ok])
+AT_CHECK_M4RE([m4_re_string], [_9abc], [ok])
+AT_CHECK_M4RE([m4_re_string], [9ab_c], [ok])
+AT_CHECK_M4RE([m4_re_string], address@hidden)
+
+AT_CLEANUP
diff -urp -X dontdiff ac-clean/tests/semantics.at ac-m4re/tests/semantics.at
--- ac-clean/tests/semantics.at 2004-03-30 02:55:26.000000000 -0500
+++ ac-m4re/tests/semantics.at  2005-01-18 00:09:31.743128288 -0500
@@ -177,13 +177,11 @@ AT_DATA([header2.h],
 [typedef foo bar;
 ])
 
-AT_CONFIGURE_AC(
-[CPPFLAGS="$CPPFLAGS -I."
-AC_CHECK_HEADERS(header2.h, [], [], -)])
+AT_CONFIGURE_AC([AC_CHECK_HEADERS(header2.h, [], [], -)])
 
 AT_CHECK_AUTOCONF([-W obsolete])
 AT_CHECK_AUTOHEADER
-AT_CHECK_CONFIGURE
+AT_CHECK_CONFIGURE([CPPFLAGS=-I.])
 AT_CHECK_ENV
 AT_CHECK_DEFINES(
 [#define HAVE_HEADER2_H 1
@@ -211,12 +209,11 @@ AT_DATA([header3.h],
 ])
 
 AT_CONFIGURE_AC(
-[CPPFLAGS="$CPPFLAGS -I."
-AC_CHECK_HEADERS(header2.h header3.h, [], [], address@hidden:@include 
"header1.h"]])])
+[AC_CHECK_HEADERS(header2.h header3.h, [], [], address@hidden:@include 
"header1.h"]])])
 
 AT_CHECK_AUTOCONF([-W obsolete])
 AT_CHECK_AUTOHEADER
-AT_CHECK_CONFIGURE
+AT_CHECK_CONFIGURE([CPPFLAGS=-I.])
 AT_CHECK_ENV
 AT_CHECK_DEFINES(
 [#define HAVE_HEADER2_H 1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]