[PATCH 2/2] autoconf: Properly quote logged command line

Eric Blake <[email protected]>
Newsgroups gmane.comp.sysutils.autoconf.patches,gmane.comp.sysutils.autoconf.bugs
Message-ID <[email protected]>
We were previously logging the wrong command line if the user
invoked any argument with spaces, making it difficult to
re-invoke configure with the same complex arguments. To reproduce,
open any autoconf-using project and run:

$ ./configure FLAGS='foo bar' >/dev/null && grep -m1 /configure config.log
  $ ./configure FLAGS=foo bar

Now we get the expected output:
  $ ./configure 'FLAGS=foo bar'

(Okay, it would be prettier as FLAGS='foo bar' in the output, by
delaying the opening ' until after the first non-alphanumeric or =,
but that is more expensive to produce, and makes no difference to
shell parsing of the pasted line.)

* lib/autoconf/general.m4 (_AC_INIT_CONFIG_LOG): Use _AS_INVOCATION.
* lib/autoconf/status.m4 (_AC_OUTPUT_CONFIG_STATUS): Likewise.
Reported by Kevin Brubeck Unhammer <[email protected]>

Signed-off-by: Eric Blake <[email protected]>
---

I wonder if it would also be worth updating these two logging points
to include the output of 'date' as a (rough) timestamp of when the
recorded invocation started.

 lib/autoconf/general.m4 | 3 ++-
 lib/autoconf/status.m4  | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4
index ef6285d..bac9fcd 100644
--- a/lib/autoconf/general.m4
+++ b/lib/autoconf/general.m4
@@ -1183,6 +1183,7 @@ fi])dnl
 m4_define([_AC_INIT_CONFIG_LOG],
 [m4_divert_text([INIT_PREPARE],
 [m4_define([AS_MESSAGE_LOG_FD], 5)dnl
+_AS_INVOCATION
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
@@ -1191,7 +1192,7 @@ It was created by m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])dnl
 $as_me[]m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]), which was
 generated by m4_PACKAGE_STRING.  Invocation command line was

-  $ $[0] $[@]
+  $as_invocation

 _ACEOF
 exec AS_MESSAGE_LOG_FD>>config.log
diff --git a/lib/autoconf/status.m4 b/lib/autoconf/status.m4
index 308d3d8..f692b6d 100644
--- a/lib/autoconf/status.m4
+++ b/lib/autoconf/status.m4
@@ -1334,6 +1334,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 [#] Save the log message, to keep $[0] and so on meaningful, and to
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
+_AS_INVOCATION
 ac_log="
 This file was extended by m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])dnl
 $as_me[]m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]), which was
@@ -1343,7 +1344,7 @@ generated by m4_PACKAGE_STRING.  Invocation command line was
   CONFIG_HEADERS  = $CONFIG_HEADERS
   CONFIG_LINKS    = $CONFIG_LINKS
   CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $[0] $[@]
+  $as_invocation

 on `(hostname || uname -n) 2>/dev/null | sed 1q`
 "
-- 
2.9.3
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.