Re: Aclocal bug?

Stepan Kasal <[email protected]>
Newsgroups gmane.comp.gnu.m4.patches,gmane.comp.sysutils.automake.bugs,gmane.comp.sysutils.autoconf.bugs
Organization <><
Message-ID <[email protected]>
Hello Gary,

wow this is an interesting bug, I enjoyed analysing it!

[Ccing bug-autoconf, because a check has to be added to Autoconf's
configure.
Ccing also bug-gnu-gettext, though I'm not sure whether an action is
needed for gettext.m4.]

On Wed, Nov 08, 2006 at 11:49:31PM -0600, Gary V. Vaughan wrote:
> On 8 Nov 2006, at 13:17, Ralf Wildenhues wrote:
> >* Gary V. Vaughan wrote on Wed, Nov 08, 2006 at 06:34:45AM CET:

> >>configure.ac:147: warning: AM_INTL_SUBDIR is m4_require'd but not
> >>m4_defun'd

I tried to reproduce your bug, and I succeeded!  Actually, it was
because I'm still using Fedora Core 4 and have m4 1.4.3.

> As I haven't built CVS m4 yet, the only binary in my path is the Apple
> shipped m4-1.4.2 in /usr/bin.

The cause is the following bug:

$ echo "ifdef(\`MAC', bug)" |m4 --trace=MAC
bug

I observed it in 1.4.[34], while 1.4.5 seems to be fixed.

To build m4 HEAD, upgrade to m4 >= 1.4.5 first and things will just
work!

I think that Autoconf should require m4 >= 1.4.5.

(Autoconf's confgiure should check for it; should it be done in
m4/m4.m4 in AM_PROG_GNU_M4, or in configure.ac?)

A detailed explanation:
-----------------------

autoconf calls autom4te with (among other options)

	--preselect AM_GNU_GETTEXT_INTL_SUBDIR

which is trasformed to --trace=AM_GNU_GETTEXT_INTL_SUBDIR on the m4
command line.  And because the expansion of AM_GNU_GETTEXT([external])
contains something like (see ltdl/m4/gettext.m4):

	ifdef([AM_GNU_GETTEXT_INTL_SUBDIR],
	      [AC_REQUIRE([AM_INTL_SUBDIR])])

the buggy m4 expands AM_INTL_SUBDIR though it should not.

At that point, an error occures, because the definition of
AM_INTL_SUBDIR has not been copied to aclocal.m4.

When aclocal determined the list of needed macros, it called
	autom4te --language Autoconf-without-aclocal-m4
which does not include the above --preselect option.
Consequently, the `ifdef' was correctly evaluated as false,
AM_INTL_SUBDIR was not expanded, so aclocal has not included it in
aclocal.m4.

But why has not this bug hit before?
With Autoconf <= 2.60 `--language Autoconf-without-aclocal-m4'
included all the Autoconf --preselect options and thus aclocal has
observed the same incorrect expansion of AM_INTL_SUBDIR as autoconf,
and all seemed to work OK.

> >Cheers, and I'll try following the riding blog... ;-)

Oh, it must be cool, I shall really look there.

> I've spent the last 12 hours in the saddle, so it'll be another 24
> hours until the next entry :-)

Great.  I wish you safe ride without any accident!

Have a nice day,
	Stepan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.