automake-patches
[Top][All Lists]
Advanced

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

FYI: History/Timeline


From: Alexandre Duret-Lutz
Subject: FYI: History/Timeline
Date: Sun, 19 Sep 2004 23:30:29 +0200
User-agent: Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3.50 (gnu/linux)

I'm checking this in.

2004-09-19  Alexandre Duret-Lutz  <address@hidden>

        * doc/automake.texi (Timeline): New node.  Thanks to Karl and Tom
        for their comments on a preliminary version of this, Akim for
        digging out some old mails, and Jason Molenda for sending the note
        about Automake in Alias to Tom.
        (Releases): Rename `ac' to `acl', suggested by Akim.

Index: doc/automake.texi
===================================================================
RCS file: /cvs/automake/automake/doc/automake.texi,v
retrieving revision 1.51
diff -u -r1.51 automake.texi
--- doc/automake.texi   15 Sep 2004 22:03:38 -0000      1.51
+++ doc/automake.texi   19 Sep 2004 21:29:16 -0000
@@ -260,6 +260,7 @@
 
 History of Automake
 
+* Timeline::                    The Automake story.
 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
 * Releases::                    Statistics about Automake Releases
 
@@ -7888,10 +7889,753 @@
 Automake.
 
 @menu
+* Timeline::                    The Automake story.
 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
 * Releases::                    Statistics about Automake Releases
 @end menu
 
