[Top][All Lists]
[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
Re: [Automake-NG] [PATCH] [ng] maintainer-mode: remove it altogether,
Stefano Lattarini <=