Subject: bug#9847: [PATCH 3/3] maint: use gnulib's gitlog-to-changelog instead of a ChangeLog file.

From: "Gary V. Vaughan" <[email-masked]>
Date: Sun, 23 Oct 2011 23:17:33 +0700

We already have to enter all the ChangeLog relevant information into the git
commit log.  Instead of worrying about keeping them all in sync, this patch
generates the current year ChangeLog from the git logs using a gnulib script.
At the beginning of the year, we can still rotate it out into ChangeLog.2011
and let the script carry on generating next years ChangeLog.

It would have been even better to generate all of the ChangeLogs on demand,
but the formatting differences and missing logs for many of our historic
commits dating back to CVS especially look awful, so this is a good compromise
between making maintenance as low-friction as possible and having ugly unreadable
early ChangeLogs.

I'll push in 72 hours, pending review comments in the mean time.

* ChangeLog: Removed.
* HACKING (Editing 'ChangeLog'): Removed. Renumbered other sections to
compensate.
* bootstrap.conf (gnulib_modules): Add gitlog-to-changelog.
* Makefile.am (ChangeLog): Generate the ChangeLog for 2011...
(dist-hook): ...from the output of `git log' before rolling a
distribution tarball.

Signed-off-by: Gary V. Vaughan <[email-masked]>
---
 .gitignore                |    1 +
 ChangeLog                 |  454 ---------------------------------------------
 HACKING                   |  131 ++------------
 Makefile.am               |   13 ++-
 bootstrap.conf            |    1 +
 libltdl/config/.gitignore |    1 +
 6 files changed, 28 insertions(+), 573 deletions(-)
 delete mode 100644 ChangeLog

diff --git a/.gitignore b/.gitignore
index 188d1eb..f337328 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,6 +35,7 @@
 /.sc-start*
 /.version
 /COPYING
+/ChangeLog
 /GNUmakefile
 /INSTALL
 /README-release
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index 831bbef..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,454 +0,0 @@
-2011-10-20  Gary V. Vaughan  <[email-masked]>
-
-	maint: use gnulib's git-version-gen instead of mkstamp.
-	* libltdl/config/mkstamp: File removed.
-	* bootstrap.conf (gnulib_modules): Add git-version-gen.
-	* configure.ac (AC_INIT, package_revision): Use git-version-gen to
-	calculate version number.
-	(TIMESTAMP): Removed.
-	* libtoolize.m4sh, libltdl/config/ltmain.m4sh, libltdl/m4/libtool.m4
-	(TIMESTAMP): Ditto.
-	* Makefile.am (TIMESTAMP): Ditto.
-	(MKSTAMP): Renamed from this...
-	(git_version_gen): ...to this. Set revision here.  An alpha is now a
-	release with an odd micro relase number.
-	(rebuild): Don't reset revision here.
-	(build_scripts): Remove mkstamp, add git-version-gen.
-	(EXTRA_DIST, BUILT_SOURCES): Add .version.
-	(libltdl/config/ltmain.sh, libltdl/m4/ltversion.m4, tests/package.m4):
-	Don't depend on configure.ac or ChangeLog to determine when the
-	version number has reved, use .version directly.
-	(.version): Flush most recent configure calculated VERSION to disk.
-	(dist-hook): Flush current VERSION to disk at dist time.
-
-2011-10-18  Gary V. Vaughan  <[email-masked]>
-
-	maint: use gnulib's maint.mk and support scripts release procedure.
-	* NEWS: Updated.
-	* Makefile.maint: Removed.
-	* configure.ac (LASTRELEASE, lt_major, lt_minor, lt_micro, lt_alpha):
-	All removed. Makefile.maint was the only client.
-	* HACKING (Release Procedure): Removed.
-	* bootstrap.conf (gnulib_modules): Add announce-gen,
-	do-release-commit-and-tag, gendocs, gnu-web-doc-update reademe-release
-	and gnupload.
-	* cfg.mk (manual_title): Set it for web-manual rule.
-	* Makefile.am (build_scripts): Add to EXTRA_DIST additional files
-	imported from gnulib for maint.mk release procedure.
-
-2011-10-19  Gary V. Vaughan  <[email-masked]>
-
-	maint: use gnulib's maintainer-makefile module.
-	* bootstrap.conf (gnulib_modules): Add maintainer-makefile.
-	(gnulib_tool_options): Add --avoid=dummy now that we have a real
-	module to import.
-	* cfg.mk: New file. Customize maint.mk for Libtool.
-	* Makefile.am (EXTRA_DIST): Add GNUmakefile, cfg.mk and maint.mk.
-
-2011-10-19  Gary V. Vaughan  <[email-masked]>
-
-	maint: use gnulib's canonical fdl.texi.
-	* doc/fdl.texi: Removed.
-	* bootstrap.conf (gnulib_non_module_files): Add fdl.texi.
-
-2011-10-18  Gary V. Vaughan  <[email-masked]>
-
-	maint: use gnulib's canonical COPYING files.
-	* COPYING, libltdl/COPYING.LIB: Removed.
-	* bootstrap.conf (gnulib_non_module_files): Add COPYING.
-	(libtool_add_libltdl_copying): New func_gnulib_tool hook
-	function to copy the canonical LGPL2 COPYING file from gnulib at
-	bootstrap.
-
-2010-09-16  Gary V. Vaughan  <[email-masked]>
-
-	maint: use gnulib's (pending saner) bootstrap script.
-	* bootstrap: Replaced with gnulib script.
-	* bootstrap.conf: New file with Libtool specific bootstrap
-	configuration.
-	* Makefile.am (EXTRA_DIST): Add bootstrap.conf.
-
-2010-08-27  Gary V. Vaughan  <[email-masked]>
-
-	maint: add gnulib submodule.
-	* configure.ac (GL_INIT, GL_EARLY): Initialise gnulib, and expand
-	its configure time checks.
-	* .gitmodules (gnulib): New file with configuration for our
-	gnulib git submodule.
-
-2010-09-01  Gary V. Vaughan  <[email-masked]>
-
-	maint: don't run help2man on programs not-yet-built.
-	* Makefile.am (doc/libtool.1, doc/libtoolize.1): Added a
-	comment about why the dependencies here have to be a mite
-	bizarre.
-
-2010-09-26  Gary V. Vaughan  <[email-masked]>
-
-	tests: remove unused `aux_dir' variable from `getopt-m4sh.test'.
-	* tests/getopt-m4sh.at (aux_dir): Remove unused variable.
-
-2010-09-26  Gary V. Vaughan  <[email-masked]>
-
-	tests: DRYing out `tests/sh.test'.
-	* Makefile.am (libtool_m4): Canonical location of libtool.m4 file.
-	(lt_aclocal_m4_deps): Use it.
-
-2010-09-23  Gary V. Vaughan  <[email-masked]>
-
-	maint: pass directory declarations in configure.ac into Makefile.
-	* configure.ac (AC_CONFIG_AUX_DIR, LT_CONFIG_LTDL_DIR)
-	(AC_CONFIG_MACRO_DIR): Append code to these functions to
-	capture and propagate their directory arguments to Makefile.
-	* Makefile.am (aux_dir, ltdl_dir, macro_dir): Remove declarations.
-	* bootstrap (my_sed_trace): Also capture LT_CONFIG_LTDL_DIR into
-	`$ltdl_dir'.
-	<Makefile>: Output the extracted values of `aux_dir', `ltdl_dir'
-	and `macro_dir' at the top of the quick'n'dirty bootstrap
-	Makefile.
-
-2010-09-26  Gary V. Vaughan  <[email-masked]>
-
-	maint: factor out ltmain.sh variable deletion.
-	* Makefile.am (ltmain_sh_edit): Expand upon bootstrap edit by
-	adding the extra line to delete boilerplate variable settings
-	from libltdl/config/general.m4sh that don't apply here.
-	(libltdl/config/ltmain.sh): Use it.
-
-2010-09-25  Gary V. Vaughan  <[email-masked]>
-
-	maint: DRYing out `Makefile.am' file paths.
-	* Makefile.am (aux_dir, macro_dir): Include `$(srcdir)' in
-	declaration. Adjust all references.
-	(doc_dir, ltdl_dir, m4sh_dir, tests_dir): New single location
-	to hold directory paths, all including `$(srcdir)', to reduce
-	typing.
-	(LT_M4SH): Use `$m4sh_dir' as include directory.
-	(defs): This one is for a file in the build-tree, so no
-	leading `$(srcdir)'.
-
-2010-09-25  Gary V. Vaughan  <[email-masked]>
-
-	CLEANUP: fix error from pushing too far up the branch.
-	* Makefile.am (install-data-local): Undo character transposition
-	from too early push of untested v2.4-17-gaf74d58.
-
-2010-09-23  Gary V. Vaughan  <[email-masked]>
-
-	maint: use macro_dir consistently in all files.
-	* Makefile.am: Replace all uses of m4dir with macrodir to
-	match AC_CONFIG_MACRO_DIR.
-	* libltdl/config/libtoolize.m4sh: Replace all uses of macrodir
-	with macro_dir.
-	* tests/defs.m4sh, tests/sh.test: Likewise.
-
-	maint: use aux_dir consistently in all files.
-	* Makefile.am, Makefile.maint: Replace all uses of auxdir
-	with aux_dir to match AC_CONFIG_AUX_DIR.
-	* libltdl/config/libtoolize.m4sh: Likewise.
-	* tests/defs.m4sh, tests/getopt-m4sh.at: Likewise.
-
-2010-09-24  Gary V. Vaughan  <[email-masked]>
-
-	Makefile: try to be robust against shell meta-chars in filenames.
-	* Makefile.am: In each rule body, unless a make variable needs
-	to be seen as multiple words by the shell (for word-splitting
-	loops, or because it contains several commands), quote it. Use
-	single quotes unless the shell needs to perform variable inter-
-	polation, in which case use double quotes.
-
-2010-09-24  Gary V. Vaughan  <[email-masked]>
-
-	maint: let make employ user's `SED' setting.
-	* Makefile.am: Replace hard-coded `sed' with `$(SED)' through-
-	out.
-
-2010-08-30  Gary V. Vaughan  <[email-masked]>
-
-	maint: simplify and improve safety of bootstrap process.
-	* Makefile.am (bootstrap_files): List files that need to be
-	generated at bootstrap time before `./configure && make' can
-	work.  It turns out that this is considerably fewer files than we
-	had thought necessary previously.
-	(bootstrap-deps-prep): Ensure minimum set of required substitution
-	variables are non-empty.
-	(bootstrap-deps): Depend on `bootstrap' files.
-	* bootstrap (Generate bootstrap dependencies): Now that
-	`Makefile.am' is entirely responsible for rebuilding files at
-	bootstrap time, we need only specify the new `bootstrap-deps'
-	target, and supply values for the substitutions checked by
-	`bootstrap-deps-prep'.
-	* configure.ac (AC_CONFIG_SRCDIR): `libtoolize.in' is not here yet
-	right after running `bootstrap'.  So rely on the presence of
-	`libtoolize.m4sh', which is always there.
-
-2010-08-31  Gary V. Vaughan  <[email-masked]>
-
-	build: eliminate superfluous temporary files from `Makefile.am'.
-	* Makefile.am (CLEANFILES): Remove temporary file entries.
-	(libtoolize.in, libltdl/config/ltmain.sh, libltdl/m4/ltversion.m4)
-	(tests/defs, tests/testsuite): Factor away temporary files.
-
-2010-08-31  Gary V. Vaughan  <[email-masked]>
-
-	build: eliminate `ltmain.in' and `libtoolize.in' intermediate files.
-	* Makefile.am (libltdl/config/ltmain.sh, libtoolize.in): Pipe
-	the output of `$(LT_M4SH)' directly into `$(bootstrap_edit)' to
-	avoid use of superfluous intermediate file.
-
-2010-08-31  Gary V. Vaughan  <[email-masked]>
-
-	build: don't hardcode repeated long paths in Makefile rules.
-	According to the DRY principle, scattering several copies of
-	something across a file or project leads to pain.  Let's not
-	do that!
-	* Makefile.am (Makefile_in, Makefile_inc, defs_in, defs_m4sh),
-	(libtoolize_in, ltmain_m4sh, ltversion_in): New variables to
-	hold the location of important files and targets.
-	(EXTRA_DIST): Add the distributed ones by variable.
-	(libtoolize, libltdl/Makefile.am, libltdl/m4/ltversion.m4)
-	(libltdl/config/ltmain.sh, libltdl/stamp-mk, tests/defs)
-	(tests/defs.in): Use the new variables to reduce noise and
-	repetition.
-
-2010-08-31  Gary V. Vaughan  <[email-masked]>
-
-	build: make better use of automatic variables in `Makefile.am'.
-	* Makefile.am (libtoolize, libtoolize.in, libltdl/Makefile.am)
-	(libltdl/config/mkstamp, libltdl/config/ltmain.m4sh)
-	(libltdl/m4/ltversion.m4, tests/testsuite, tests/defs.in):
-	Make better use of automatic variables.
-
-2010-08-31  Gary V. Vaughan  <[email-masked]>
-
-	build: name temporary files in `Makefile.am' consistently.
-	Sadly, we still have to jump through hoops for MICROS~1's very
-	old, very broken 8.3 naming convention, so we have to be careful
-	to be unique in the first 8 letters, and not to use two periods
-	in a filename, otherwise we could use the much more elegent
-	`temporary files use "$@T"' idiom:
-	* Makefile.am (libltdl/m4/ltversion.m4): Rename temporary file
-	to `ltversion.tmp'.
-	(libltdl/config/ltmain.sh): Rename temporary file to
-	`libltdl/config/ltmain.tmp'.
-	(libtoolize): Rename temporary file to `libtoolize.tmp'.
-	(tests/defs): Rename temporary file to `tests/defs.tmp'
-	(tests/testsuite): Rename temporary file to `tests/testsuite.tmp'.
-	(CLEANFILES): Append temporary files as we create rules that
-	use them.
-
-2010-08-31  Gary V. Vaughan  <[email-masked]>
-
-	build: factor Makefile.am `m4sh' invocations to LT_M4SH.
-	* Makefile.am (LT_M4SH): Now that all directories are listed as
-	fully qualified paths, the search path argument to M4SH is always
-	the same, so factor it out into a variable.  Adjust all callers.
-
-2010-08-31  Gary V. Vaughan  <[email-masked]>
-
-	build: avoid unnecessary directory changes in Makefile rules.
-	* Makefile.am (doc/notes.txt, libltdl/m4/ltversion.m4,
-	(libltdl/config/ltmain.m4sh, libtoolize.in, libltdl/Makefile.am)
-	(libltdl/config/mkstamp, tests/testsuite, tests/defs.in): Avoid
-	unnecessary `cd' commands by using fully qualified paths to files
-	outside of current directory.
-
-2010-08-31  Gary V. Vaughan  <[email-masked]>
-
-	build: compare `revision' rather than `correctver' in Makefile.am.
-	* Makefile.am (rebuild): Set the shell variable `revision' rather
-	than `correctver' for clarity of purpose.
-	(bootstrap_edit, libltdl/config/ltmain.sh): Adjust.
-	(libltdl/m4/ltversion.m4): Likewise, and alse, instead of munging
-	the serial number comment line with set, extract `macro_version'
-	from this file, and compare it directly with `revision'.
-	(libtool): Likewise for `package_revision'.
-
-2010-10-20  Gary V. Vaughan  <[email-masked]>
-
-	build: avoid spurious bootstrap_edit call.
-	* Makefile.am (tests/package.m4): @FOO@ substitutions have already
-	been made by the time Makefile.am has been transformed into Makefile,
-	so don't try to rerun the substitutions manually with
-	$(bootstrap_edit) after the fact.
-
-2011-10-17  Gary V. Vaughan  <[email-masked]>
-
-	Post-release administrivia.
-	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
-	numbers.
-	* NEWS: Add header line for next release.
-
-	Release 2.4.2.
-	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
-	numbers.
-	* NEWS: Update version number.
-
-	Replace leading spaces with tabs.
-	* libltdl/m4/libtool.m4, libltdl/config/ltmain.m4sh: Replace leading
-	spaces in soure code with tabs to match surrounding code.
-	Reported by Peter Rosin.
-
-	Make a note to use gnu/linux for version_type.
-	* libltdl/m4/libtool.m4 (version_type): Add a comment to change
-	version_type setting from 'linux' to 'gnu/linux' during the next
-	destabilising code refactoring.
-	* libltdl/config/ltmain.m4sh: ditto.
-	Requested by Richard Stallman.
-
-2011-10-04  Bart Van Assche <[email-masked]>
-
-	Typo fix - change func_apped into func_append
-	* libltdl/config/ltmain.m4sh: Fix typo.
-
-2011-10-02  Xin LI <[email-masked]>
-
-	Avoid problems when FreeBSD goes to version 10.
-	* libltdl/m4/libtool.m4: Remove mentions of freebsd1. Use dots
-	for FreeBSD 2 and 3 detection to avoid future problems
-	* libltdl/m4/ltmain.m4sh: ditto.
-
-2011-09-25  Cristophe Jarry <[email-masked]>
-
-	Avoid mentioning "Linux", use "GNU/Linux", if appropriate.
-	* TODO: Don't use bare "Linux".
-	* doc/libtool.texi: ditto.
-	* doc/notes.texi: ditto.
-	* libltdl/README: ditto.
-	* libltdl/m4/libtool.m4: ditto.
-
-2011-09-01  Peter O'Gorman  <[email-masked]>
-
-	Add flag to inhibit warnings.
-	* libltdl/config/ltmain.m4sh: Add --no-warn, --no-warning flags.
-	Reported by John Davd Anglin.
-
-2011-04-10  Kurt Roeckx  <[email-masked]>
-
-	tagdemo: do not rely on picking up symbols from indirect deps.
-	* tests/tagdemo/Makefile.am: Link to all libraries that the
-	demo application uses.
-
-2011-04-10  Svante Signell  <[email-masked]>  (tiny change)
-
-	Set shlibpath_overrides_runpath for the Hurd.
-	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [gnu]
-	<shlibpath_overrides_runpath>: Set to no.
-	* THANKS: Update.
-
-2011-03-22  Justin Lecher  <[email-masked]>  (tiny change)
-	    Rhys Ulerich  <[email-masked]>  (tiny change)
-
-	Don't filter OPENMP flags (-openmp & -fopenmp) from linker lines.
-	* libltdl/config/ltmain.m4sh (func_mode_link): Treat OpenMP
-	flags like pthreads flags.
-
-2011-03-14  Ralf Wildenhues  <[email-masked]>
-
-	libtoolize: detect -I<dir> (without space) in ACLOCAL_AMFLAGS.
-	* libtoolize.m4sh (func_scan_files): Also accept -I<dir>
-	(without intervening space) in ACLOCAL_AMFLAGS.
-	* THANKS: Update.
-	Report from Jan Engelhardt.
-
-2011-03-04  Peter O'Gorman  <[email-masked]>
-
-	On Mac OS X try .dylib as well as .so with lt_dlopenext
-	* libltdl/m4/ltdl.m4: Define extra extension if module extension
-	differs from shared lib extension.
-	* libltdl/ltdl.c: Use it.
-	* tests/darwin.at: Test it.
-	* NEWS: Announce it.
-	Reported by Hans Aberg, Michael Ellis, and others.
-
-2011-02-12  Peter O'Gorman  <[email-masked]>
-
-	Install ltmain.sh without execute bit set.
-	* Makefile.am: change install rule for ltmain.sh
-	Reported by Křištof Želechovski.
-
-2011-02-07  Ralf Wildenhues  <[email-masked]>
-
-	docs: fix copyright years in PDF version of the manual.
-	* doc/libtool.texi: Fix copyright years.
-
-2011-02-01  Rainer Orth  <[email-masked]>  (tiny change)
-
-	Fix LD setting for 64-bit Solaris 2/x86.
-	* libltdl/m4/libtool.m4 (_LT_ENABLE_LOCK) [*-*-solaris*]:
-	Determine GNU ld options for 64-bit Solaris 2/x86.  Detect gld
-	2.21 _sol2 emulations.
-
-2011-01-27  Peter O'Gorman  <[email-masked]>
-
-	Don't loop through wrapper script arguments unnecessarily.
-	* libltdl/m4/ltmain.m4sh: Check that argv contains " --lt-"
-	before looping to remove wrapper script targetted arguments.
-	Performance regression reported by Dan McGee.
-
-2011-01-20  Gerald Pfeifer  <[email-masked]>  (tiny change)
-
-	Remove support for FreeBSD 1.x.
-	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS)
-	(_LT_SYS_DYNAMIC_LINKER): Remove handling of freebsd1* which
-	soon would incorrectly match FreeBSD 10.0.
-	* NEWS, THANKS: Update.
-
-2011-01-19  Peter O'Gorman  <[email-masked]>
-
-	Don't let verbose linker messages influence test results.
-	* libltdl/m4/libtool.m4 (_LT_REQUIRED_DARWIN_CHECKS): Ignore
-	stderr during tests for -flag unless it contains "flag".
-	* tests/darwin.at: Add test.
-	Reported by Jeremy Huddleston and also by David Fang.
-
-2011-01-09  John David Anglin  <[email-masked]>  (tiny change)
-
-	Fix relink mode to use absolute path if hardcode_minus_L.
-	* libltdl/config/ltmain.m4sh (func_mode_link): Use absolute path
-	when hardcoding with -L.
-
-2011-01-09  Ralf Wildenhues  <[email-masked]>
-
-	Fix $wl setting for Solaris Studio 12.2 f90 on GNU/Linux.
-	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) [linux]
-	<lt_prog_compiler_wl>: Set to '-Qoption ld ' if we
-	detect Sun Fortran version 8.4 or newer.
-	Report by Terry Dontje.
-
-2011-01-07  Peter Rosin  <[email-masked]>
-
-	Convert file name to toolchain format when blessing archives.
-	* libltdl/config/ltmain.m4sh (func_mode_install): When executing
-	old_postinstall_cmds and old_archive_cmds, convert $oldlib to a
-	format appropriate for the tool and provide that in $tool_oldlib.
-	Also use $tool_oldlib when stripping old libraries.
-	* libltdl/m4/libtool.m4 (_LT_CMD_OLD_ARCHIVE): Use $tool_oldlib
-	as argument to $RANLIB.
-	* THANKS: Update.
-	Report by Dan McMahill.
-
-2011-01-02  Ralf Wildenhues  <[email-masked]>
-
-	Bump copyright years.
-	* ChangeLog.2010: New, rotated from ...
-	* ChangeLog: ... here.
-	* Makefile.am (EXTRA_DIST): Add ChangeLog.2010.
-	* NEWS, libltdl/config/ltmain.m4sh: Bump copyright years.
-	* libltdl/m4/libtool.m4 (_LT_COPYING, LT_OUTPUT): Likewise.
-	* libtoolize.m4sh: Likewise.
-	* doc/libtool.texi: Likewise.
-
-Continued in ChangeLog.2010
--- 
-  Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-  2006, 2007, 2008, 2009, 2011 Free Software Foundation, Inc.
-
-  This file is part of GNU Libtool.
-
-Copying and distribution of this file, with or without modification,
-are permitted in any medium without royalty provided the copyright
-notice and this notice are preserved.  This file is offered as-is,
-without warranty of any kind.
-
-vim:tw=72
diff --git a/HACKING b/HACKING
index b438463..21a810b 100644
--- a/HACKING
+++ b/HACKING
@@ -15,9 +15,9 @@ and is not part of a release distribution.
   appropriate paperwork, and be sure to add their name and email
   address to THANKS
 
-* If a change fixes a test, mention the test in the ChangeLog entry.
+* If a change fixes a test, mention the test in the git log entry.
 
-* If somebody reports a new bug, mention his name in the ChangeLog entry
+* If somebody reports a new bug, mention his name in the git log entry
   and in the test case you write.
 
 * The correct response to most actual bugs is to write a new test case
@@ -89,112 +89,7 @@ and is not part of a release distribution.
   with the `_lt_' macro namespace).

