[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
automatic update Makefile.am -> Makefile.in -> Makefile no longer workin
From: |
Bruno Haible |
Subject: |
automatic update Makefile.am -> Makefile.in -> Makefile no longer working |
Date: |
Thu, 21 Jun 2007 01:14:11 +0200 |
User-agent: |
KMail/1.5.4 |
Hi,
This error message
aclocal.m4:14: error: this file was generated for autoconf 2.61.
You have another version of autoconf.
is causing a major regression in the functioning of automake and the GNU
build system. Namely, a change in Makefile.am does not cause a corresponding
change to Makefile.in to happen during "make", in many circumstances.
Before automake-1.10, for ten years, you could make modifications to
Makefile.am, then type "make", and Makefile.in was updated, provided that
you had installed reasonably up-to-date versions of automake, autoconf, m4
and perl.
This is no longer the case.
It does not work any more if the version of autoconf that you have installed
is not *precisely* the same version as was used to generate the configure and
Makefile.in. And since there are 3 current releases of autoconf (2.59, 2.60,
2.61), you have a 2/3 chance of failing this criterion.
To reproduce: my system has
$ automake --version
automake (GNU automake) 1.10
$ autoconf --version
autoconf (GNU Autoconf) 2.61b
Download http://josefsson.org/libidn/releases/libidn-0.6.14.tar.gz,
unpack it, and do "./configure" and "make".
I'm not the author of this package, but I need to try a modification to
its Makefile.am. So I change it like this:
--- lib/Makefile.am.bak 2007-05-31 12:31:00.000000000 +0200
+++ lib/Makefile.am 2007-06-21 00:40:53.000000000 +0200
@@ -37,7 +37,7 @@
idn-int.h:
if test -n "$(STDINT_H)"; then \
- cp gl/stdint.h idn-int.h; \
+ sed -e s/include_next/include/ gl/stdint.h > idn-int.h; \
else \
echo '#include <stdint.h>' > idn-int.h; \
fi
Then:
$ rm lib/idn-int.h
$ make
What I expected, is that the new command for creating lib/idn-int.h gets
executed. Instead, the old command gets executed:
$ make
make all-recursive
make[1]: Entering directory `/build/libidn-0.6.14'
Making all in gl
make[2]: Entering directory `/build/libidn-0.6.14/gl'
cd .. && /bin/sh ./config.status gl/Makefile depfiles
config.status: creating gl/Makefile
config.status: executing depfiles commands
make[2]: Leaving directory `/build/libidn-0.6.14/gl'
make[2]: Entering directory `/build/libidn-0.6.14/gl'
make all-am
make[3]: Entering directory `/build/libidn-0.6.14/gl'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/build/libidn-0.6.14/gl'
make[2]: Leaving directory `/build/libidn-0.6.14/gl'
Making all in lib/gl
make[2]: Entering directory `/build/libidn-0.6.14/lib/gl'
cd ../.. && /bin/sh ./config.status lib/gl/Makefile depfiles
config.status: creating lib/gl/Makefile
config.status: executing depfiles commands
make[2]: Leaving directory `/build/libidn-0.6.14/lib/gl'
make[2]: Entering directory `/build/libidn-0.6.14/lib/gl'
make all-am
make[3]: Entering directory `/build/libidn-0.6.14/lib/gl'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/build/libidn-0.6.14/lib/gl'
make[2]: Leaving directory `/build/libidn-0.6.14/lib/gl'
Making all in lib
make[2]: Entering directory `/build/libidn-0.6.14/lib'
cd .. && /bin/sh /build/libidn-0.6.14/build-aux/missing --run automake-1.10
--gnits lib/Makefile
aclocal.m4:14: error: this file was generated for autoconf 2.61.
You have another version of autoconf. If you want to use that,
you should regenerate the build system entirely.
aclocal.m4:14: the top level
autom4te: /packages/gnu/bin/m4 failed with exit status: 63
automake-1.10: autoconf failed with exit status: 63
WARNING: `automake-1.10' is probably too old. You should only need it if
you modified `Makefile.am', `acinclude.m4' or `configure.ac'.
You might want to install the `Automake' and `Perl' packages.
Grab them from any GNU archive site.
cd .. && /bin/sh ./config.status lib/Makefile depfiles
config.status: creating lib/Makefile
config.status: executing depfiles commands
make[2]: Leaving directory `/build/libidn-0.6.14/lib'
make[2]: Entering directory `/build/libidn-0.6.14/lib'
if test -n "stdint.h"; then \
cp gl/stdint.h idn-int.h; \
else \
echo '#include <stdint.h>' > idn-int.h; \
fi
make all-am
make[3]: Entering directory `/build/libidn-0.6.14/lib'
/bin/sh ../libtool --tag=CC --mode=compile gcc
-DLOCALEDIR=\"/usr/local/share/locale\" -DHAVE_CONFIG_H -I. -I.. -I./gl -Igl
-g -O2 -MT nfkc.lo -MD -MP -MF .deps/nfkc.Tpo -c -o nfkc.lo nfkc.c
...
Are we now supposed to edit Makefile.in by hand each time we modify
Makefile.am?
Or are we supposed to have each autoconf release installed in a separate
directory, and before digging into a package, first look into the header of
the aclocal.m4 of that package for the version of autoconf being used, and
then set our PATH so as to have an autoconf from precisely that version
available in PATH?
Or is there an "obvious" workaround that I'm not seeing?
Bruno
- automatic update Makefile.am -> Makefile.in -> Makefile no longer working,
Bruno Haible <=
Re: automatic update Makefile.am -> Makefile.in -> Makefile no longer working, Noah Misch, 2007/06/21