address@hidden Timeline
address@hidden Timeline
+
address@hidden @asis
address@hidden 1994-09-19 First CVS commit.
+
+If we can trust the CVS repository, David J. MacKenzie (djm) started
+working on Automake (or AutoMake, as it was spelt then) this Monday.
+
+The first version of the @command{automake} script looks as follows.
+
address@hidden
+#!/bin/sh
+
+status=0
+
+for makefile
+do
+  if test ! -f address@hidden@}.am; then
+    echo "automake: address@hidden@}.am: No such honkin' file"
+    status=1
+    continue
+  fi
+
+  exec 4> address@hidden@}.in
+
+done
address@hidden example
+
+From this you can already see that Automake will be about reading
address@hidden file and producing @file{*.in} files.  You cannot see
+anything else, but if you also know that David is the one who created
+Autoconf two years before you can guess the rest.
+
+Several commits follow, and by the end of the day Automake is
+reported to work for GNU fileutils and GNU m4.
+
+The modus operandi is the one that is still used today: variables
+assignments in @file{Makefile.am} files trigger injections of
+precanned @file{Makefile} fragments into the generated
address@hidden  The use of @file{Makefile} fragments was inspired
+by the 4.4BSD @command{make} and include files, however Automake aims
+to be portable and to conform to the GNU standards for @file{Makefile}
+variables and targets.
+
+At this point, the last release of Autoconf is version 1.11, and
+David is preparing to release Autoconf 2.0 in late October.  As a
+matter of fact, he will almost not touch Automake after September.
+
address@hidden 1994-11-05 David MacKenzie's last commit.
+
+At this point Automake is a 200 line portable shell script, plus 332
+lines of @file{Makefile} fragments.  In the @file{README}, David
+states his ambivalence between ``portable shell'' and ``more
+appropriate language'':
+
address@hidden
+I wrote it keeping in mind the possibility of it becoming an Autoconf
+macro, so it would run at configure-time.  That would slow
+configuration down a bit, but allow users to modify the Makefile.am
+without needing to fetch the AutoMake package.  And, the Makefile.in
+files wouldn't need to be distributed.  But all of AutoMake would.  So
+I might reimplement AutoMake in Perl, m4, or some other more
+appropriate language.
address@hidden quotation
+
+Automake is described as ``an experimental Makefile generator''.
+There is no documentation.  Adventurous users are refereed to example
+and patches needed to use Automake with GNU m4 1.3, fileutils 3.9,
+time 1.6, and development versions of find and indent.
+
+These examples seem to have been lost.  However at the time of writing
+(10 years later in September, 2004) the FSF still distributes a
+package that uses this version of Automake: check out GNU termutils
+2.0.
+
address@hidden 1995-11-12 Tom Tromey's first commit.
+
+After one year of inactivity, Tom Tromey takes over the package.
+Tom was working on GNU cpio back then, and doing this just for fun,
+having trouble finding a project to contribute to.  So while hacking
+he wanted to bring the @file{Makefile.in} up to GNU standards.  This
+was hard, and one day he saw Automake on @url{ftp://alpha.gnu.org/},
+grabbed it and tried it out.
+
+Tom didn't talk to djm about it until later, just to make sure he
+didn't mind if he did a release.  He did a bunch of early releases to
+the Gnits folks.
+
+Gnits was (and still is) totally informal, just a few GNU friends who
+Fran@,cois Pinard knew, who were all interested in making a common
+infrastructure for GNU projects, and shared a similar outlook on how
+to do it.  So they were able to make some progress.  It came along
+with Autoconf and extensions thereof, and then Automake from David and
+Tom (who were both gnitsians).  One of their ideas was to write a
+document paralleling the GNU standards, that was more strict in some
+ways and more detailed.  They never finished the GNITS standards, but
+the ideas mostly made their way into Automake.
+
address@hidden 1995-11-23 Automake 0.20
+
+Besides introducing automatic dependency tracking (@pxref{Dependency
+Tracking Evolution}), this version also supplies a 9-page manual.
+
+At this time @command{aclocal} and @code{AM_INIT_AUTOMAKE} did not
+exist, so many things had to be done by hand.  For instance here is
+what a configure.in (this is the former name of the
address@hidden we use today) must contain in order to use
+Automake 0.20:
+
address@hidden
+PACKAGE=cpio
+VERSION=2.3.911
+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
+AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
+AC_SUBST(PACKAGE)
+AC_SUBST(VERSION)
+AC_ARG_PROGRAM
+AC_PROG_INSTALL
address@hidden example
+
+(Today all of the above is achieved by @code{AC_INIT} and
address@hidden)
+
+Here is how programs are specified in @file{Makefile.am}:
+
address@hidden
+PROGRAMS = hello
+hello_SOURCES = hello.c
address@hidden example
+
+This looks pretty much like we do today, except the @code{PROGRAMS}
+variable has no directory prefix specifying where @file{hello} should
+be installed: all programs are installed in @code{$(bindir)}.
address@hidden can be used to specify programs that must be built
+but not installed (it is called @code{noinst_PROGRAMS} nowadays).
+
+Programs can be built conditionally using @code{AC_SUBST}itutions:
+
address@hidden
+PROGRAMS = @@progs@@
+AM_PROGRAMS = foo bar baz
address@hidden example
+
+(@code{AM_PROGRAMS} has since then been renamed to
address@hidden)
+
+Similarly scripts, static libraries, and data can built and installed
+using the @code{LIBRARIES}, @code{SCRIPTS}, and @code{DATA} variables.
+However @code{LIBRARIES} were treated a bit specially in that Automake
+did automatically supply the @file{lib} and @file{.a} prefixes.
+Therefore to build @file{libcpio.a}, one had to write
+
address@hidden
+LIBRARIES = cpio
+cpio_SOURCES = ...
address@hidden example
+
+Extra files to distribute must be listed in @code{DIST_OTHER} (the
+ancestor of @code{EXTRA_DIST}).  Also extra directories that are to be
+distributed should appear in @code{DIST_SUBDIRS}, but the manual
+describe this as a temporary ugly hack (today extra directories should
+also be listed in @code{EXTRA_DIST}, and @code{DIST_SUBDIRS} is used
+for another purpose, see @ref{Conditional Subdirectories}).
+
address@hidden 1995-11-26 Automake 0.21
+
+In less time that it takes to cook a frozen pizza, Tom rewrites
+Automake using Perl.  At this time Perl 5 is only one year old, and
+Perl 4.036 is in use at many sites.  Supporting several Perl versions
+has been a source of problems through the whole history of Automake.
+
+If you never used Perl 4, imagine Perl 5 without objects, without
address@hidden variables (only dynamically scoped @code{local} variables),
+without function prototypes, with function calls that needs to be
+prefixed with @code{&}, etc.  Traces of this old style can still be
+found in today's @command{automake}.
+
address@hidden 1995-11-28 Automake 0.22
address@hidden 1995-11-29 Automake 0.23
+
+Bug fixes.
+
address@hidden 1995-12-08 Automake 0.24
address@hidden 1995-12-10 Automake 0.25
+
+Releases are raining.  0.24 introduces the uniform naming scheme we
+use today, i.e., @code{bin_PROGRAMS} instead of @code{PROGRAMS},
address@hidden instead of @code{LIBLIBRARIES}, etc.  (However
address@hidden does not exist yet, @code{AM_PROGRAMS} is still
+in use; and @code{TEXINFOS} and @code{MANS} still have no directory
+prefixes.)  Adding support for prefixes like that was one of the major
+ideas in automake; it has lasted pretty well.
+
+AutoMake is renamed to Automake (Tom seems to recall it was Fran@,cois
+Pinard's doing).
+
+0.25 fixes a Perl 4 portability bug.
+
address@hidden 1995-12-18 Jim Meyering starts using Automake in GNU Textutils.
address@hidden 1995-12-31 Fran@,cois Pinard starts using Automake in GNU tar.
+
address@hidden 1996-01-03 Automake 0.26
address@hidden 1996-01-03 Automake 0.27
+
+Of the many change and suggestions sent by Fran@,cois Pinard and
+included in 0.26, the most important is perhaps the advise that to
+ease customization a user rule or variable definition should always
+override an Automake rule or definition.
+
+Gordon Matzigkeit and Jim Meyering are two other early contributors
+that have been sending fixes.
+
+0.27 fixes yet another Perl 4 portability bug.
+
address@hidden 1996-01-13 Automake 0.28
+
+Automake starts scanning @file{configure.in} for @code{LIBOBJS}
+support.  This is an important step because until this version
+Automake did only know about the @file{Makefile.am}s it processed.
address@hidden was Autoconf's world and the link between Autoconf
+and Automake had to be done by the @file{Makefile.am} author.  For
+instance if @file{config.h} was generated by @file{configure}, it was the
+package maintainer's responsibility to define the @code{CONFIG_HEADER}
+variable in each @file{Makefile.am}.
+
+Succeeding releases will rely more and more on scanning
address@hidden to better automate the Autoconf integration.
+
+0.28 also introduces the @code{AUTOMAKE_OPTIONS} variable and the
address@hidden and @code{--gnits} options, the later being stricter.
+
address@hidden 1996-02-07 Automake 0.29
+
+Thanks to @file{configure.in} scanning, @code{CONFIG_HEADER} is gone,
+and rebuild rules for @file{configure}-generated file are
+automatically output.
+
address@hidden and @code{MANS} converted to the uniform naming
+scheme.
+
address@hidden 1996-02-24 Automake 0.30
+
+The test suite is born.  It contains 9 tests.  From now on test cases
+will be added pretty much regularly (@pxref{Releases}), and this
+proved to be really helpful later on.
+
address@hidden finally replaces @code{AM_PROGRAMS}.
+
+All the third-party Autoconf macros, written mostly by Fran@,cois
+Pinard (and later Jim Meyering), are distributed in Automake's
+hand-written @file{aclocal.m4} file.  Package maintainers are expected
+to extract the necessary macros from this file.  (In previous version
+you had to copy and paste them from the manual...)
+
address@hidden 1996-03-11 Automake 0.31
+
+The test suite in 0.30 was run via a long @code{check-local} rule.  Upon
+Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output
+whenever the @code{TESTS} variable is defined.
+
address@hidden is renamed to @code{EXTRA_DIST}, and the @code{check_}
+prefix is introduced.  The syntax is now the same as today.
+
address@hidden 1996-03-15 Gordon Matzigkeit starts writing libtool.
+
address@hidden 1996-04-27 Automake 0.32
+
address@hidden targets are introduced; an idea from Dieter Baron.
+
address@hidden files, which were output in the build directory are
+now built in the source directory, because they are distributed.  It
+seems these files like to move back and forth as that will happen
+again in future versions.
+
address@hidden 1996-05-18 Automake 0.33
+
+Gord Matzigkeit's main two contributions:
+
address@hidden
address@hidden very preliminary libtool support
address@hidden the distcheck rule
address@hidden itemize
+
+Although they were very basic at this point, these are probably
+among the top features for Automake today.
+
+Jim Meyering also provides the infamous @code{jm_MAINTAINER_MODE},
+since then renamed to @code{AM_MAINTAINER_MODE} and abandoned by its
+author (@pxref{maintainer-mode}).
+
address@hidden 1996-05-28 Automake 1.0
+
+After only six months of heavy development, the automake script is
+3134 line long, plus 973 lines of @file{Makefile} fragments.  The
+package has 30 pages of documentation, and 38 test cases.
address@hidden contains 4 macros.
+
+From now on and until version 1.4, new releases will occur at a rate
+of about one a year.  1.1 did not exist, actually 1.1b to 1.1p have
+been the name of beta releases for 1.2.  This is the first time
+Automake uses suffix letters to designate beta releases, an habit that
+lasts.
+
address@hidden 1996-10-10 Kevin Dalley packages Automake 1.0 for Debian 
GNU/Linux.
+
address@hidden 1996-11-26 David J. MacKenzie releases Autoconf 2.12.
+
+Between June and October, the Autoconf development is almost staled.
+Roland McGrath has been working at the beginning of the year.  David
+comes back in November to release 2.12, but he won't touch Autoconf
+anymore after this year, and Autoconf then really stales.  The
+desolated Autoconf @file{ChangeLog} for 1997 lists only 7 commits.
+
address@hidden 1997-02-28 @email{automake@@gnu.ai.mit.edu} list alive
+
+The mailing list is announced as follows:
address@hidden
+I've created the "automake" mailing list.  It is
+"automake@@gnu.ai.mit.edu".  Administrivia, as always, to
+automake-request@@gnu.ai.mit.edu.
+
+The charter of this list is discussion of automake, autoconf, and
+other configuration/portability tools (eg libtool).  It is expected
+that discussion will range from pleas for help all the way up to
+patches.
+
+This list is archived on the FSF machines.  Offhand I don't know if
+you can get the archive without an account there.
+
+This list is open to anybody who wants to join.  Tell all your
+friends!
+-- Tom Tromey
address@hidden example
+
+Before that people were discussing Automake privately, on the Gnits
+mailing list (which is not public either), and less frequently on
address@hidden
+
address@hidden is now @code{gnu.org}, in case you never
+noticed.  The archives of the early years of the
address@hidden@@gnu.org} list have been lost, so today it is almost
+impossible to find traces of discussions that occurred before 1999.
+This has been annoying more than once, as such discussions can be
+useful to understand the rationale behind a piece of uncommented code
+that was introduced back then.
+
address@hidden 1997-06-22 Automake 1.2
+
+Automake developments continues, and more and more new Autoconf macros
+are required.  Distributing them in @file{aclocal.m4} and requiring
+people to browse this file to extract the relevant macros becomes
+uncomfortable.  Ideally, some of them should be contributed to
+Autoconf so that they can be used directly, however Autoconf is
+currently inactive.  Automake 1.2 consequently introduces
address@hidden (@command{aclocal} was actually started on
+1996-07-28), a tool that automatically constructs an @file{aclocal.m4}
+file from a repository of third-party macros.  Because Autoconf has
+stalled, Automake also becomes a kind of repository for such
+third-party macros, even macros completely unrelated to Automake (for
+instance macros that fixes broken Autoconf macros).
+
+The 1.2 release contains 20 macros, among which the
address@hidden macro that simplifies the creation of
address@hidden
+
+Libtool is fully supported using @code{*_LTLIBRARIES}.
+
+The missing script is introduced by Fran@,cois Pinard; it is meant to be
+a better solution than @code{AM_MAINTAINER_MODE}
+(@pxref{maintainer-mode}).
+
+Conditionals support was implemented by Ian Lance Taylor.  At the
+time, Tom and Ian were working on an internal project at Cygnus.  They
+were using ILU, which is pretty similar to CORBA.  They wanted to
+integrate ILU into their build, which was all @file{configure}-based,
+and Ian thought that adding conditionals to @command{automake} was
+simpler than doing all the work in @file{configure} (which was the
+standard at the time).  So this was actually funded by Cygnus.
+
+This very useful but tricky feature will take a lot of time to
+stabilize.  (At the time this text is written, there are still
+primaries that have not been updated to support conditional
+definitions in Automake 1.9.)
+
+The @command{automake} script has almost doubled: 6089 lines of Perl,
+plus 1294 lines of @file{Makefile} fragments.
+
address@hidden 1997-07-08 Gordon Matzigkeit releases Libtool 1.0.
+
address@hidden 1998-04-05 Automake 1.3
+
+This is a small advance compared to 1.2.
+It add support for assembly, and preliminary support for Java.
+
+Perl 5.004_04 is out, but fixes to support Perl 4 are still
+regularly submitted whenever Automake breaks it.
+
address@hidden 1998-09-06 @code{sourceware.cygnus.com} is on-line.
+
+Sourceware was setup by Jason Molenda to host open source projects.
+
address@hidden 1998-09-19  Automake CVS repository moved to 
@code{sourceware.cygnus.com}
address@hidden 1998-10-26  @code{sourceware.cygnus.com} announces it hosts 
Automake
+Automake is now hosted on @code{sourceware.cygnus.com}.  It has a
+publicly accessible CVS repository.  This CVS repository is a copy of
+the one Tom was using on his machine, which in turn is based on
+a copy of the CVS repository of David MacKenzie.  This is why we still
+have to full source history.  (Automake is still on Sourceware today,
+but the host has been renamed to @code{sources.redhat.com}.)
+
+The oldest file in the administrative directory of the CVS repository
+that was created on Sourceware is dated 1998-09-19, while the
+announcement that @code{automake} and @code{autoconf} had joined
address@hidden was made on 1998-10-26.  They were among the first
+projects to be hosted there.
+
+The heedful reader will have noticed Automake was exactly 4-year-old
+on 1998-09-19.
+
address@hidden 1999-01-05 Ben Elliston releases Autoconf 2.13.
+
address@hidden 1999-01-14 Automake 1.4
+
+This release adds support for Fortran 77 and for the @code{include}
+statement.  Also, @code{+=} assignments are introduced, but it is
+still quite easy to fool Automake when mixing this with conditionals.
+
+These two releases, Automake 1.4 and Autoconf 2.13 makes a duo that
+will be used together for years.
+
address@hidden is 7228 lines, plus 1591 lines of Makefile
+fragment, 20 macros (some 1.3 macros were finally contributed back to
+Autoconf), 197 test cases, and 51 pages of documentation.
+
address@hidden 1999-03-27 The @code{user-dep-branch} is created on the CVS 
repository.
+
+This implements a new dependency tracking schemed that should be
+able to handle automatic dependency tracking using any compiler (not
+just gcc) and any make (not just GNU @command{make}).  In addition,
+the new scheme should be more reliable than the old one, as
+dependencies are generated on the end user's machine. Alexandre Oliva
+creates depcomp for this purpose.
+
address@hidden Tracking Evolution}, for more details about the
+evolution of automatic dependency tracking in Automake.
+
address@hidden 1999-11-21 The @code{user-dep-branch} is merged into the main 
trunk.
+
+This was a huge problem since we also had patches going in on the
+trunk.  The merge took a long time and was very painful.
+
address@hidden 2000-05-10
+
+Since September 1999 and until 2003, Akim Demaille will be zealously
+revamping Autoconf.
+
address@hidden
+I think the next release should be called "3.0"address@hidden
+Let's face it: you've basically rewritten address@hidden
+Every weekend there are 30 new address@hidden
+I don't see how we could call this "2.15" with a straight address@hidden
+-- Tom Tromey on @email{autoconf@@gnu.org}
address@hidden quotation
+
+Actually Akim works like a submarine: he will pile up patches when he
+work off-line on week-end, and flush them in batch when he surfaces
+back on Monday.
+
address@hidden 2001-01-24
+
+On this Wednesday, Autoconf 2.49c, the last beta before Autoconf 2.50
+is out, and Akim has to find something to do during his week-end :)
+
address@hidden 2001-01-28
+
+Akim sends a batch of 14 patches to @email{automake@@gnu.org}.
+
address@hidden
+Aiieeee!  I was dreading the day that the Demaillator turned his
+sights on automake... and now it has arrived! -- Tom Tromey
address@hidden quotation
+
+It's only the beginning: in two months he will send 192 patches.  Then
+he would slow down so Tom can catch up and review all this.  Initially
+Tom actually read all these patches, then he probably trustingly
+answered OK to most of them, and finally gave up and let Akim apply
+whatever he wanted.  There was no way to keep up with that patch rate.
+
address@hidden
+Anyway the patch below won't apply since it predates Akim's
+sourcequake; I have yet to figure where the relevant passage has
+been moved :) -- Alexandre Duret-Lutz
address@hidden quotation
+
+All these patches were sent to and discussed on
address@hidden@@gnu.org}, so subscribed users were literally drown in
+technical mails.  Eventually, the @email{automake-patches@@gnu.org}
+mailing list was created in May.
+
+Year after year, Automake had drifted away from its initial design:
+construct @file{Makefile.in} by assembling various @file{Makefile}
+fragments.  In 1.4, lots of @file{Makefile} rules are being emitted at
+various places in the @command{automake} script itself; this does not
+help ensuring a consistent treatment of these rules (for instance
+making sure that user-defined rules override Automake's own rules).
+One of Akim's goal was moving all these hard-coded rules to separate
address@hidden fragments, so the logic could be centralized in a
address@hidden fragment processor.
+
+Another significant contribution of Akim is the interface with the
+``trace'' feature of Autoconf.  The way to scan @file{configure.in} at
+this time was to read the file and grep the various macro of interest
+to Automake.  Doing so could break in many unexpected ways; automake
+could miss some definition (for instance @code{AC_SUBST([$1], [$2])}
+where the arguments are known only when M4 is run), or conversely it
+could detect some macro that was not expanded (because it is called
+conditionally).  In the CVS version of Autoconf, Akim had implemented
+the @code{--trace} option, which provides accurate information about
+where macros are actually called and with what arguments.  Akim will
+equip Automake with a second @file{configure.in} scanner that uses
+this @code{--trace} interface.  Since it was not sensible to drop the
+Autoconf 2.13 compatibility yet, this experimental scanner was only
+used when an environment variable was set, the traditional
+grep-scanner being still the default.
+
address@hidden 2001-04-25 Gary V. Vaughan releases Libtool 1.4
+
+It has been more than two years since Automake 1.4, CVS Automake has
+suffered lot's of heavy changes and still is not ready for release.
+Libtool 1.4 had to be distributed with a patch against Automake 1.4.
+
address@hidden 2001-05-08 Automake 1.4-p1
address@hidden 2001-05-24 Automake 1.4-p2
+
+Gary V. Vaughan, the principal Libtool maintainer, makes a ``patch
+release'' of Automake:
+
address@hidden
+The main purpose of this release is to have a stable automake
+which is compatible with the latest stable libtool.
address@hidden quotation
+
+The release also contains obvious fixes for bugs in Automake 1.4,
+some of which were reported almost monthly.
+
address@hidden 2001-05-21 Akim Demaille releases Autoconf 2.50
+
address@hidden 2001-06-07 Automake 1.4-p3
address@hidden 2001-06-10 Automake 1.4-p4
address@hidden 2001-07-15 Automake 1.4-p5
+
+Gary continues his patch-release series.  These also add support for
+some new Autoconf 2.50 idioms.  Essentially, Autoconf now advocates
address@hidden over @file{configure.in}, and it introduces a new
+syntax for @code{AC_OUTPUT}ing files.
+
address@hidden 2001-08-23 Automake 1.5
+
+A major and long-awaited release, that comes more than two years after
+1.4.  It brings many changes, among which:
address@hidden
address@hidden The new dependency tracking scheme that uses @command{depcomp}.
+Aside from the improvement on the dependency tracking itself
+(@pxref{Dependency Tracking Evolution}), this also streamlines the use
+of automake generated @file{Makefile.in}s as the @file{Makefile.in}s
+used during development are now the same as those used in
+distributions.  Before that the @file{Makefile.in}s generated for
+maintainers required GNU @command{make} and GCC, they were different
+from the portable @file{Makefile} generated for distribution; this was
+causing some confusion.
+
address@hidden Support for per-target compilation flags.
+
address@hidden Support for reference to files in subdirectories in most
address@hidden variables.
+
address@hidden Introduction of the @code{dist_}, @code{nodist_}, and 
@code{nobase_}
+prefixes.
address@hidden Perl 4 support is finally dropped.
address@hidden itemize
+
+1.5 did broke several packages that worked with 1.4.  Enough so that
+Linux distributions could not easily install the new Automake version
+without breaking many of the packages for which they had to run
address@hidden
+
+Some of these breakages were effectively bugs that would eventually be
+fixed in the next release.  However, a lot of damage was caused by
+some changes made deliberately to render Automake stricter on some
+setup we did consider bogus.  For instance @code{make distcheck} was
+improved to check that @code{make uninstall} did remove all the files
address@hidden install} installed, that @code{make distclean} did not omit
+some file, and that a VPATH build would work even if the source
+directory was read-only.  Similarly, Automake now rejects multiple
+definitions of the same variable (because that would mix very badly
+with conditionals), and @code{+=} assignments with no previous
+definition.  Because these changes all occurred suddenly after 1.4 had
+been established for more that two years, it hurt users.
+
+To make matter worse, meanwhile Autoconf (now at version 2.52) was
+facing similar troubles, for similar reasons.
+
address@hidden 2002-03-05 Automake 1.6
+
+This release introduced versioned installation (@pxref{API
+versioning}).  This was mainly pushed by Havoc Pennington, taking the
+GNOME source tree as motive: due to incompatibilities between the
+autotools it's impossible for the GNOME packages to switch to Autoconf
+2.53 and Automake 1.5 all at once, so they are currently stuck with
+Autoconf 2.13 and Automake 1.4.
+
+The idea was to call this version @file{automake-1.6}, call all its
+bug-fix versions identically, and switch to @file{automake-1.7} for
+the next release that adds new features or changes some rules.  This
+scheme implies maintaining a bug-fix branch in addition to the
+development trunk, which means more work from the maintainer, but
+providing regular bug-fix releases proved to be really worthwhile.
+
+Like 1.5, 1.6 also introduced a bunch of incompatibilities, meant or
+not.  Perhaps the more annoying was the dependence on the newly
+released Autoconf 2.53.  Autoconf seemed to have stabilized enough
+since its explosive 2.50 release, and included changes required to fix
+some bugs in Automake.  In order to upgrade to Automake 1.6, people
+now had to upgrade Autoconf too; for some packages it was no picnic.
+
+While versioned installation helped people to upgrade, it also
+unfortunately allowed people not to upgrade.  At the time of writing,
+some Linux distributions are shipping packages for Automake 1.4, 1.5,
+1.6, 1.7, 1.8, and 1.9.  Most of these still install 1.4 by default.
+Some distribution also call 1.4 the ``stable'' version, and present
+``1.9'' as the development version; this does not really makes sense
+since 1.9 is way more solid than 1.4.  All this does not help the
+newcomer.
+
address@hidden 2002-04-11 Automake 1.6.1
+
+1.6, and the upcoming 1.4-p6 release were the last release by Tom.
+This one and the followings will be handled by Alexandre Duret-Lutz.
+Tom is still around, and will be there until about 1.7, but his
+interest into Automake is drifting away towards projects like
address@hidden
+
+Alexandre has been using Automake since 2000, and started to
+contribute mostly on Akim's incitement (Akim and Alexandre have been
+working in the same room from 1999 to 2002).  In 2001 and 2002 he had
+a lot of free time to enjoy hacking Automake.
+
address@hidden 2002-06-14 Automake 1.6.2
+
address@hidden 2002-07-28 Automake 1.6.3
address@hidden 2002-07-28 Automake 1.4-p6
+
+Two releases on the same day.  1.6.3 is a bug-fix release.
+
+Tom Tromey backported the versioned installation mechanism on the 1.4
+branch, so that Automake 1.6.x and Automake 1.4-p6 could be installed
+side by side.  Another request from the GNOME folks.
+
address@hidden 2002-09-25 Automake 1.7
+
+This release switches to the new @file{configure.ac} scanner Akim
+was experimenting in 1.5.
+
address@hidden 2002-10-16 Automake 1.7.1
address@hidden 2002-12-06 Automake 1.7.2
address@hidden 2003-02-20 Automake 1.7.3
address@hidden 2003-04-23 Automake 1.7.4
address@hidden 2003-05-18 Automake 1.7.5
address@hidden 2003-07-10 Automake 1.7.6
address@hidden 2003-09-07 Automake 1.7.7
address@hidden 2003-10-07 Automake 1.7.8
+
+Many bug-fix releases.  1.7 lasted because the development version
+(upcoming 1.8) was suffering some major internal revamping.
+
address@hidden 2003-10-26 Automake on screen
+
+Episode 49, `Repercussions', in the third season of the `Alias' TV
+show is first aired.
+
+Marshall, one of the character, is working on a computer virus that he
+has to modify before it gets into the wrong hands or something like
+that.  The screenshots you see do not show any program code, they show
+a @file{Makefile.in} @code{generated by automake}...
+
address@hidden 2003-11-09 Automake 1.7.9
+
address@hidden 2003-12-10 Automake 1.8
+
+The most striking update is probably that of @command{aclocal}.
+
address@hidden now uses @code{m4_include} in the produced
address@hidden when the included macros are already distributed
+with the package (an idiom used in many packages), which reduces code
+duplication.  Many people liked that, but in fact this change was
+really introduced to fix a bug in rebuild rules: @file{Makefile.in}
+must be rebuilt whenever a dependency of @file{configure} changes, but
+all the @file{m4} files included in @file{aclocal.m4} where unknown
+from @command{automake}.  Now @command{automake} can just trace the
address@hidden to discover the dependencies.
+
address@hidden also starts using the @code{--trace} Autoconf option
+in order to discover used macros more accurately.  This will turn out
+to be very tricky (later releases will improve this) as people had
+devised many ways to cope with the limitation of previous
address@hidden versions, notably using handwritten
address@hidden: @command{aclocal} must make sure not to redefine a
+rule which is already included by such statement.
+
+Automake also has seen its guts rewritten.  Although this rewriting
+took a lot of efforts, it is only apparent to the users in that some
+constructions previously disallowed by the implementation now work
+nicely.  Conditionals, Locations, Variable and Rule definitions,
+Options: these items on which Automake works have been rewritten as
+separate Perl modules, and documented.
+
address@hidden 2004-01-11 Automake 1.8.1
address@hidden 2004-01-12 Automake 1.8.2
address@hidden 2004-03-07 Automake 1.8.3
address@hidden 2004-04-25 Automake 1.8.4
address@hidden 2004-05-16 Automake 1.8.5
+
address@hidden 2004-07-28 Automake 1.9
+
+This release tries to simplify the compilation rules it outputs to
+reduce the size of the Makefile.  The complaint initially come from
+the libgcj developers.  Their @file{Makefile.in} generated with
+Automake 1.4 and custom build rules (1.4 did not support compiled
+Java) is 250KB.  The one generated by 1.8 was over 9MB!  1.9 gets it
+down to 1.2MB.
+
+Aside from this it contains mainly minor changes and bug-fixes.
+
address@hidden 2004-08-11 Automake 1.9.1
address@hidden 2004-09-19 Automake 1.9.2
+
+Automake has ten years.  This chapter of the manual was initially
+written for this occasion.
+
address@hidden table
+
 @node Dependency Tracking Evolution
 @section Dependency Tracking in Automake
 