-5. Editing 'ChangeLog'
-======================
-
-* When in doubt, check that emacs can syntax-color properly in
-  change-log-mode.  And preferably use emacs 'C-x 4 a'
-  (add-change-log-entry-other-window) to open ChangeLog with an
-  appropriate new template.
-
-* If this change is by a different author, or on a different date to the
-  last entry start a new entry at the top of the file with the format
-  (note two spaces between each field):
-
-yyyy-mm-dd  Name of Author  <email@address>
-
-*  If more than one person collaborated on the change, additional
-   authors can be listed on subsequent lines, thus:
-
-yyyy-mm-dd  Name of Main Author  <email@address>,
-            Name of Contributor  <[email-masked]>
-
-* Where a change author did not supply a copyright assignment, but the
-  changes they submitted were sufficiently trivial to commit in any case
-  (see the GCS for guidelines on this), then flag this against their
-  name in the header, thus:
-
-yyyy-mm-dd  Name of Author  <email@address>  (tiny change)
-
-* In ChangeLog.2004 and earlier, 'Name of Author' was sometimes the name
-  of the author of the ChangeLog when the person who made the change
-  being documented didn't supply one.   In that case separated from
-  the previous field by a blank line and indented by 1 tab (note, only
-  1 space between fields here) you will see:
-
-	From Author of Actual Change <email@address>:
-
-  As of now, don't do that anymore, since the GNU Coding Standards say
-  that the author of the change must be credited in the main entry
-  header for legal purposes.
-
-* Preferably the next part should be a description of the overall
-  purpose of the change, separated from the header by a blank line,
-  indented by 1 tab, and filled at column 72.  The last character of the
-  description should be a period.  Ideally, this description fits on one
-  line, or begins with a one-line summary.
-
-* Changes to each file come next.  Each new file starts on a new line,
-  indented by 1 tab and starting with an asterisk and a space.  Multiple
-  files can be listed here relative to $top_srcdir, and comma separated.
-  Names of functions (or sections as appropriate) to which the change
-  applies should be named inside parentheses and comma separated.  If
-  this goes beyond column 72, then parens should be closed and re-opened
-  on the next line:
-
-	* file, another/file, test/testcases/foo.test (func_foo)
-	(func_bar, func_baz): Description of changes.
-
-* If the change does not apply to particular functions (or sections),
-  the section list can be omitted:
-
-	* file, another/file, test/testcases/foo.test: General changes.
-
-* If the changes are particular to certain architectures, they should be
-  listed after the functions in square brackets:
-
-	* file, another/file (func_foo) [linux, solaris]: Description of
-	changes.
-
-* Subsequent changes in other files that are related to the same overall
-  enhancement or bugfix should be listed concurrently, without blank
-  lines.  Always start a fresh line for a new file:
-
-	* file, another/file (func_foo) [linux, solaris]: Description of
-	changes.
-	* doc/foo.texi (Invoking Foo): Document.
-	* NEWS: Updated.
-
-* If the change is in response to a problem reported by someone other
-  than the author, then credit them at the end of the description with:
-
-	Reported by Reporter Name <email@address>.
-
-* See the GNU Coding Standards document for more details on ChangeLog
-  formatting.
-
-
-2005-01-08  Ralf Wildenhues  <[email-masked]>  (tiny change),
-            Peter O'Gorman  <[email-masked]>
-
-	This is the overall description of the purpose of this change
-	and any useful background for a model ChangeLog entry.
-
-	* HACKING: Updated copyright.  This isn't attached to a
-	particular section of the file, so it comes first.
-	(Editing 'ChangeLog'): New section.  This applies to the same
-	file, but since it applies to a particular section it starts on
-	a new line.
-	(Introduction, Maintenance Notes, Test Suite, Naming)
-	(Editing '.am' Files): If I had changed all these sections in
-	the same way, I can list them like this, being careful to close
-	and reopen the parentheses when starting a new line.  The colon
-	only comes after the last section before this description.
-	* NEWS: Updated.
-	Reported by Bob Friesenhahn <[email-masked]>.
-
-
-6. Using git
+5. Using git
 ============
 
 * Preferably, let the git commit message mirror the ChangeLog entry,
