autoconf-patches
[Top][All Lists]
Advanced

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

Re: AM_CONDITIONAL fails with line break at the end of $2


From: Eric Blake
Subject: Re: AM_CONDITIONAL fails with line break at the end of $2
Date: Thu, 17 Jul 2014 10:24:07 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0

[adding automake]

On 07/17/2014 10:00 AM, Dimitrios Apostolou wrote:
> Hello list,
> 
> the following snippet generates invalid shell code (and a cryptic error
> message) because of the line break right before the closing parenthesis.
> 
> AM_CONDITIONAL([HAVE_LIBXML2],
>     [test "x$with_libxml2" != xno &&
>      test "x$ac_cv_lib_xml2_xmlFirstElementChild" = xyes]
> )
> 

AM_CONDITIONAL is not an autoconf macro, and your patch is to an
automake file, so you mailed the wrong list.  But that's okay, I've
redirected it.

> 
> Generated code (semi-colon at beginning of line creates problems):
> 
>  if test "x$with_libxml2" != xno &&
>      test "x$ac_cv_lib_xml2_xmlFirstElementChild" = xyes
> ; then
>   HAVE_LIBXML2_TRUE=
>   HAVE_LIBXML2_FALSE='#'
> else
>   HAVE_LIBXML2_TRUE='#'
>   HAVE_LIBXML2_FALSE=
> fi
> 
> 
> The attached patch attempts to fix the issue, do you think it is the
> right approach?

I don't know if automake should work around your bad syntax, or if you
should just fix your configure.ac to use correct syntax to begin with. I
also wonder if automake could use AS_IF instead of open-coding the if to
try and take advantage of autoconf's smarts for trying to sanitize
conditions.

However, even autoconf's AS_IF current implementation prefers the 'if
cond; then' rather than 'if cond $newline then', so it is likewise not
robust to conditions ending in a spurious newline.  If changing AS_IF to
use newline separator does not increase configure size, I could see
making that change in autoconf.  I'll play with the idea.


> --- cond.m4   2014-07-17 17:46:37.741723897 +0200
> +++ cond.2.m4 2014-07-17 17:50:43.456076469 +0200
> @@ -13,17 +13,18 @@
>  [AC_PREREQ([2.52])dnl
>   m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
>         [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
>  AC_SUBST([$1_TRUE])dnl
>  AC_SUBST([$1_FALSE])dnl
>  _AM_SUBST_NOTMAKE([$1_TRUE])dnl
>  _AM_SUBST_NOTMAKE([$1_FALSE])dnl
>  m4_define([_AM_COND_VALUE_$1], [$2])dnl
> -if $2; then
> +if $2
> +then
>    $1_TRUE=
>    $1_FALSE='#'
>  else
>    $1_TRUE='#'
>    $1_FALSE=
>  fi
>  AC_CONFIG_COMMANDS_PRE(
>  [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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