Noah:
| `automake' can generate a Makefile.in that does not fit
| `configure' if the version of Autoconf it uses to trace
| `configure.ac' differs from the version used to generate
| `configure'.

The Autoconf version used by Automake should also be the same
used by aclocal.  Maybe aclocal could output some code in
aclocal.m4 to ensure that the autoconf version that reads
aclocal.m4 is the same as the version that was traced to
generate it.  

The consequences of such a test are not entirely clear to me,
but it looks like it would prevent the version mismatch we are
discussing:

- If you have another autoconf installed and try to update a
  Makefile.am, the rebuild rule will call automake which will
  will call autoconf which will barf on aclocal.m4 and exit 
  with $?=63, causing missing to take over.

- Likewise if you try to simply regenerate configure with a
  different autoconf version.

- If you update a dependence of aclocal.m4 (e.g., configure.ac,
  or M4 macros), all the build system will be regenerated with
  your tools.


On the implementation side, I guess the M4 fragment added by
aclocal.m4 would have to compare the value of m4_PACKAGE_VERSION
with the value traced (if that's possible) when aclocal was run.
(AC_PREREQ would only prevent downgrading autoconf without
rerunning automake, while we are discussing about upgrading it
too.)

In case this check doesn't sound appropriate for
non-automake-based package, we could also arrange that it be
only performed inside AM_INIT_AUTOMAKE.

-- 
Alexandre Duret-Lutz

Shared books are happy books.     http://www.bookcrossing.com/friend/gadl



Reply via email to