automake-ng
[Top][All Lists]
Advanced

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

Re: [Automake-NG] [PATCH] [ng] maintainer-mode: remove it altogether


From: Stefano Lattarini
Subject: Re: [Automake-NG] [PATCH] [ng] maintainer-mode: remove it altogether
Date: Fri, 10 Aug 2012 13:23:14 +0200

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



reply via email to

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