]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
Relax AC_INIT requirements for PACKAGE and VERSION strings again.
authorRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Mon, 19 Jul 2010 21:50:45 +0000 (15:50 -0600)
committerEric Blake <eblake@redhat.com>
Mon, 19 Jul 2010 23:32:04 +0000 (17:32 -0600)
* lib/m4sugar/m4sh.m4 (AS_LITERAL_HEREDOC_IF): New macro.
(_AS_LITERAL_HEREDOC_IF, _AS_LITERAL_HEREDOC_IF_YES)
(_AS_LITERAL_HEREDOC_IF_NO): New helper macros.
* lib/autoconf/general.m4 (_AC_INIT_PACKAGE): Use
AS_LITERAL_HEREDOC_IF for PACKAGE and VERSION strings.
* tests/base.at (AC_INIT with unusual version strings): New test.
* tests/m4sh.at (AS@&t@_LITERAL_IF): Extend test.
* NEWS: Update.

Signed-off-by: Eric Blake <eblake@redhat.com>
ChangeLog
NEWS
lib/autoconf/general.m4
lib/m4sugar/m4sh.m4
tests/base.at
tests/m4sh.at

index ca338772bf2faadbf74b01951a3c98046c434c5a..9d7889041ff440206fead0c7ade451f0d581ea43 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2010-07-19  Eric Blake  <eblake@redhat.com>
+       and Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Relax AC_INIT requirements for PACKAGE and VERSION strings again.
+       * lib/m4sugar/m4sh.m4 (AS_LITERAL_HEREDOC_IF): New macro.
+       (_AS_LITERAL_HEREDOC_IF, _AS_LITERAL_HEREDOC_IF_YES)
+       (_AS_LITERAL_HEREDOC_IF_NO): New helper macros.
+       * lib/autoconf/general.m4 (_AC_INIT_PACKAGE): Use
+       AS_LITERAL_HEREDOC_IF for PACKAGE and VERSION strings.
+       * tests/base.at (AC_INIT with unusual version strings): New test.
+       * tests/m4sh.at (AS@&t@_LITERAL_IF): Extend test.
+       * NEWS: Update.
+
 2010-07-19  Eric Blake  <eblake@redhat.com>
 
        Fix testsuite failures from previous patch.
diff --git a/NEWS b/NEWS
index 97c5495d4e9f2400d99fe0087f01af50dd93f24a..bf64a99b2fecad9078cab5c899d2828800b1f563 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,14 @@ GNU Autoconf NEWS - User visible changes.
 ** AC_PREPROC_IFELSE now keeps the preprocessed output in the conftest.i
    file for inspection by the commands in the ACTION-IF-TRUE argument.
 
+** AC_INIT again allows parentheses and other characters that are literal
+   in both quoted and unquoted here-documents in its PACKAGE and
+   VERSION arguments.  This is relevant for packages not using these
+   strings nor products like PACKAGE_STRING in other contexts, e.g.,
+   for Automake, and may be subject to further restrictions in the
+   future.  Regression introduced in 2.66.
+
+
 * Major changes in Autoconf 2.66 (2010-07-02) [stable]
   Released by Eric Blake, based on git versions 2.65.*.
 