@@ -8172,7 +8916,7 @@
 The date and version of the release.
 @item am
 The number of lines of the @command{automake} script.
address@hidden ac
address@hidden acl
 The number of lines of the @command{aclocal} script.
 @item pm
 The number of lines of the @command{Perl} supporting modules.
@@ -8188,7 +8932,7 @@
 @end table
 
 @multitable {8888-88-88} {8.8-p8} {8888} {888} {8888} {8888 (88)} {8888 (88)} 
{888} {888}
address@hidden Date   @tab Rel @tab am @tab ac @tab pm @tab @file{*.am} @tab m4 
@tab doc @tab t
address@hidden Date   @tab Rel @tab am @tab acl @tab pm @tab @file{*.am} @tab 
m4 @tab doc @tab t
 @item 1994-09-19 @tab CVS    @tab  141 @tab     @tab      @tab  299 (24) @tab  
         @tab     @tab
 @item 1994-11-05 @tab CVS    @tab  208 @tab     @tab      @tab  332 (28) @tab  
         @tab     @tab
 @item 1995-11-23 @tab 0.20   @tab  533 @tab     @tab      @tab  458 (35) @tab  
         @tab   9 @tab
@@ -8201,11 +8945,11 @@
 @item 1996-01-03 @tab 0.27   @tab 1706 @tab     @tab      @tab  438 (36) @tab  
         @tab  16 @tab
 @item 1996-01-13 @tab 0.28   @tab 1964 @tab     @tab      @tab  934 (33) @tab  
         @tab  16 @tab
 @item 1996-02-07 @tab 0.29   @tab 2299 @tab     @tab      @tab  936 (33) @tab  
         @tab  17 @tab
