mirror of
git://git.sv.gnu.org/autoconf
synced 2025-01-06 10:25:53 +08:00
Fix up AC_INIT vs. " issues, and document it.
* doc/autoconf.texi (Initializing configure): Improve documentation on argument restrictions. * NEWS: Tweak information. * lib/autoconf/general.m4 (_AC_INIT_GENERAL): New macro, that also rejects literal ". (_AC_INIT_PACKAGE): Use it to plug hole in last patch. * tests/base.at (AC_INIT with unusual version strings): Enhance test. Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
f4f4a26c01
commit
77469e1b54
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
||||
2010-07-19 Eric Blake <eblake@redhat.com>
|
||||
|
||||
Fix up AC_INIT vs. " issues, and document it.
|
||||
* doc/autoconf.texi (Initializing configure): Improve
|
||||
documentation on argument restrictions.
|
||||
* NEWS: Tweak information.
|
||||
* lib/autoconf/general.m4 (_AC_INIT_GENERAL): New macro, that also
|
||||
rejects literal ".
|
||||
(_AC_INIT_PACKAGE): Use it to plug hole in last patch.
|
||||
* tests/base.at (AC_INIT with unusual version strings): Enhance
|
||||
test.
|
||||
|
||||
2010-07-19 Eric Blake <eblake@redhat.com>
|
||||
and Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
|
10
NEWS
10
NEWS
@ -14,11 +14,11 @@ GNU Autoconf NEWS - User visible changes.
|
||||
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.
|
||||
in quoted and unquoted here-documents and in double-quoted strings
|
||||
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]
|
||||
|
@ -1844,9 +1844,12 @@ distribution tar ball names (e.g., @samp{autoconf}). It defaults to
|
||||
other than alphanumerics and underscores are changed to @samp{-}. If
|
||||
provided, @var{url} should be the home page for the package.
|
||||
|
||||
It is preferable that the arguments of @code{AC_INIT} be static, i.e.,
|
||||
there should not be any shell computation, but they can be computed by
|
||||
M4.
|
||||
The arguments of @code{AC_INIT} must be static, i.e., there should not
|
||||
be any shell computation, but they can be computed by M4 (the use of
|
||||
@code{m4_esyscmd} is permissible). This is because the package
|
||||
information strings are expanded at M4 time into several contexts, and
|
||||
must give the same text at shell time whether used in double-quoted
|
||||
strings, quoted here-documents, or unquoted here-documents.
|
||||
|
||||
The following M4 macros (e.g., @code{AC_PACKAGE_NAME}), output variables
|
||||
(e.g., @code{PACKAGE_NAME}), and preprocessor symbols (e.g.,
|
||||
|
@ -224,15 +224,20 @@ AU_ALIAS([AC_HELP_STRING], [AS_HELP_STRING])
|
||||
# The solution is to require AC_INIT in each of these macros. AC_INIT
|
||||
# has the needed magic so that it can't be expanded twice.
|
||||
|
||||
|
||||
# _AC_INIT_LITERAL(STRING)
|
||||
# ------------------------
|
||||
# Reject STRING if it cannot be used as-is in double-quoted strings,
|
||||
# as well as quoted and unquoted here-docs.
|
||||
m4_define([_AC_INIT_LITERAL],
|
||||
[m4_if(m4_index([$1], dnl font-lock"
|
||||
["])AS_LITERAL_HEREDOC_IF([$1], [-]), [-1-], [],
|
||||
[m4_warn([syntax], [AC_INIT: not a literal: $1])])])
|
||||
|
||||
# _AC_INIT_PACKAGE(PACKAGE-NAME, VERSION, BUG-REPORT, [TARNAME], [URL])
|
||||
# ---------------------------------------------------------------------
|
||||
m4_define([_AC_INIT_PACKAGE],
|
||||
[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])])
|
||||
[_AC_INIT_LITERAL([$1])
|
||||
_AC_INIT_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])])
|
||||
|
@ -226,16 +226,45 @@ AT_CLEANUP
|
||||
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_INIT([GNU String++ with spaces (foo)],
|
||||
[2.48++ (2010-07-03)], [http://clisp.cons.org/], [clisp])
|
||||
AC_OUTPUT
|
||||
]])
|
||||
|
||||
if echo 'ab*c' | grep -F 'ab*c' >/dev/null 2>&1; then
|
||||
FGREP="grep -F"
|
||||
else
|
||||
FGREP=fgrep
|
||||
fi
|
||||
|
||||
AT_CHECK_AUTOCONF([-Werror])
|
||||
AT_CHECK_CONFIGURE([-q])
|
||||
AT_CHECK_CONFIGURE([--help])
|
||||
AT_CHECK_CONFIGURE([--version])
|
||||
AT_CHECK([./config.status --version], [], [ignore])
|
||||
AT_CHECK_CONFIGURE([--version], [], [stdout])
|
||||
AT_CHECK([$FGREP 'GNU String++ with spaces (foo)' stdout], [], [ignore])
|
||||
AT_CHECK([$FGREP '2.48++ (2010-07-03)' stdout], [], [ignore])
|
||||
|
||||
AT_CHECK([./config.status --version], [], [stdout])
|
||||
AT_CHECK([$FGREP 'GNU String++ with spaces (foo)' stdout], [], [ignore])
|
||||
AT_CHECK([$FGREP '2.48++ (2010-07-03)' stdout], [], [ignore])
|
||||
|
||||
AT_DATA([configure.ac],
|
||||
[[AC_INIT([GNU "String++"],
|
||||
[2.48], [http://clisp.cons.org/], [clisp])
|
||||
AC_OUTPUT
|
||||
]])
|
||||
|
||||
AT_CHECK_AUTOCONF([-Werror], [1], [ignore], [stderr])
|
||||
AT_CHECK([grep 'AC_INIT: not a literal: ' stderr], [], [ignore])
|
||||
|
||||
AT_DATA([configure.ac],
|
||||
[[AC_INIT([GNU String++],
|
||||
["codename" 2.48], [http://clisp.cons.org/], [clisp])
|
||||
AC_OUTPUT
|
||||
]])
|
||||
|
||||
AT_CHECK_AUTOCONF([-Werror], [1], [ignore], [stderr])
|
||||
AT_CHECK([grep 'AC_INIT: not a literal: ' stderr], [], [ignore])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user