index 5706d6959fd8ce9adc8d48cd10dd0a11d28d751b..2873660119c1fa44cbc235bce71807d2d6dfc5d7 100644 (file)
@@ -229,8 +229,10 @@ AU_ALIAS([AC_HELP_STRING], [AS_HELP_STRING])
 # _AC_INIT_PACKAGE(PACKAGE-NAME, VERSION, BUG-REPORT, [TARNAME], [URL])
 # ---------------------------------------------------------------------
 m4_define([_AC_INIT_PACKAGE],
-[AS_LITERAL_IF([$1], [], [m4_warn([syntax], [AC_INIT: not a literal: $1])])
-AS_LITERAL_IF([$2], [],  [m4_warn([syntax], [AC_INIT: not a literal: $2])])
+[AS_LITERAL_HEREDOC_IF([$1], [],
+                      [m4_warn([syntax], [AC_INIT: not a literal: $1])])
+AS_LITERAL_HEREDOC_IF([$2], [],
+                     [m4_warn([syntax], [AC_INIT: not a literal: $2])])
 AS_LITERAL_IF([$3], [],  [m4_warn([syntax], [AC_INIT: not a literal: $3])])
 m4_ifndef([AC_PACKAGE_NAME],
          [m4_define([AC_PACKAGE_NAME],     [$1])])
index 6fbc9e13c63d1218998c097512a5e49763f45ed5..3cc868cf53627787ac014897db7cebd71962cf9a 100644 (file)
@@ -1592,6 +1592,23 @@ m4_define([_AS_LITERAL_IF_NO], [$2])
 m4_define([AS_LITERAL_WORD_IF],
 [_AS_LITERAL_IF(m4_expand([$1]))([$4], [$3], [$2])])
 
+# AS_LITERAL_HEREDOC_IF(EXPRESSION, IF-LITERAL, IF-NOT-LITERAL)
+# -------------------------------------------------------------
+# Like AS_LITERAL_IF, except that a string is considered literal
+# if it results in the same output in both quoted and unquoted
+# here-documents.
+m4_define([AS_LITERAL_HEREDOC_IF],
+[_$0(m4_expand([$1]))([$2], [$3])])
+
+m4_define([_AS_LITERAL_HEREDOC_IF],
+[m4_if(m4_index([$1], [@S|@]), [-1],
+  [m4_if(m4_index(m4_translit([[$1]], [\`], [$]), [$]), [-1],
+    [$0_YES], [$0_NO])],
+  [$0_NO])])
+
+m4_define([_AS_LITERAL_HEREDOC_IF_YES], [$1])
+m4_define([_AS_LITERAL_HEREDOC_IF_NO], [$2])
+
 
 # AS_TMPDIR(PREFIX, [DIRECTORY = $TMPDIR [= /tmp]])
 # -------------------------------------------------
index 8f6e30fac0f6efc48784c92da3f652b85a8fc33e..ac4ab27b185db8fdaa368c86d435a7cec83aab26 100644 (file)
@@ -219,6 +219,27 @@ AT_CHECK([grep "^PACKAGE_TARNAME='fu'\$" configure], [], [ignore])
 AT_CLEANUP
 
 
+## ------------------------------------- ##
+## AC_INIT with unusual version strings. ##
+## ------------------------------------- ##
+
+AT_SETUP([AC_INIT with unusual version strings])
+
+AT_DATA([configure.ac],
+[[AC_INIT([GNU String++ with spaces (foo)],
+         [2.48++ (2010-07-03)], [http://clisp.cons.org/], [clisp])
+AC_OUTPUT
+]])
+
+AT_CHECK_AUTOCONF([-Werror])
+AT_CHECK_CONFIGURE([-q])
+AT_CHECK_CONFIGURE([--help])
+AT_CHECK_CONFIGURE([--version])
+AT_CHECK([./config.status --version], [], [ignore])
+
+AT_CLEANUP
+
+
 ## -------------- ##
 ## AC_COPYRIGHT.  ##
 ## -------------- ##
index 2f7933244a02c2eaaf35dc4fe78bad0eec73658b..52ab4ee822481866cffb28507a55a2dd0b9bf1a4 100644 (file)
@@ -1119,7 +1119,7 @@ AT_CLEANUP
 ## --------------- ##
 
 AT_SETUP([AS@&t@_LITERAL_IF])
-AT_KEYWORDS([m4sh AS@&t@_LITERAL_WORD_IF])
+AT_KEYWORDS([m4sh AS@&t@_LITERAL_WORD_IF AS@&t@_LITERAL_HEREDOC_IF])
 
 AT_DATA_M4SH([script.as], [[dnl
 AS_INIT
@@ -1141,9 +1141,17 @@ m4_define([mac], [l``it])
 echo AS_LITERAL_IF([mac], [ERR], [ok]) 13
 echo AS_LITERAL_IF([mac], [ERR1], [ok], [ERR2]) 14
 echo AS_LITERAL_IF([   a ][
-b], [ok], [ok]) 15
+b], [ok], [ERR]) 15
 echo AS_LITERAL_WORD_IF([      a ][
 b], [ERR], [ok]) 16
+echo AS_LITERAL_HEREDOC_IF([   a ][
+b], [ok], [ERR]) 17
+echo AS_LITERAL_IF([(a)], [ERR], [ok]) 18
+echo AS_LITERAL_WORD_IF([(a)], [ERR], [ok]) 19
+echo AS_LITERAL_HEREDOC_IF([(a)], [ok], [ERR]) 20
+echo AS_LITERAL_IF([@S|@a], [ERR], [ok]) 21
+echo AS_LITERAL_WORD_IF([@S|@a], [ERR], [ok]) 22
+echo AS_LITERAL_HEREDOC_IF([@S|@a], [ERR], [ok]) 23
 ]])
 
 AT_CHECK_M4SH
@@ -1164,6 +1172,13 @@ ok 13
 ok 14
 ok 15
 ok 16
+ok 17
+ok 18
+ok 19
+ok 20
+ok 21
+ok 22
+ok 23
 ]])
 
 AT_CLEANUP