address@hidden 1996-02-24 @tab 0.30   @tab 2544 @tab     @tab      @tab  919 
(32) @tab           @tab  20 @tab 9
address@hidden 1996-03-11 @tab 0.31   @tab 2877 @tab     @tab      @tab  919 
(32) @tab           @tab  29 @tab 17
address@hidden 1996-04-27 @tab 0.32   @tab 3058 @tab     @tab      @tab  921 
(31) @tab           @tab  30 @tab 26
address@hidden 1996-05-18 @tab 0.33   @tab 3110 @tab     @tab      @tab  926 
(31) @tab           @tab  30 @tab 35
address@hidden 1996-05-28 @tab 1.0    @tab 3134 @tab     @tab      @tab  973 
(32) @tab           @tab  30 @tab 38
address@hidden 1996-02-24 @tab 0.30   @tab 2544 @tab     @tab      @tab  919 
(32) @tab   85 (1)  @tab  20 @tab 9
address@hidden 1996-03-11 @tab 0.31   @tab 2877 @tab     @tab      @tab  919 
(32) @tab   85 (1)  @tab  29 @tab 17
address@hidden 1996-04-27 @tab 0.32   @tab 3058 @tab     @tab      @tab  921 
(31) @tab   85 (1)  @tab  30 @tab 26
address@hidden 1996-05-18 @tab 0.33   @tab 3110 @tab     @tab      @tab  926 
(31) @tab  105 (1)  @tab  30 @tab 35
address@hidden 1996-05-28 @tab 1.0    @tab 3134 @tab     @tab      @tab  973 
(32) @tab  105 (1)  @tab  30 @tab 38
 @item 1997-06-22 @tab 1.2    @tab 6089 @tab 385 @tab      @tab 1294 (36) @tab  
