[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: outdated m4sugar

From: Joel E. Denny
Subject: Re: outdated m4sugar
Date: Fri, 11 Jul 2008 05:00:42 -0400 (EDT)

Hi Eric,

On Thu, 10 Jul 2008, Eric Blake wrote:

> Right now, the latest bison sources are incompatible with the latest m4 
> sources.  When I built bison with the latest m4.git (will become m4 1.6), the 
> change from LIFO to FIFO m4wrap (done in order to make m4 obey POSIX) trips 
> up 
> a fresh build of bison:

> stdin:1: error: m4_init: unbalanced m4_divert_push:
> stdin:1: m4_divert_push: KILL
> stdin:1: the top level
> /home/eblake/bison/src/bison: subsidiary program `/usr/local/bin/m4' failed 
> (exit status 1)

Patching Bison so that it works with either LIFO or FIFO m4wrap is 
straight-forward.  I just removed the code in m4_wrap in m4_init and 
rewrote Bison to invoke it after processing the skeletons.  Only one use 
of m4wrap remains, and so order no longer matters.  Bison's make check 
then passes for m4 1.4.6 or m4 built from today's git sources.

For the new m4, I had to update m4sugar.m4 for the rename of symbols to 
m4symbols.  I haven't figured out why, but this change doesn't hurt with 
m4 1.4.6.

I also had to make Bison pass -g to m4 just in case POSIXLY_CORRECT is 
set.  This does not work with m4 1.4.6, but Bison could just unset 
POSIXLY_CORRECT when invoking m4 if we need to support m4 1.4.6 for some 

I can apply a patch later if this is the way we want to go.

Btw, HACKING in m4's latest git sources says it depends on Automake 
1.10.1, which does not appear to provide the pkglibexecdir feature you 
requested a couple of years ago.  That stumped me for a while.

> At any rate, I'm 
> debating about making bison a show-stopper for the release of m4 1.6 (ie. I'm 
> reluctant to release m4 1.6 today, since it would mean the latest released 
> versions of bison and m4 would be incompatible).

If I just patch Bison as I described above and then push Bison 2.4 out, 
you could then release m4 1.6.  However, I had hoped to wait longer before 
2.4 for several reasons: more user feedback on 2.3b, documenting XML 
support, and fixing some internationalization problems (the error messages 
we moved/added to the skeletons are the most difficult problem).  Maybe 
these things (except the recent internationalization bug report) will just 
have to wait for 2.5.

> Also, I'm considering making m4 1.6 treat the -d command-line option in a 
> position-dependent manner.

Sure, we can fix that too.  But why not give it a different name in order 
not to break backward compatibility?  Just a thought.  I'm not too 
concerned for Bison here because --trace is undocumented for users.

> Meanwhile, bison uses a check for m4 1.3's ability to use frozen files 
> (m4/m4.m4, also borrowed from autoconf), even though bison itself does not 
> appear to use frozen files.  I don't know how well the current BSD m4 would 
> fare with bison's m4 usage patterns

Bison's README says Bison requires GNU M4.  (But I've been meaning to 
update it to say 1.4.6 as we've been saying in release announcements.)

> I am willing to file copyright papers and help in the effort of updating 
> bison's usage of m4sugar, if you would like, since I maintain GNU m4 and made 
> the bulk of the autoconf m4sugar improvements over the past 3 years.

Thanks!  Actually, we probably need to do copyright papers for you anyway 
because of your previous patch.

However, of the issues you've mentioned, updating m4sugar seems like the 
least pressing.  We can handle it gradually if it turns out to be 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]