]> git.ipfire.org Git - thirdparty/automake.git/commit
[ng] maintainer-mode: remove it altogether
authorStefano Lattarini <stefano.lattarini@gmail.com>
Thu, 9 Aug 2012 10:15:01 +0000 (12:15 +0200)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Thu, 9 Aug 2012 12:13:14 +0000 (14:13 +0200)
commit00a383739e96db6d85ca0e9f0791249c5fb481d4
tree109bea40c6b612b422258985e2829cf9606dd1f1
parente7dcff829917ab8eccd91de3a84d44b7267cf5b0
[ng] maintainer-mode: remove it altogether

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.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
20 files changed:
Makefile.am
NG-NEWS
automake.in
doc/automake-ng.texi
lib/am/configure.am
lib/am/lex.am
lib/am/remake-hdr.am
lib/am/texi-vers.am
lib/am/yacc.am
m4/maintainer.m4 [deleted file]
t/condlib.sh
t/flavor.sh
t/lex-nodist.sh
t/lex-pr204.sh [deleted file]
t/maintmode-configure-msg.sh [deleted file]
t/mmode.sh [deleted file]
t/mmodely.sh [deleted file]
t/remake5.sh [deleted file]
t/yacc-nodist.sh
t/yacc-pr204.sh [deleted file]