Hello automakers. Even with this patch of mine applied: <http://lists.gnu.org/archive/html/automake-patches/2010-08/msg00151.html> there are still problems when using non-default autoconf and autom4te to build and test automake. For example, the tests `missing.test' and `missing2.test' fail (see attached logs). This is mostly a testsuite problem/limitation, but we should deal with it nonetheless.
I see three possibilities: - Use `...@autoconf@' and `...@autom4te@' instead of plain `autoconf' and `autom4te' in `automake.in' and `aclocal.in'. While this was my first idea, I soon realized that it's a *very bad* idea, likely to create far more problems than it solves. - Hack the failing tests to avoid the quasi-spurious failure. Not a good idea either, sounds like sweeping the dirt under carpet. - Hack the `tests/automake.in' and `tests/aclocal.in' to export AUTOCONF and AUTOMA4TE to respectively `...@autoconf@' and `...@autom4te@', unless they are already exported. This is the way to go IMO. Also, we should extend the automake documentation with a section explaining how to use automake with non-default autoconf and autom4te. At this point, my idea would be to drop my previous patch, and follow this "roadmap": 1. Add a tests that fails if aclocal-used autoconf and testsuite-used autoconf don't match; this test is expected to fail with my current setup (bootstrap-time and configure-time overridden $AUTOCONF and $AUTOMA4TE, but no AUTOCONF nor AUTOM4TE in the environment). 2. Add the tests intoduced by my previous version of the patch; verify that all of them still fail at this point (and declare them as xfailing). 3. Apply the changes to `m4/init.m4' and `lib/am/configure.am' introduced by my previous patch; see that the tests introduced in step 2 now pass. 4. Do the fix to `tests/automake.in' and `tests/aclocal.in', and verify that the test added in step 1 now passes. 5. Do the documentation improvement described above (maybe with some help ;-). 6. Re-run the whole testsuite. Opinions? Regards, Stefano
FAIL: missing.test (exit: 2) ============================ /home/stefano/src/automake/tests:/home/stefano/go/bin:/home/stefano/bin/linux:/home/stefano/bin:/usr/local/bin:/opt/bin:/usr/lib/jvm/java-6-sun-1.6.0.20/bin:/usr/games:/usr/bin:/usr/sbin:/bin:/sbin === Running test ./missing.test ++ pwd /home/stefano/src/automake/tests/missing.dir + set -e + cat + : + aclocal-1.11 -Werror + /opt/bleedingedge/bin/autoconf aclocal.m4:16: warning: this file was generated for autoconf 2.65. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'. + automake-1.11 --foreign -Werror -Wall --add-missing + MYAUTOCONF='./missing --run /opt/bleedingedge/bin/autoconf' + unset AUTOCONF + ./configure 'AUTOCONF=./missing --run /opt/bleedingedge/bin/autoconf' checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes configure: creating ./config.status config.status: creating Makefile + make make: Nothing to be done for `all'. + sleep 2 + echo 'AC_PREREQ(9999)' + make distdir cd . && /bin/sh /home/stefano/src/automake/tests/missing.dir/missing --run automake-1.11 --foreign aclocal.m4:16: warning: this file was generated for autoconf 2.65. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'. aclocal.m4:619: error: Autoconf version 9999 or higher is required aclocal.m4:619: the top level autom4te: /usr/bin/m4 failed with exit status: 63 WARNING: `/opt/bleedingedge/bin/autoconf' is needed, and is probably too old. You might have modified some files without having the proper tools for further handling them. Check the `README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing `/opt/bleedingedge/bin/autoconf' program. automake: ./missing failed with exit status: 1 make: *** [Makefile.in] Error 1 + exit_status=2 + set +e + cd /home/stefano/src/automake/tests + case $exit_status,$keep_testdirs in + test 0 '!=' 0 + echo 'missing: exit 2' missing: exit 2 + exit 2
FAIL: missing2.test (exit: 2) ============================= /home/stefano/src/automake/tests:/home/stefano/go/bin:/home/stefano/bin/linux:/home/stefano/bin:/usr/local/bin:/opt/bin:/usr/lib/jvm/java-6-sun-1.6.0.20/bin:/usr/games:/usr/bin:/usr/sbin:/bin:/sbin === Running test ./missing2.test ++ pwd /home/stefano/src/automake/tests/missing2.dir + set -e + cat + : + : + aclocal-1.11 -Werror + /opt/bleedingedge/bin/autoconf aclocal.m4:16: warning: this file was generated for autoconf 2.65. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'. + automake-1.11 --foreign -Werror -Wall --add-missing + MYAUTOCONF='./missing --run /opt/bleedingedge/bin/autoconf' + unset AUTOCONF + ./configure 'AUTOCONF=./missing --run /opt/bleedingedge/bin/autoconf' checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes configure: creating ./config.status config.status: creating Makefile + make make: Nothing to be done for `all'. + sleep 2 + echo 'AC_PREREQ(9999)' + make distdir cd . && /bin/sh /home/stefano/src/automake/tests/missing2.dir/missing --run aclocal-1.11 v.m4:1: error: Autoconf version 9999 or higher is required v.m4:1: the top level autom4te: /usr/bin/m4 failed with exit status: 63 aclocal: autom4te failed with exit status: 63 WARNING: `aclocal-1.11' is probably too old. You should only need it if you modified `acinclude.m4' or `configure.in'. You might want to install the `Automake' and `Perl' packages. Grab them from any GNU archive site. cd . && /bin/sh /home/stefano/src/automake/tests/missing2.dir/missing --run automake-1.11 --foreign aclocal.m4:16: warning: this file was generated for autoconf 2.65. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'. v.m4:1: error: Autoconf version 9999 or higher is required v.m4:1: the top level autom4te: /usr/bin/m4 failed with exit status: 63 WARNING: `/opt/bleedingedge/bin/autoconf' is needed, and is probably too old. You might have modified some files without having the proper tools for further handling them. Check the `README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing `/opt/bleedingedge/bin/autoconf' program. automake: ./missing failed with exit status: 1 make: *** [Makefile.in] Error 1 + exit_status=2 + set +e + cd /home/stefano/src/automake/tests + case $exit_status,$keep_testdirs in + test 0 '!=' 0 + echo 'missing2: exit 2' missing2: exit 2 + exit 2