Readonly shell variables containing newlines break caching

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Readonly shell variables containing newlines break caching

Quinn Grier
It appears that a configure script tries to unset all shell variables
that contain newlines in a subshell as part of the caching code. This
causes the subshell to exit early if any of the variables is readonly.
At a minimum, this breaks caching.

Here is a configure.ac file that demonstrates the issue:

       AC_INIT(p, v)
       readonly x='
       '
       AC_OUTPUT

Here is the result with Autoconf 2.69:

       $ autoconf
       $ ./configure
       ./configure: line 1699: x: readonly variable
       configure: creating ./config.status
       ./configure: line 23: x: readonly variable

If you further compare using the --cache-file option with and without
the x variable being readonly, you'll find that the cache files differ.

Reply | Threaded
Open this post in threaded view
|

Re: Readonly shell variables containing newlines break caching

Eric Blake-3
On 08/03/2016 06:19 PM, Quinn Grier wrote:
> It appears that a configure script tries to unset all shell variables
> that contain newlines in a subshell as part of the caching code. This
> causes the subshell to exit early if any of the variables is readonly.

Autoconf in general is not expecting readonly variables, so it may be a
very difficult task to clean it up to work nicely with such a
restrictive environment.  Patches are welcome, but since the obvious
solution is "don't use readonly variables in an autoconf script", I'm
probably not going to be the one to write such patches.

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