Hi there,
we have a project where we use the configure script to search for some helper
tools and write the paths to the package.m4 for the autotest test suite. We do
this with
configure.ac:
AC_PATH_PROGS(WGET, [wget], not found)
AC_PATH_PROGS(HEAD, [head], not found)
AC_PATH_PROGS(TAIL, [tail], not found)
...
AC_CONFIG_FILES(tests/package.m4)
tests/package.m4.in:
m4_define([WGET], [...@wget@])
m4_define([HEAD], [...@head@])
m4_define([TAIL], [...@tail@])
...
A testcase using WGET can then check whether or not it is set to "not found"
and either continue the test or skip it.
This all works, but if (by accident), a check in configure.ac is deleted, say
than one for WGET, then tests/package.m4 ends up with an unresolved
substitution:
m4_define([WGET], [...@wget@])
Then, creating the test suite using the makefile target
$(TESTSUITE): $(srcdir)/testsuite.at
$(AUTOM4TE) --language=autotest -I '$(srcdir)' -o [email protected]
[email protected]
mv [email protected] $@
runs into an infinite loop, allocating lots of memory. I attached a zip file
containing the files and the command that reproduce this result.
I have very little knowledge about what's going on in autom4te, and I know that
this scenario is a user error. However, I think that Autoconf should give a
warning if substitution remain unresolved -- anything but an infinite loop
would be helpful.
More information:
m4 (GNU M4) 1.4.13
autoconf (GNU Autoconf) 2.65
Best regards,
Niels.