592 (23) @tab  37 @tab 126
 @item 1998-04-05 @tab 1.3    @tab 6415 @tab 422 @tab      @tab 1470 (39) @tab  
741 (26) @tab  39 @tab 156
 @item 1999-01-14 @tab 1.4    @tab 7240 @tab 426 @tab      @tab 1591 (40) @tab  
734 (23) @tab  51 @tab 197
@@ -8238,6 +8982,7 @@
 @item 2004-05-16 @tab 1.8.5  @tab 7240 @tab 686 @tab 7736 @tab 3299 (39) @tab 
1701 (36) @tab 112 @tab 533
 @item 2004-07-28 @tab 1.9    @tab 7508 @tab 715 @tab 7794 @tab 3352 (40) @tab 
1812 (37) @tab 115 @tab 551
 @item 2004-08-11 @tab 1.9.1  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 
1812 (37) @tab 115 @tab 552
address@hidden 2004-09-19 @tab 1.9.2  @tab 7512 @tab 715 @tab 7794 @tab 3354 
(40) @tab 1812 (37) @tab 132 @tab 554
 @end multitable
 
 
@@ -8329,12 +9074,24 @@
 @c  LocalWords:  RUNTESTDEFAULTFLAGS toolchain RUNTESTFLAGS asis readme DVIPS
 @c  LocalWords:  installcheck gzipped tarZ std utils etags mkid multilibbing cd
 @c  LocalWords:  ARGS taggable ETAGSFLAGS lang ctags CTAGSFLAGS GTAGS gtags idl