@@ -217,7 +112,7 @@ yyyy-mm-dd  Name of Author  <email@address>  (tiny change)
   a linear history.

-7. Editing `.am' Files
+6. Editing `.am' Files
 ======================
 
 * Always use $(...) and not ${...}
@@ -243,7 +138,7 @@ yyyy-mm-dd  Name of Author  <email@address>  (tiny change)
   and will be fixed in the `libtoolize --ltdl --(non)recursive' stage.

-8. Editing `.m4sh' Files
+7. Editing `.m4sh' Files
 ========================
 
 * Use shell functions, but be careful not to assume local scope for
@@ -286,7 +181,7 @@ yyyy-mm-dd  Name of Author  <email@address>  (tiny change)
   ]])

-9. Editing `.m4' Files
+8. Editing `.m4' Files
 ======================
 
 * Be careful with both `echo' and `$ECHO'.  As the latter may be one of
@@ -312,7 +207,7 @@ yyyy-mm-dd  Name of Author  <email@address>  (tiny change)
   be updated in all newer versions.

-10. Abstraction layers in libltdl
+9. Abstraction layers in libltdl
 =================================
 
 * The libltdl API uses a layered approach to differentiate internal and
@@ -413,7 +308,7 @@ yyyy-mm-dd  Name of Author  <email@address>  (tiny change)
   loading: preopen.c, dlopen.c etc.

