On 08/09/2012 02:13 PM, Stefano Lattarini wrote: > The best explanation for this move is given by excerpts from the > Automake manual itself: > > Several years ago François Pinard pointed out several arguments > against this AM_MAINTAINER_MODE macro. Most of them relate to > insecurity. By removing dependencies you get non-dependable builds: > changes to sources files can have no effect on generated files and > this can be very confusing when unnoticed. He adds that security > shouldn't be reserved to maintainers (what '--enable-maintainer-mode' > suggests), on the contrary. If one user has to modify a Makefile.am, > then either Makefile.in should be updated or a error should be output > (this is what Automake uses the 'missing' script for) but the last > thing you want is that nothing happens and the user doesn't notice > it (which is exactly what happens when rebuild rules are disabled by > AM_MAINTAINER_MODE). > > Jim Meyering, the inventor of the AM_MAINTAINER_MODE macro was swayed > by François's arguments, and got rid of AM_MAINTAINER_MODE in all of > his packages. > > Since in Automake-NG we are breaking backward-compatibility in several > ways already, this is a good occasion to get rid of another obsolescent, > historical-reasons-only, more-dangerous-than-useful feature. > > Admittedly, the manual went on saying: > > Still many people continue to use AM_MAINTAINER_MODE, because it > helps them working on projects where all files are kept under > version control, and because missing isn't enough if you have the > wrong version of the tools. > > But then, the right solutions for using lies not in the use of the > brittle AM_MAINTAINER_MODE macro; such solutions are indeed already > explained in another section of the manual (in the section "CVS and > generated files"): > > In distributed development, developers are likely to have different > version of the maintainer tools installed. In this case rebuilds > triggered by timestamp lossage will lead to spurious changes to > generated files. There are some popular solutions to this: > > - All developers should use the same versions, so that the rebuilt > files are identical to files in CVS. (This starts to be difficult > when each project you work on uses different versions). > > - Or people use a script to fix the timestamp after a checkout (the > GCC folks have such a script). > > The use of such a "timestamp-fixing" script is also suggested earlier > in the section, in the discussion about the merits and limits of the > 'missing' script. > > * NG-NEWS: Update. > * doc/automake-ng.texi: Likewise; among the other things ... > (maintainer-mode): ... rename this node ... > (maintainer tools): ... like this. > * m4/maintainer.m4: Delete. > * Makefile.am (dist_automake_ac_DATA): Delete. > * automake.in ($seen_maint_mode): Remove this global variable. > (scan_autoconf_trace): Don't trace 'AM_MAINTAINER_MODE'. > (read_am_file): Don't special-handle '@MAINT@' substitutions; > which were an anachronism anyway, according to pre-existing > comments. > (preprocess_file): Drop 'MAINTAINER-MODE' transform. > * lib/am/configure.am: Remove all uses of the %MAINTAINER-MODE% > transform. > * lib/am/remake-hdr.am: Likewise. > * lib/am/texi-vars.am: Likewise. > * lib/am/lex.am, lib/am/yacc.am: Likewise, and simplify dropping > the definition and use of (respectively) '$(am.lex.maybe-skip)' > and '$(am.yacc.maybe-skip)'. > * t/condlib.sh (configure.ac): Drop AM_MAINTAINER_MODE use. > * t/flavor.sh: Likewise, and drop '--enable-maintainer-mode' > from the './configure' invocation. > * t/lex-pr204.sh: Remove as obsolete. > * t/yacc-pr204.sh: Likewise. > * t/maintmode-configure-msg.sh: Likewise. > * t/mmode.sh: Likewise. > * t/mmodely.sh: Likewise. > * t/remake5.sh: Likewise. > * t/lex-nodist.sh: Fix header comments to account for some of > the deleted tests. > * t/yacc-nodist.sh: Likewise. > Pushed now.
Regards, Stefano