address@hidden  LocalWords:  foocc doit idlC multilibs ABIs cmindex defmac ARG 
enableval
address@hidden  LocalWords:  MSG xtrue DBG pathchk CYGWIN afile proglink 
versioned CVS's
address@hidden  LocalWords:  foocc doit idlC multilibs ABIs cmindex defmac ARG 
enableval FC
address@hidden  LocalWords:  MSG xtrue DBG pathchk CYGWIN afile proglink 
versioned CVS's TE
 @c  LocalWords:  wildcards Autoconfiscated subsubheading autotools Meyering API
 @c  LocalWords:  ois's wildcard Wportability cartouche vrindex printindex Duret
 @c  LocalWords:  DSOMEFLAG DVERSION automake Lutz insertcopying versioning FAQ
 @c  LocalWords:  LTLIBOBJ Libtool's libtool's libltdl dlopening itutions libbar
 @c  LocalWords:  WANTEDLIBS libhello sublibraries libtop libsub dlopened Ratfor
address@hidden  LocalWords:  mymodule timestamps timestamp underquoted 
MAKEINFOHTMLFLAGS
address@hidden  LocalWords:  GNUmakefile buildir Subpackages subpackage's 
subpackages
address@hidden  LocalWords:  mymodule timestamps timestamp underquoted 
MAKEINFOHTMLFLAGS te
address@hidden  LocalWords:  GNUmakefile buildir Subpackages subpackage's 
subpackages aux
address@hidden  LocalWords:  detailmenu Timeline pwd reldir AUTOM autom PREREQ 
FOOBAR libc
address@hidden  LocalWords:  libhand subpackage moduleN libmain libmisc FCFLAGS 
FCCOMPILE
address@hidden  LocalWords:  FCLINK subst sed ELCFILES elc MAKEINFOHTML dvips 
esyscmd ustar
address@hidden  LocalWords:  tarballs Woverride scrdir vfi ELFILES djm AutoMake 
honkin FSF
address@hidden  LocalWords:  fileutils precanned MacKenzie's reimplement 
termutils Tromey's
address@hidden  LocalWords:  cois gnitsians LIBPROGRAMS progs LIBLIBRARIES 
Textutils Ulrich
address@hidden  LocalWords:  Matzigkeit Drepper's Gord Matzigkeit's jm Dalley 
Debian eg org
address@hidden  LocalWords:  Administrivia ILU CORBA Sourceware Molenda 
sourceware Elliston
address@hidden  LocalWords:  dep Oliva Akim Demaille Aiieeee Demaillator Akim's 
sourcequake
address@hidden  LocalWords:  grep backported screenshots libgcj KB 
unnumberedsubsubsec pre
address@hidden  LocalWords:  precomputing hacky makedepend inline clearmake LD 
PRELOAD Rel
address@hidden  LocalWords:  syscalls perlhist acl pm multitable headitem fdl 
appendixsec
Index: doc/stamp-vti
===================================================================
RCS file: /cvs/automake/automake/doc/stamp-vti,v
retrieving revision 1.62
diff -u -r1.62 stamp-vti
--- doc/stamp-vti       15 Sep 2004 20:17:12 -0000      1.62
+++ doc/stamp-vti       19 Sep 2004 21:29:16 -0000
@@ -1,4 +1,4 @@
address@hidden UPDATED 15 September 2004
address@hidden UPDATED 19 September 2004
 @set UPDATED-MONTH September 2004
 @set EDITION 1.9a
 @set VERSION 1.9a
Index: doc/version.texi
===================================================================
RCS file: /cvs/automake/automake/doc/version.texi,v
retrieving revision 1.62
diff -u -r1.62 version.texi
--- doc/version.texi    15 Sep 2004 20:17:12 -0000      1.62
+++ doc/version.texi    19 Sep 2004 21:29:16 -0000
@@ -1,4 +1,4 @@
address@hidden UPDATED 15 September 2004
address@hidden UPDATED 19 September 2004
 @set UPDATED-MONTH September 2004
 @set EDITION 1.9a
 @set VERSION 1.9a
-- 
Alexandre Duret-Lutz





reply via email to

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