-11. Licensing Rules
+10. Licensing Rules
 ===================
 
 GNU Libtool uses 3 different licenses for various of the files distributed
@@ -424,7 +319,7 @@ commenting (shell, C etc) and decoration (m4sh etc) assumed throughout.

-11.1. Notice preservation
+10.1. Notice preservation
 
 Autoconf macros and files used to generate them need this license, along
 with files such as HACKING, NEWS, README, README.alpha, TODO and
@@ -440,7 +335,7 @@ without warranty of any kind.

-11.2. GPL
+10.2. GPL
 
 Everything else in the distribution has the following license text
 unless there is good reason to use one of the other license texts
@@ -469,7 +364,7 @@ or obtained by writing to the Free Software Foundation, Inc.,

-11.3. GPL with self extracting version
+10.3. GPL with self extracting version
 
 Some of the sources built atop the getopt.m4sh framework use
 func_version() to extract their --version output from the copyright
@@ -503,7 +398,7 @@ or obtained by writing to the Free Software Foundation, Inc.,

-11.4. GPL with self extracting version and Libtool exception clause
+10.4. GPL with self extracting version and Libtool exception clause
 
 Although the libtool script is generated from `ltmain.m4sh' according
 to the rules in the preceding subsection, it also needs the Libtool
@@ -542,7 +437,7 @@ or obtained by writing to the Free Software Foundation, Inc.,

-11.5. LGPL with Libtool exception clause
+10.5. LGPL with Libtool exception clause
 
 Finally, not only is Libltdl is LGPLed, but it is routinely
 redistributed inside projects that use it, so its sources need to use
diff --git a/Makefile.am b/Makefile.am
index a28f108..dc9997e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -483,10 +483,21 @@ install-data-local: $(lt_Makefile_in)
 ## ------------- ##
 
 edit_readme_alpha	= $(aux_dir)/edit-readme-alpha
+gitlog_to_changelog	= $(aux_dir)/gitlog-to-changelog
 
 dotversion		= $(srcdir)/.version
 tarball_version		= $(distdir)/.tarball-version
+readme			= $(distdir)/README
+changelog		= $(distdir)/ChangeLog
 
+# Generate ChangeLog for this year until it rotates out, when this start
+# date is updated to the following year.
+changelog_start_date = 2011-01-01
+$(changelog): FORCE
+	if test -d .git; then \
+	  $(gitlog_to_changelog) --since=$(changelog_start_date) > '$@T'; \
+	  rm -f '$@'; mv '$@T' '$@'; \
+	fi
 
 ## Arrange so that .tarball-version appears only in the distribution
 ## tarball, and never in a checked-out repository.
@@ -502,7 +513,7 @@ $(readme): FORCE
 	test -n `expr $(VERSION) : $(re_odd_version)` && \
 	  $(SHELL) $(edit_readme_alpha) '$@'
 
-dist-hook: $(readme)
+dist-hook: $(changelog) $(dotversion) $(readme)
 ## Arrange so that .tarball-version appears only in the distribution
 ## tarball, and never in a checked-out repository.
 	echo '$(VERSION)' > $(tarball_version)
diff --git a/bootstrap.conf b/bootstrap.conf
index 38cd8fc..a94d319 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -64,6 +64,7 @@ gnulib_modules='
         do-release-commit-and-tag
         gendocs
         git-version-gen
+        gitlog-to-changelog
         gnu-web-doc-update
         gnupload
         maintainer-makefile
diff --git a/libltdl/config/.gitignore b/libltdl/config/.gitignore
index 84c6e1d..e2c12dd 100644
--- a/libltdl/config/.gitignore
+++ b/libltdl/config/.gitignore
@@ -15,3 +15,4 @@
 /texinfo.tex
 /useless-if-before-free
 /vc-list-files
+/gitlog-to-changelog
-- 
1.7.7

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)