m4-commit
[Top][All Lists]
Advanced

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

[SCM] GNU M4 source repository branch, branch-1_4, updated. v1.4.10b-1-g


From: Eric Blake
Subject: [SCM] GNU M4 source repository branch, branch-1_4, updated. v1.4.10b-1-g210746f
Date: Tue, 26 Feb 2008 03:46:37 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU M4 source repository".

http://git.sv.gnu.org/gitweb/?p=m4.git;a=commitdiff;h=210746ff583a56c1027463dc07e8a11d4e6dd545

The branch, branch-1_4 has been updated
       via  210746ff583a56c1027463dc07e8a11d4e6dd545 (commit)
       via  2261f08799ef4cc16a868bc3492356c1edf99ca9 (commit)
      from  9d400bc11d96c313d041e73b8f7b9a2d069d1ae5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 210746ff583a56c1027463dc07e8a11d4e6dd545
Author: Eric Blake <address@hidden>
Date:   Mon Feb 25 20:35:22 2008 -0700

    Minor tweaks, learned from the release.
    
    * Makefile.maint (VC-tag): Avoid dashed git commands, and use
    signing key from Makefile.cfg.
    (delta-diff): Avoid blank lines mid-macro.
    * HACKING: Tweak instructions.
    * NEWS: Bump version.
    * configure.ac (AC_INIT): Likewise.
    
    Signed-off-by: Eric Blake <address@hidden>

commit 2261f08799ef4cc16a868bc3492356c1edf99ca9
Author: Eric Blake <address@hidden>
Date:   Sat Feb 23 15:07:49 2008 -0700

    Beta Release Version 1.4.10b.
    
    * configure.ac (AC_INIT): Bump version.
    (AM_INIT_AUTOMAKE): Increase requirement, and add dist-lzma.
    * NEWS: Bump version.
    * HACKING: Update for git release procedures.
    * README: Update to mention this is a beta release on the stable
    branch.
    * bootstrap: Mention new automake dependency.
    * Makefile.cfg: New file.
    * GNUmakefile: Use it.
    * Makefile.maint (gzip_rsyncable, GZIP_ENV, GIT, VC, VC-tag)
    (VERSION_REGEXP, this-vc-tag, my_distdir, null_AM_MAKEFLAGS)
    (TMPDIR, gnulib-version): New macros, borrowed from coreutils.
    (makefile-check, news-date-check, changelog-check, m4-check)
    (vc-diff-check, maintainer-distcheck, vc-dist, my-distcheck)
    (announcement, alpha, beta, major): New rules, borrowed from
    coreutils.
    (TEXI2HTML, cvs-release, update-timestamps, cvs-news, cvs-commit)
    (cvs-dist): Delete.
    * Makefile.am (EXTRA_DIST): Distribute new file.
    * m4/gnulib-cache.m4: Import announce-gen module.
    
    Signed-off-by: Eric Blake <address@hidden>

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog          |   36 +++-
 GNUmakefile        |    4 +-
 HACKING            |  206 ++-------------
 Makefile.am        |    6 +-
 Makefile.cfg       |   38 +++
 Makefile.maint     |  197 ++++++++++-----
 NEWS               |  727 ++++++++++++++++++++++++++++++----------------------
 README             |    2 +-
 bootstrap          |    4 +-
 configure.ac       |    8 +-
 m4/gnulib-cache.m4 |    4 +-
 11 files changed, 664 insertions(+), 568 deletions(-)
 create mode 100644 Makefile.cfg

diff --git a/ChangeLog b/ChangeLog
index f867f1f..5d5f76f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,35 @@
+2008-02-25  Eric Blake  <address@hidden>
+
+       Minor tweaks, learned from the release.
+       * Makefile.maint (VC-tag): Avoid dashed git commands, and use
+       signing key from Makefile.cfg.
+       (delta-diff): Avoid blank lines mid-macro.
+       * HACKING: Tweak instructions.
+       * NEWS: Bump version.
+       * configure.ac (AC_INIT): Likewise.
+
+       Beta Release Version 1.4.10b.
+       * configure.ac (AC_INIT): Bump version.
+       (AM_INIT_AUTOMAKE): Increase requirement, and add dist-lzma.
+       * NEWS: Bump version.
+       * HACKING: Update for git release procedures.
+       * README: Update to mention this is a beta release on the stable
+       branch.
+       * bootstrap: Mention new automake dependency.
+       * Makefile.cfg: New file.
+       * GNUmakefile: Use it.
+       * Makefile.maint (gzip_rsyncable, GZIP_ENV, GIT, VC, VC-tag)
+       (VERSION_REGEXP, this-vc-tag, my_distdir, null_AM_MAKEFLAGS)
+       (TMPDIR, gnulib-version): New macros, borrowed from coreutils.
+       (makefile-check, news-date-check, changelog-check, m4-check)
+       (vc-diff-check, maintainer-distcheck, vc-dist, my-distcheck)
+       (announcement, alpha, beta, major): New rules, borrowed from
+       coreutils.
+       (TEXI2HTML, cvs-release, update-timestamps, cvs-news, cvs-commit)
+       (cvs-dist): Delete.
+       * Makefile.am (EXTRA_DIST): Distribute new file.
+       * m4/gnulib-cache.m4: Import announce-gen module.
+
 2008-02-23  Eric Blake  <address@hidden>
 
        Use size_t consistently for string length truncation.
@@ -1002,7 +1034,7 @@
 
 2007-07-09  Eric Blake  <address@hidden>
 
-       Release 1.4.10:
+       Release Version 1.4.10.
        * doc/Makefile.am (m4_TEXINFOS): Distribute gpl-3.0.texi.
        * Makefile.am (EXTRA_DIST): Distribute gnulib diffs.
        * configure.ac (AC_INIT): Bump version number.
@@ -1080,7 +1112,7 @@
        * configure.ac (AC_INIT): Bump version number.
        * NEWS: Start changes since 1.4.9b, and fix typo.
 
-       Beta Release 1.4.9b:
+       Beta Release Version 1.4.9b.
        * configure.ac (AC_INIT): Bump version number.
        * NEWS: Describe changes since 1.4.9.
 
diff --git a/GNUmakefile b/GNUmakefile
index bcdcc6c..800330e 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -4,7 +4,8 @@
 # It is necessary if you want to build targets usually of interest
 # only to the maintainer.
 
-# Copyright (C) 2001, 2003, 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2006, 2007, 2008 Free Software Foundation,
+# Inc.
 #
 # This file is part of GNU M4.
 #
@@ -41,6 +42,7 @@ ifeq ($(have-Makefile),yes)
 export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
 
 include Makefile
+include $(srcdir)/Makefile.cfg
 include $(srcdir)/Makefile.maint
 
 else
diff --git a/HACKING b/HACKING
index 987d2c3..f42ffb4 100644
--- a/HACKING
+++ b/HACKING
@@ -41,10 +41,11 @@ and is not part of a release distribution.
 * The master M4 repository is stored in git.
 
 * Before you can build from git, you need to bootstrap.  This requires:
-  - A pre-installed version of GNU M4 built from a package
+  - A pre-installed version of GNU M4 1.4 or later, built from a package
   - Autoconf 2.60 or later
-  - Automake 1.9.6 or later
+  - Automake 1.10.1 or later
   - Help2man 1.29 or later
+  - LZMA Utils 4.32 or later (from <http://tukaani.org/lzma/>)
   - Texinfo 4.8 or later
   - Any prerequisites of the above (such as perl, tex)
   - A git checkout of gnulib.  A read-only copy of gnulib can be
@@ -198,7 +199,7 @@ yyyy-mm-dd  Name of Author  <address@hidden>  (tiny change)
   See http://www.gnu.org/software/libtool/contribute.html for details of
   the numbering scheme (m4 uses the same scheme as libtool).
 
-* Update NEWS, ChangeLog.
+* Update NEWS, configure.ac, README, ChangeLog.
 
 * Run ./bootstrap.
 
@@ -211,20 +212,18 @@ yyyy-mm-dd  Name of Author  <address@hidden>  (tiny 
change)
   be up-to-date with m4 --help output, but `make dist' intentionally
   does not depend on running a built binary.
 
-* Run `make distcheck'.  If there are any problems, fix them and start
-  again.
+* Run `make maintainer-distcheck'.  If there are any problems, fix them
+  and start again.
 
-* Run ./commit from the source tree.
+* Run `git commit' from the source tree if there are any changes from
+  the previous steps.
 
-* TODO - adjust this step to account for git:
-  Run `make cvs-dist', which will build a release tarball (with `make
-  distcheck') and tag the tree with release-$(VERSION).
+* Run `make <target> PREV_VERSION=maj.min[.mic[alpha]]', with target set
+  to `major', `alpha', or `beta' as appropriate.  This will run various
+  additional checks, tag the tree with release-$(VERSION), and create
+  diff and xdelta files from the previous version.
 
-* Run `make deltas' (pass LASTRELEASE=maj.min[.mic[alpha]] if needed) to
-  create both diff and xdelta files between the previous release tarball
-  and the new.
-
-* Run './gnupload --to [dest].gnu.org:m4 [files]' to create
+* Run './build-aux/gnupload --to [dest].gnu.org:m4 [files]' to create
   detached gpg signature and clear signed directive files, and upload
   the combination to the correct location.  For an alpha release,
   gnupload will place files in alpha.gnu.org, in /incoming/alpha, and
@@ -233,187 +232,26 @@ yyyy-mm-dd  Name of Author  <address@hidden>  (tiny 
change)
 
 * Send announcement to address@hidden, address@hidden, and
   address@hidden  If not an alpha send to address@hidden
-  as well.  Use the templates below as a starting point.  Contact a list
-  administrator for m4-announce in advance to ensure your post will
-  make it through (the list is normally set to silently discard all
-  posts, even from subscribers).
+  as well.  Use /tmp/announce-m4-<version>, created during the above
+  make run, as a starting point.  Contact a list administrator for
+  m4-announce in advance to ensure your post will make it through (the
+  list is normally set to silently discard all posts, even from
+  subscribers).
 
 * Update version number in configure.ac to next alpha number.
   See http://www.gnu.org/software/libtool/contribute.html for details of
   the numbering scheme.
 
-* Update NEWS, ChangeLog.
+* Update NEWS, configure.ac, ChangeLog.
 
-* Run ./commit.
+* Run `git commit' and `git push origin refs/tags<version>' to push the
+  release tag.
 
 * For non-alpha releases, update the webpages.  Replace manual.html with
   the new one (generate with `make web-manual').
 
-
-7. Alpha release note template
-==============================
-
-To: address@hidden, address@hidden, address@hidden
-Subject: GNU M4 @VERSION@ released (alpha release).
-
-The GNU M4 Team is pleased to announce alpha release @VERSION@ of GNU
-M4.
-
-GNU `m4' is an implementation of the traditional Unix macro processor.
-It is mostly SVR4 compatible, although it has some extensions (for
-example, handling more than 9 positional parameters to macros).  `m4'
-also has built-in functions for including files, running shell commands,
-doing arithmetic, etc.  Autoconf needs GNU `m4' for generating
-`configure' scripts, but not for running them.
-
-Here are the compressed sources:
-
-  ftp://alpha.gnu.org/gnu/m4/address@hidden@.tar.gz    address@hidden@]
-  ftp://alpha.gnu.org/gnu/m4/address@hidden@.tar.bz2   address@hidden@]
-
-Here are the xdeltas and diffs against address@hidden@:
-
-  ftp://alpha.gnu.org/gnu/m4/address@hidden@address@hidden@.diff.gz   
address@hidden@]
-  ftp://alpha.gnu.org/gnu/m4/address@hidden@address@hidden@.xdelta    
address@hidden@]
-
-Here are the gpg detached signatures:
-
-  ftp://alpha.gnu.org/gnu/m4/address@hidden@.tar.gz.sig
-  ftp://alpha.gnu.org/gnu/m4/address@hidden@.tar.bz2.sig
-  ftp://alpha.gnu.org/gnu/m4/address@hidden@address@hidden@.diff.gz.sig
-  ftp://alpha.gnu.org/gnu/m4/address@hidden@address@hidden@.xdelta.sig
-
-You should download the signature named after any tarball you download,
-and then verify its integrity with, for example:
-
-  gpg --verify address@hidden@.tar.gz.sig
-
-If that command fails because you don't have the required public key,
-then run this command to import it:
-
-  gpg --keyserver wwwkeys.pgp.net --recv-keys @KEY@
-
-Here are the MD5 and SHA1 checksums:
-
-  @MD5SUM@ address@hidden@.tar.gz
-  @MD5SUM@ address@hidden@.tar.bz2
-  @MD5SUM@ address@hidden@address@hidden@.diff.gz
-  @MD5SUM@ address@hidden@address@hidden@.xdelta
-  @SHA1SUM@ address@hidden@.tar.gz
-  @SHA1SUM@ address@hidden@.tar.bz2
-  @SHA1SUM@ address@hidden@address@hidden@.diff.gz
-  @SHA1SUM@ address@hidden@address@hidden@.xdelta
-
-This release has @address@hidden
-
-This release was bootstrapped with @address@hidden
-
-Alternatively, you can fetch the unbootstrapped sourcecode from git by
-using the following commands:
-
-  $ git clone git://git.sv.gnu.org/m4
-  $ git checkout -b branch @GIT_RELEASE_TAG@
-
-You will then need to have recent versions of Automake and Autoconf
-installed, and a recent checkout of gnulib, in order to bootstrap the
-checked out sources yourself.
-
-New in @VERSION@: @RELEASE_DATE@
-
-  @EXCERPT_FROM_NEWS_FILE@
-
-Please report bugs to <address@hidden>, along with the output of 'make
-check' and any other information that might be useful in resolving the
-issue.
-
-
-8. Full release note template
-=============================
-
-To: address@hidden
-To: address@hidden, address@hidden, address@hidden
-Subject: GNU M4 @VERSION@ released.
-
-The GNU M4 Team is pleased to announce the release of GNU M4 @address@hidden
-
-GNU `m4' is an implementation of the traditional Unix macro processor.
-It is mostly SVR4 compatible, although it has some extensions (for
-example, handling more than 9 positional parameters to macros).  `m4'
-also has built-in functions for including files, running shell commands,
-doing arithmetic, etc.  Autoconf needs GNU `m4' for generating
-`configure' scripts, but not for running them.
-
-This release has @address@hidden
-
-New in @VERSION@: @RELEASE_DATE@
-
-  @EXCERPT_FROM_NEWS_FILE@
-
address@hidden@ is available now from ftp.gnu.org, along with diffs and
-xdeltas against address@hidden@ that are also
-available from ftp.gnu.org.  Please use a mirror to reduce stress on the
-main gnu machine:
-
-  http://www.gnu.org/order/ftp.html
-
-Here are the compressed sources:
-
-  ftp://ftp.gnu.org/gnu/m4/address@hidden@.tar.gz    address@hidden@]
-  ftp://ftp.gnu.org/gnu/m4/address@hidden@.tar.bz2   address@hidden@]
-
-Here are the xdeltas and diffs against address@hidden@:
-
-  ftp://ftp.gnu.org/gnu/m4/address@hidden@address@hidden@.diff.gz   
address@hidden@]
-  ftp://ftp.gnu.org/gnu/m4/address@hidden@address@hidden@.xdelta    
address@hidden@]
-
-Here are the gpg detached signatures:
-
-  ftp://ftp.gnu.org/gnu/m4/address@hidden@.tar.gz.sig
-  ftp://ftp.gnu.org/gnu/m4/address@hidden@.tar.bz2.sig
-  ftp://ftp.gnu.org/gnu/m4/address@hidden@address@hidden@.diff.gz.sig
-  ftp://ftp.gnu.org/gnu/m4/address@hidden@address@hidden@.xdelta.sig
-
-You should download the signature named after any tarball you download,
-and then verify its integrity with, for example:
-
-  gpg --verify address@hidden@.tar.gz.sig
-
-If that command fails because you don't have the required public key,
-then run this command to import it:
-
-  gpg --keyserver wwwkeys.pgp.net --recv-keys @KEY@
-
-Here are the MD5 and SHA1 checksums:
-
-  @MD5SUM@ address@hidden@.tar.gz
-  @MD5SUM@ address@hidden@.tar.bz2
-  @MD5SUM@ address@hidden@address@hidden@.diff.gz
-  @MD5SUM@ address@hidden@address@hidden@.xdelta
-  @SHA1SUM@ address@hidden@.tar.gz
-  @SHA1SUM@ address@hidden@.tar.bz2
-  @SHA1SUM@ address@hidden@address@hidden@.diff.gz
-  @SHA1SUM@ address@hidden@address@hidden@.xdelta
-
-This release was bootstrapped with @address@hidden
-
-Alternatively, you can fetch the unbootstrapped sourcecode from git by
-using the following commands:
-
-  $ git clone git://git.sv.gnu.org/m4
-  $ git checkout -b branch @GIT_RELEASE_TAG@
-
-You will then need to have the latest release versions of Automake
-(@AUTOMAKE_VERSION@) and Autoconf (@AUTOCONF_VERSION@) installed, as
-well as a git checkout of gnulib, in order to bootstrap the checked out
-sources yourself.
-
-Please report bugs to <address@hidden>, along with the output of 'make
-check' and any other information that might be useful in resolving the
-issue.
-
-
 -- 
-Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 The canonical source of this file is maintained with the
 GNU M4 package.  Report bugs to address@hidden
diff --git a/Makefile.am b/Makefile.am
index f679949..4c1ff26 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,7 @@
 ## Makefile.am - template for generating Makefile via Automake
 ##
-## Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software
-## Foundation, Inc.
+## Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008 Free
+## Software Foundation, Inc.
 ##
 ## This file is part of GNU M4.
 ##
@@ -21,7 +21,7 @@
 ## Written by Gary V. Vaughan <address@hidden>
 
 SUBDIRS = . examples lib src doc tests checks
-EXTRA_DIST = bootstrap c-boxes.el GNUmakefile Makefile.maint \
+EXTRA_DIST = bootstrap c-boxes.el GNUmakefile Makefile.cfg Makefile.maint \
        m4/gnulib-cache.m4
 DISTCLEANFILES = stamp-h
 ## maintainer-clean should remove as much as possible that ./bootstrap can
diff --git a/Makefile.cfg b/Makefile.cfg
new file mode 100644
index 0000000..1e4b827
--- /dev/null
+++ b/Makefile.cfg
@@ -0,0 +1,38 @@
+# Customize Makefile.maint.                           -*- makefile -*-
+# Copyright (C) 2003-2008 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Use alpha.gnu.org for alpha and beta releases.
+# Use ftp.gnu.org for major releases.
+gnu_ftp_host-alpha = alpha.gnu.org
+gnu_ftp_host-beta = alpha.gnu.org
+gnu_ftp_host-major = ftp.gnu.org
+gnu_rel_host = $(gnu_ftp_host-$(RELEASE_TYPE))
+
+url_dir_list = \
+  ftp://$(gnu_rel_host)/gnu/coreutils
+
+# The GnuPG ID of the key used to sign the tarballs.
+gpg_key_ID = F4850180
+
+# Tests not to run as part of "make distcheck".
+# Exclude changelog-check here so that there's less churn in ChangeLog
+# files -- otherwise, you'd need to have the upcoming version number
+# at the top of the file for each `make distcheck' run.
+local-checks-to-skip = changelog-check
+
+# The local directory containing the checked-out copy of gnulib used in this
+# release.  Used solely to get gnulib's SHA1 for the "announcement" target.
+gnulib_dir = ../gnulib
diff --git a/Makefile.maint b/Makefile.maint
index c07aee1..9256c6d 100644
--- a/Makefile.maint
+++ b/Makefile.maint
@@ -1,6 +1,6 @@
 ## Makefile.maint -- Makefile rules for m4 maintainers -*-Makefile-*-
 ##
-## Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation
+## Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation
 ##
 ## This file is part of GNU M4.
 ##
@@ -17,19 +17,137 @@
 ## You should have received a copy of the GNU General Public License
 ## along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-TEXI2HTML = texi2html
+# Do not save the original name or timestamp in the .tar.gz file.
+# Use --rsyncable if available.
+gzip_rsyncable := \
+  $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null && echo 
--rsyncable)
+GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
+
+CVS = cvs
+GIT = git
+VC = $(GIT)
+VC-tag = git tag -s -m '$(VERSION)' -u $(gpg_key_ID)
+
+VERSION_REGEXP = $(subst .,\.,$(VERSION))
+ifeq ($(VC),$(GIT))
+this-vc-tag = v$(VERSION)
+else
+tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
+tag-this-version = $(subst .,_,$(VERSION))
+this-vc-tag = $(tag-package)-$(tag-this-version)
+endif
+my_distdir = $(PACKAGE)-$(VERSION)
+
+# Ensure that we use only the standard $(VAR) notation,
+# not @...@ in Makefile.am, now that we can rely on automake
+# to emit a definition for each substituted variable.
+makefile-check:
+       grep -nE '@[A-Z_0-9]+@' `find . -name Makefile.am` \
+         && { echo 'Makefile.maint: use $$(...), not @...@' 1>&2; exit 1; } || 
:
+
+news-date-check: NEWS version-check
+       today=`date +%Y-%m-%d`;                                         \
+       if head NEWS | grep '^\*.* $(VERSION_REGEXP) ('$$today')'       \
+           >/dev/null; then                                            \
+         :;                                                            \
+       else                                                            \
+         echo "version or today's date is not in NEWS" 1>&2;           \
+         exit 1;                                                       \
+       fi
+
+changelog-check:
+       if head ChangeLog | grep 'Version $(VERSION_REGEXP)\.$$'        \
+           >/dev/null; then                                            \
+         :;                                                            \
+       else                                                            \
+         echo "$(VERSION) not in ChangeLog" 1>&2;                      \
+         exit 1;                                                       \
+       fi
+
+m4-check:
+       @grep -n 'AC_DEFUN([^[]' m4/*.m4 \
+         && { echo 'Makefile.maint: quote the first arg to AC_DEFUN' 1>&2; \
+              exit 1; } || :
+
+vc-diff-check:
+       $(VC) diff > vc-diffs || :
+       if test -s vc-diffs; then                               \
+         cat vc-diffs;                                         \
+         echo "Some files are locally modified:" 1>&2;         \
+         exit 1;                                               \
+       else                                                    \
+         rm vc-diffs;                                          \
+       fi
 
-.PHONY: cvs-release
-cvs-release: version-check prev-tarball cvs-news cvs-commit cvs-dist deltas 
web-manual
-       @tarname="$(PACKAGE)-$(VERSION).tar.gz"; \
-       diffname="$(PACKAGE)-$(LASTRELEASE)-$(VERSION).diff.gz"; \
-       xdeltaname="$(PACKAGE)-$(LASTRELEASE)-$(VERSION).xdelta"; \
-       echo " *** Upload $$tarname, $$tarname.sig,";\
-       echo " *** $$tarname.directive.asc, $$diffname,"; \
-       echo " *** $$diffname.sig, $$diffname.directive.asc,"; \
-       echo " *** $$xdeltaname, $$xdeltaname.sig and";\
-       echo " *** $$xdeltaname.directive.asc to either"
-       echo " *** /incoming/alpha or /incoming/ftp on ftp-upload.gnu.org."
+maintainer-distcheck:
+       $(MAKE) distcheck
+       $(MAKE) my-distcheck
+
+# Don't make a distribution if checks fail.
+# Also, make sure the NEWS file is up-to-date.
+vc-dist: $(local-check) vc-diff-check maintainer-distcheck
+       $(MAKE) dist
+
+# Use this to make sure we don't run these programs when building
+# from a virgin tgz file, below.
+null_AM_MAKEFLAGS = \
+  ACLOCAL=false \
+  AUTOCONF=false \
+  AUTOMAKE=false \
+  AUTOHEADER=false \
+  MAKEINFO=false
+
+# Use -Wformat -Werror to detect format-string/arg-list mismatches.
+# Also, check for shadowing problems with -Wshadow, and for pointer
+# arithmetic problems with -Wpointer-arith.
+# These CFLAGS are pretty strict.  If you build this target, you probably
+# have to have a recent version of gcc and glibc headers.
+TMPDIR ?= /tmp
+t=$(TMPDIR)/$(PACKAGE)/test
+my-distcheck: $(local-check) check
+       -rm -rf $(t)
+       mkdir -p $(t)
+       GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
+       cd $(t)/$(distdir)                              \
+         && ./configure                                \
+         && $(MAKE) CFLAGS='$(warn_cflags)'            \
+             AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)'       \
+         && $(MAKE) dvi                                \
+         && $(MAKE) check                              \
+         && $(MAKE) distclean
+       (cd $(t) && mv $(distdir) $(distdir).old        \
+         && $(AMTAR) -zxf - ) < $(distdir).tar.gz
+       diff -ur $(t)/$(distdir).old $(t)/$(distdir)
+       -rm -rf $(t)
+       @echo "========================"; \
+       echo "$(distdir).tar.gz is ready for distribution"; \
+       echo "========================"
+
+gnulib-version = $$(cd $(gnulib_dir) && git describe)
+
+announcement: NEWS ChangeLog $(rel-files)
+       @./build-aux/announce-gen                                       \
+           --release-type=$(RELEASE_TYPE)                              \
+           --package=$(PACKAGE)                                        \
+           --prev=$(PREV_VERSION)                                      \
+           --curr=$(VERSION)                                           \
+           --gpg-key-id=$(gpg_key_ID)                                  \
+           --news=NEWS                                                 \
+           --bootstrap-tools=autoconf,automake,gnulib                  \
+           --gnulib-version=$(gnulib-version)                          \
+           $(addprefix --url-dir=, $(url_dir_list))
+
+.PHONY: alpha beta major
+alpha beta major: $(local-check)
+       test $@ = major                                         \
+         && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \
+              || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
+         || :
+       $(MAKE) vc-dist
+       $(MAKE) news-date-check changelog-check
+       $(MAKE) deltas
+       $(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir)
+       $(VC-tag) $(this-vc-tag)
 
 .PHONY: version-check
 version-check:
@@ -44,47 +162,12 @@ version-check:
 .PHONY: prev-tarball
 prev-tarball:
 ## Make sure we have the previous release tarball in the tree.
-       @if test -z "$(LASTRELEASE)"; \
-               then echo "LASTRELEASE is not set"; exit 1; fi
-       @ofile="$(PACKAGE)-$(LASTRELEASE).tar.gz"; \
+       @if test -z "$(PREV_VERSION)"; \
+               then echo "PREV_VERSION is not set"; exit 1; fi
+       @ofile="$(PACKAGE)-$(PREV_VERSION).tar.gz"; \
        if test -f $$ofile; then :; \
        else echo "Cannot make deltas without $$ofile"; exit 1; fi
 
-# TSDEPS will be defined to TSDEPS_DIST at `make dist' time
-TSDEPS =
-TSDEPS_DIST = ChangeLog
-CVS = cvs # set it to `:' to avoid CVS operations
-
-.PHONY: timestamps update-timestamps
-timestamps: update-timestamps
-update-timestamps:
-       @if (cd $(srcdir) && test -d CVS && \
-           $(CVS) -n update $(TSDEPS_DIST) | grep '^M'); then \
-               echo "Cannot make cvs-dist before commit"; exit 1; else :; fi
-
-
-.PHONY: cvs-news
-cvs-news:
-## Make sure the NEWS file is up-to-date:
-       @if sed '1,4d;5q' $(srcdir)/NEWS | grep -e "$(VERSION)" >/dev/null; \
-       then :; \
-       else \
-         echo "NEWS not updated; not releasing" 1>&2; \
-         exit 1; \
-       fi
-
-.PHONY: cvs-commit
-cvs-commit: cvs-news
-       cd $(srcdir) && $(SHELL) ./commit
-
-.PHONY: cvs-dist
-cvs-dist: cvs-news timestamps
-## Build the distribution:
-       $(MAKE) dist
-## Finally, if everything was successful, tag the release
-       cd $(srcdir) \
-         && $(CVS) -q tag `echo "release-$(VERSION)" | sed 's/\./_/g'`
-
 .PHONY: new-tarball
 new-tarball:
 ## Make sure we have the new release tarball in the tree.
@@ -113,15 +196,13 @@ delta-diff: prev-tarball new-tarball
 ## Unpack the tarballs somewhere to diff them
        rm -rf delta-diff
        mkdir delta-diff
-
-       ofile="../$(PACKAGE)-$(LASTRELEASE)-$(VERSION).diff.gz"; \
+       ofile="../$(PACKAGE)-$(PREV_VERSION)-$(VERSION).diff.gz"; \
        cd delta-diff \
-       && tar xzf "../$(PACKAGE)-$(LASTRELEASE).tar.gz" \
+       && tar xzf "../$(PACKAGE)-$(PREV_VERSION).tar.gz" \
        && tar xzf "../$(PACKAGE)-$(VERSION).tar.gz" \
        && $(DIFF) $(DIFF_OPTIONS) \
-               $(PACKAGE)-$(LASTRELEASE) $(PACKAGE)-$(VERSION) \
+               $(PACKAGE)-$(PREV_VERSION) $(PACKAGE)-$(VERSION) \
                | GZIP=$(GZIP_ENV) gzip -c > $$ofile
-
        rm -rf delta-diff
 
 XDELTA = xdelta
@@ -132,9 +213,9 @@ delta-xdelta: prev-tarball new-tarball got-xdelta
 ## Generate the delta file (xdelta has weird exit statuses, so we need to
 ## add some shell code to keep make happy), and then generate the signatures
 ## for FSF ftp-upload:
-       ofile="$(PACKAGE)-$(LASTRELEASE)-$(VERSION).xdelta"; \
+       ofile="$(PACKAGE)-$(PREV_VERSION)-$(VERSION).xdelta"; \
        ( test -z `$(XDELTA) delta $(XDELTA_OPTIONS) \
-           $(PACKAGE)-$(LASTRELEASE).tar.gz $(PACKAGE)-$(VERSION).tar.gz \
+           $(PACKAGE)-$(PREV_VERSION).tar.gz $(PACKAGE)-$(VERSION).tar.gz \
            $$ofile 2>&1` \
          && : )
 
diff --git a/NEWS b/NEWS
index 8faafcf..500aac1 100644
--- a/NEWS
+++ b/NEWS
@@ -2,317 +2,422 @@ GNU M4 NEWS - User visible changes.
 Copyright (C) 1992, 1993, 1994, 2004, 2005, 2006, 2007, 2008 Free Software
 Foundation, Inc.
 
-Version 1.4.11 - ?? ??? 2008, by ????  (git version 1.4.10a-*)
-
-* Security fixes for the -F option, for bugs present since -F was
-  introduced in 1.3: Avoid core dump with 'm4 -F file -t undefined', and
-  avoid arbitrary code execution with certain file names.
-* Fix regression introduced in 1.4.9b in the `divert' builtin when more
-  than 512 kibibytes are saved in diversions on platforms like NetBSD where
-  fopen(name,"a+") seeks to the end of the file.
-* The output of the `maketemp' and `mkstemp' builtins is now quoted if a
-  file was created.  This is a minor security fix, because it was possible
-  (although rather unlikely) that an unquoted string could match an
-  existing macro name, such that use of the `mkstemp' output would trigger
-  inadvertent macro expansion and operate on the wrong file name.
-* Enhance the `defn' builtin to support concatenation of multiple text
-  arguments, as required by POSIX.  However, at this time, it is not
-  possible to concatenate a builtin macro with anything else; a warning is
-  now issued if this is attempted, although a future version of M4 may lift
-  this restriction to match other implementations.
-* Enhance the `index' builtin to guarantee linear behavior and often
-  acheive sublinear results, in spite of the surprisingly large number of
-  systems with a brain-dead quadratic strstr(3).
-* Enhance the `regexp' and `patsubst' builtins to cache frequently used
-  regular expressions, which speeds up typical Autoconf usage.
-* Enhance the `format' builtin to warn for more suspicious usages, such as
-  missing arguments or problems parsing according to the format string.
-* Enhance the `ifelse' and `shift' builtins so that tail-recursive
-  algorithms based on `$@' operate in linear, rather than quadratic, time
-  and memory.
-* A number of portability improvements inherited from gnulib.
-
-Version 1.4.10 - 09 Jul 2007, by Eric Blake  (CVS version 1.4.9c)
-
-* Upgrade from GPL version 2 to GPL version 3 or later.
-* A number of portability improvements inherited from gnulib.
-* Avoid undefined behavior introduced in 1.4.9b in the `format' builtin
-  when handling %c.  However, this area of code has never been documented,
-  and currently does not match the POSIX behavior of printf(1), so it may
-  have further changes in the next version.
-
-Version 1.4.9b - 29 May 2007, by Eric Blake  (CVS version 1.4.9a)
-
-* Fix regression introduced in 1.4.9 in the `eval' builtin when performing
-  division.
-* Fix regression introduced in 1.4.8 in the `-F' option that made it
-  impossible to freeze more than 512 kibibytes of diverted text.
-* The synclines option `-s' no longer generates sync lines in the middle of
-  multiline comments or quoted strings.
-* Work around a number of corner-case POSIX compliance bugs in various
-  broken stdio libraries.  In particular, the `syscmd' builtin behaves
-  more predictably when stdin is seekable.
-* The `format' builtin now understands formats such as %a, %A, and %'hhd,
-  and works around a number of platform printf bugs.  Furthermore, the
-  sequence format(%*.*d,-1,-1,1) no longer outputs random data.  However,
-  some non-compliant platforms such as mingw still have known bugs in
-  strtod that may cause testsuite failures.
-* The testsuite is improved to also run gnulib portability tests for the
-  features that M4 imports from gnulib.
-
-Version 1.4.9 - 23 Mar 2007, by Eric Blake  (CVS version 1.4.8c)
-
-* Minor documentation and portability cleanups.
-
-Version 1.4.8b - 24 Feb 2007, by Eric Blake  (CVS version 1.4.8a)
-
-* Fix a regression introduced in 1.4.8 that made m4 unable to process
-  files larger than 2GiB on some platforms.
-* Fix a regression introduced in 1.4.8 that made m4 dump core when
-  invoked as 'm4 -- file'.
-* The `eval' builtin now follows C precedence rules.  Additionally, the
-  short-circuit operators correctly short-circuit division by zero.  The
-  previously undocumented alias of '=' meaning '==' in eval now triggers a
-  deprecation warning, so that a future version of M4 can implement a form
-  of variable assignment as an extension.
-* The `include' builtin now affects exit status on failure, as required by
-  POSIX.  Use `sinclude' if you need a successful exit status.
-* The `-E'/`--fatal-warnings' command-line option now has two levels.  When
-  specified only once, warnings affect exit status, but execution
-  continues, so that you can see all warnings instead of fixing them one
-  at a time.  To acheive 1.4.8 behavior, where the first warning
-  immediately exits, specify -E twice on the command line.
-* A new `--warn-macro-sequence' command-line option allows detection of
-  sequences in `define' and `pushdef' definitions that match an optional
-  regular expression.  The default regular expression is
-  `\$\({[^}]*}\|[0-9][0-9]+\)', corresponding to the sequences that might
-  not behave correctly when upgrading to the eventual M4 2.0.  By default,
-  M4 2.0 will follow the POSIX requirement that a macro definition
-  containing `$11' must expand to the first argument concatenated with 1,
-  rather than the eleventh argument; and will take advantage of the POSIX
-  wording that allows implementations to treat `${11}' as the eleventh
-  argument instead of literal text.  Be aware that Autoconf 2.61 will not
-  work with this option enabled with the default regular expression; but
-  Autoconf 2.62 will be compatible with this option.
-* Improved portability to platforms such as BSD/OS and AIX.
-
-Version 1.4.8 - 20 November 2006, by Eric Blake  (CVS version 1.4.7a)
-
-* The `divert' macro and `-H'/`--hashsize' command line option no longer
-  cause a core dump when handed extra large values.  Also, `divert' now
-  uses memory proportional to the number of diversions in use, rather than
-  to the maximum diversion number encountered, so that large diversion
-  numbers are less likely to exhaust system memory; and is no longer
-  limited by the maximum number of file descriptors.
-* The `--help' and `--version' command line options now consistently
-  override all earlier options.  For example, `m4 --debugfile=trace
-  --help' now no longer accidentally creates an empty file `trace'.
-* The `-L'/`--nesting-limit' command line option can now be set to 0
-  to remove the default limit of 1024.  However, it is still possible that
-  heavily nested input can cause abrupt program termination due to stack
-  overflow.
-* Problems encountered when writing to standard error, such as with the
-  `errprint' macro, now always cause a non-zero exit status.
-* Warnings and errors issued during macro expansion are now consistently
-  reported at the line where the macro name was detected, rather than
-  where the close parenthesis resides.  Text wrapped by `m4wrap' now
-  remembers the location that was in effect when m4wrap was invoked,
-  rather than changing to line 0 and the empty string for a file.  The
-  macros `__line__' and `__file__' now work correctly even as the last
-  token in an included file.
-* The `builtin' and `indir' macros now transparently handle builtin
-  tokens generated by `defn'.
-* When diversions created by the `divert' macro collect enough text that
-  M4 must use temporary files, the environment variable $TMPDIR is now
-  consulted, and a better effort is made to clean up those files in the
-  event of a fatal signal.
-* The `mkstemp' builtin is added with the same GNU semantics as `maketemp',
-  based on the recommendation of POSIX to deprecate the POSIX semantics of
-  `maketemp' as inherently insecure.  In GNU mode (no -G supplied on the
-  command line), `maketemp' silently retains the secure GNU semantics, but
-  a future release of M4 will change this to emit a warning.  In
-  traditional mode (m4 -G), `maketemp' now uses the POSIX-mandated insecure
-  semantics, and issues a warning that you should convert your script to
-  use `mkstemp' instead.  Additionally, `mkstemp' and `maketemp' are now
-  well-defined even if the template argument does not end in six `X'
-  characters.
-* The manual has been improved, including a new section on a composite
-  macro `foreach'.
-* The `changecom' and `changequote' macros now treat an empty second
-  argument the same as if it were missing, rather than using the empty
-  string and making it impossible to end a comment or quote.
-* The `translit' macro now operates in linear instead of quadratic time,
-  and is now eight-bit clean.
-* The `-D', `-U', `-s', and `-t' command line options now take effect
-  after any files encountered earlier on the command line, rather than up
-  front, as is done in traditional implementations and required by POSIX.
-
-Version 1.4.7 - 25 September 2006, by Eric Blake  (CVS version 1.4.6a)
-
-* Fix regression from 1.4.5 in handling a file that ends in a macro
-  expansion without arguments instead of a newline.
-* The define and pushdef macros now warn when the first argument is not
-  a string, rather than silently doing nothing.
-* Standard input can now be read more than once, as in 'm4 - file -', and
-  is not closed until all wrapped text is handled.  This makes a
-  difference when stdin is not a regular file, and also fixes bugs when
-  using the syscmd or esyscmd macros from wrapped text.
-* When standard input is a seekable file, the m4exit, syscmd, and esyscmd
-  macros now restore the current position to the next unread byte rather
-  than discarding an arbitrary amount of buffered data.
-* SysV command-line compatibility is no longer a goal of GNU M4; the
-  focus will be instead on POSIX compatibility.  This release continues to
-  support previous usage, but adds warnings in areas which will allow a
-  future version of GNU M4 to use its own extensions without being tied to
-  the SysV command line interface.
-* The no-op compatibility command line options -B, -N, -S, -T, and
-  --diversions may be withdrawn or assigned new meanings in future
-  releases, so they now issue a warning if used.
-* A new command line option -i replaces the compatibility -e as the
-  short spelling of --interactive, for consistency with other GNU tools; a
-  warning is issued if the old spelling is used, and it may be assigned new
-  meaning in future releases.
-* A new command line option --debugfile replaces the options -o and
-  --error-output as the preferred spelling.  The old options were
-  misleading in their names and inconsistent with other GNU tools; they are
-  still silently accepted, but no longer documented in --help, and may be
-  assigned new meanings in future releases.
-
-Version 1.4.6 - 25 August 2006, by Eric Blake  (CVS version 1.4.5a)
-
-* Fix buffer overruns in regexp and patsubst macros when handed a trailing
-  backslash in the replacement text, or when handling \n substitutions
-  beyond the number of \(\) groups.
-* Fix memory leak in regexp, patsubst, and changeword macros.
-* The format macro now understands %F, %g, and %G.
-* When loading frozen files, m4 now exits with status 63 if version
-  mismatch is detected.
-* Fix bugs that occurred when invoked with stdout or stderr closed,
-  and detect write failures to stdout or to the target of the
-  debugfile macro.  In particular, the syscmd and esyscmd macros can
-  no longer interfere with the debug stream or diversions.
-* The m4exit macro now converts values outside the range 0-255 to 1.
-* It is now an error if a command-line input file ends in the middle of a
-  comment, matching the behavior of mid-string and mid-argument
-  collection.
-* The dnl macro now warns if end of file is encountered instead of a
-  newline.
-* The error message when end of file is encountered now uses the file and
-  line where the dangling construct started, rather than `NONE:0:'.
-* The debugmode and __file__ macros, and the -s/--synclines option, now
-  show what directory a file was found in when the -I/--include option or
-  M4PATH variable had an effect.
-* The changequote and changecom macros now work with 8-bit characters, and
-  quotes and comments that begin with `(' are properly recognized
-  following a word.
-* The new macro __program__ is added, which allows the input file to issue
-  an error message that resembles messages from m4.  Warning and error
-  messages have been reformatted to comply with GNU Coding Standards.
-* The errprint, m4wrap, and shift macros are now recognized only with
-  arguments.
-* The index, substr, translit, regexp, and patsubst macros now produce
-  output when given only one argument, but still warn about a missing
-  second argument.
-* The patsubst macro now reliably finds zero-length matches at the end
-  of a string.
-
-Version 1.4.5 - 15 July 2006, by Eric Blake  (CVS version 1.4.4c)
-
-* Fix sysval on BeOS, OS/2, and other systems that store exit status
-  in the low-order byte.  Additionally, on Unix platforms, if syscmd was
-  terminated by a signal, sysval now displays the signal number shifted
-  left by eight bits, to match traditional m4 implementations.
-* The maketemp macro is no longer subject to platform limitations (such as
-  26 or 32 max files from a given template).
-* Frozen files now require that the first directive be V (version), to
-  better diagnose version mismatch.  Additionally, if the F directive
-  (builtin function) names an unknown builtin that existed in the m4 that
-  froze the file but not in the current m4 (for example, changeword), the
-  warning is deferred until an attempt is made to actually use the
-  builtin.  This allows downgrading from beta m4-1.4o to stable m4-1.4.5
-  without breaking autoconf.
-* The format and indir macros are now recognized only with arguments.
-* The eval macro no longer crashes on x86 architectures when dividing the
-  minimum integer by -1.
-* On systems with ecvt and fcvt, format no longer truncates trailing
-  zeroes on integers printed with %.0f.  On systems without these
-  functions, format is no longer subject to a buffer overflow that
-  permitted arbitrary code execution.
-* On native Windows builds, the macro __windows__ is provided instead of
-  __unix__.  Likewise, on OS/2 builds, the macro __os2__ is provided.  This
-  allows input files to determine when syscmd might behave differently.
-* Fix bug in 1.4.3 patch to use \n line-endings that did not work for
-  cygwin.
-* When given the empty string or 0, undivert is now documented as a no-op
-  rather than closing stdout, warning about a non-existent file, or trying
-  to read a directory as a file.
-* Many documentation improvements.  Also, the manual is now distributed
-  under FDL 1.2, rather than a stricter verbatim-only license.
-* Raise the -L (--nesting-limit) command line option limit from 250 to
-  1024.
-* The decr, incr, divert, m4exit, and substr macros treat an empty number
-  as 0, issue a warning, and expand as normal; rather than issuing an error
-  and expanding to the empty string.
-* The eval macro now treats an empty radix argument as 10, handles radix 1,
-  and treats the width argument as number of digits excluding the sign,
-  for compatibility with other m4 implementations.
-* The ifdef, divert, m4exit, substr, and translit macros now correctly
-  ignore extra arguments.
-* The popdef and undefine macros now correctly accept multiple arguments.
-* Although changeword is on its last leg, if enabled, it now reverts to the
-  default (faster) regexp when passed the empty string.
-* The regexp and substr macros now warn and ignore a trailing backslash in
-  the replacement, and warn on \n for n larger than the number of
-  sub-expressions in the regexp.
-
-Version 1.4.4b - 17 June 2006, by Eric Blake  (CVS version 1.4.4a)
-
-* Fix a recursive push_string crashing bug, which affected changequote of
-  three or more characters on some compilers.
-* Use automake to fix build portability issues.
-* Fix a recursive m4wrap crashing bug.
-* Fix a 1 in 2**32 hash crashing bug.
-* Tracing a macro by name is now persistent, even if the macro is
-  subsequently undefined or redefined.  The traceon and traceoff macros no
-  longer warn about undefined symbols.  This solves a crash when using
-  indir on an undefined macro traced with the -t option, as well as an
-  incorrect result of ifdef.  Furthermore, tracing is no longer transferred
-  with builtins, solving the bug of "m4 -tm4_eval" failing to give trace
-  output on the input "define(`m4_eval',defn(`eval'))m4_eval(1)".
-* Fix a crash when a macro is undefined while collecting its arguments, by
-  always using the definition that was in effect before argument
-  collection.  This behavior matches the C pre-processor, and means that
-  the sequence "define(`f',`1')f(define(`f',`2'))f" is now documented to
-  result in "12", rather than the previously undocumented "22".
-* Update the regex engine to fix several bugs.
-* Fix a potential crash on machines where char is signed.
-
-Version 1.4.4 - October 2005, by Gary V. Vaughan
-
-* ./configure --infodir=/usr/share/info now works correctly.
-* When any file named on the command line is missing exit with status 1.
-
-Version 1.4.3 - March 2005, by Gary V. Vaughan
-
-* DESTDIR installs now work correctly.
-* Don't segfault with uncompilable regexps to changeword().
-* Always use \n line-endings for frozen files (fixes a Windows bug).
-* Portability fix for systems lacking mkstemp(3).
-* Approximately 20% speed up in the common case of usage with autoconf.
-* Supported on QNX 6.3.
-
-Version 1.4.2 - August 2004, by Paul Eggert
-
-* No user visible changes; portability bug fixes only.
-
-Version 1.4.1 - June 2004, by Paul Eggert
-
-* maketemp now creates an empty file with the given name, instead of merely
-  returning the name of a nonexistent file.  This closes a security hole.
-
-Version 1.4 - October 1994, by Franc,ois Pinard
-
-(No user visible changes)
+* Noteworthy changes in Version 1.4.11 (????-??-??) [stable]
+  Released by ????, based on git version 1.4.10c-*
+
+** No user visible changes, yet.
+
+* Noteworthy changes in Version 1.4.10b (2008-02-25) [beta]
+  Released by Eric Blake, based on git version 1.4.10a
+
+** Security fixes for the -F option, for bugs present since -F was
+   introduced in 1.3: Avoid core dump with 'm4 -F file -t undefined', and
+   avoid arbitrary code execution with certain file names.
+
+** Fix regression introduced in 1.4.9b in the `divert' builtin when more
+   than 512 kibibytes are saved in diversions on platforms like NetBSD
+   where fopen(name,"a+") seeks to the end of the file.
+
+** The output of the `maketemp' and `mkstemp' builtins is now quoted if a
+   file was created.  This is a minor security fix, because it was possible
+   (although rather unlikely) that an unquoted string could match an
+   existing macro name, such that use of the `mkstemp' output would trigger
+   inadvertent macro expansion and operate on the wrong file name.
+
+** Enhance the `defn' builtin to support concatenation of multiple text
+   arguments, as required by POSIX.  However, at this time, it is not
+   possible to concatenate a builtin macro with anything else; a warning is
+   now issued if this is attempted, although a future version of M4 may
+   lift this restriction to match other implementations.
+
+** Enhance the `index' builtin to guarantee linear behavior and often
+   acheive sublinear results, in spite of the surprisingly large number of
+   systems with a brain-dead quadratic strstr(3).
+
+** Enhance the `regexp' and `patsubst' builtins to cache frequently used
+   regular expressions, which speeds up typical Autoconf usage.
+
+** Enhance the `format' builtin to warn for more suspicious usages, such as
+   missing arguments or problems parsing according to the format string.
+
+** Enhance the `ifelse' and `shift' builtins so that tail-recursive
+   algorithms based on `$@' operate in linear, rather than quadratic, time
+   and memory.
+
+** A number of portability improvements inherited from gnulib.
+
+* Noteworthy changes in Version 1.4.10 (2007-07-09) [stable]
+  Released by Eric Blake, based on CVS version 1.4.9c
+
+** Upgrade from GPL version 2 to GPL version 3 or later.
+
+** A number of portability improvements inherited from gnulib.
+
+** Avoid undefined behavior introduced in 1.4.9b in the `format' builtin
+   when handling %c.  However, this area of code has never been documented,
+   and currently does not match the POSIX behavior of printf(1), so it may
+   have further changes in the next version.
+
+* Noteworthy changes in Version 1.4.9b (2007-05-29) [beta]
+  Released by Eric Blake, based on CVS version 1.4.9a
+
+** Fix regression introduced in 1.4.9 in the `eval' builtin when performing
+   division.
+
+** Fix regression introduced in 1.4.8 in the `-F' option that made it
+   impossible to freeze more than 512 kibibytes of diverted text.
+
+** The synclines option `-s' no longer generates sync lines in the middle of
+   multiline comments or quoted strings.
+
+** Work around a number of corner-case POSIX compliance bugs in various
+   broken stdio libraries.  In particular, the `syscmd' builtin behaves
+   more predictably when stdin is seekable.
+
+** The `format' builtin now understands formats such as %a, %A, and %'hhd,
+   and works around a number of platform printf bugs.  Furthermore, the
+   sequence format(%*.*d,-1,-1,1) no longer outputs random data.  However,
+   some non-compliant platforms such as mingw still have known bugs in
+   strtod that may cause testsuite failures.
+
+** The testsuite is improved to also run gnulib portability tests for the
+   features that M4 imports from gnulib.
+
+* Noteworthy changes in Version 1.4.9 (2007-03-23) [stable]
+  Released by Eric Blake, based on CVS version 1.4.8c
+
+** Minor documentation and portability cleanups.
+
+* Noteworthy changes in Version 1.4.8b (2007-02-24) [beta]
+  Released by Eric Blake, based on CVS version 1.4.8a
+
+** Fix a regression introduced in 1.4.8 that made m4 unable to process
+   files larger than 2GiB on some platforms.
+
+** Fix a regression introduced in 1.4.8 that made m4 dump core when
+   invoked as 'm4 -- file'.
+
+** The `eval' builtin now follows C precedence rules.  Additionally, the
+   short-circuit operators correctly short-circuit division by zero.  The
+   previously undocumented alias of '=' meaning '==' in eval now triggers a
+   deprecation warning, so that a future version of M4 can implement a form
+   of variable assignment as an extension.
+
+** The `include' builtin now affects exit status on failure, as required by
+   POSIX.  Use `sinclude' if you need a successful exit status.
+
+** The `-E'/`--fatal-warnings' command-line option now has two levels.  When
+   specified only once, warnings affect exit status, but execution
+   continues, so that you can see all warnings instead of fixing them one
+   at a time.  To acheive 1.4.8 behavior, where the first warning
+   immediately exits, specify -E twice on the command line.
+
+** A new `--warn-macro-sequence' command-line option allows detection of
+   sequences in `define' and `pushdef' definitions that match an optional
+   regular expression.  The default regular expression is
+   `\$\({[^}]*}\|[0-9][0-9]+\)', corresponding to the sequences that might
+   not behave correctly when upgrading to the eventual M4 2.0.  By default,
+   M4 2.0 will follow the POSIX requirement that a macro definition
+   containing `$11' must expand to the first argument concatenated with 1,
+   rather than the eleventh argument; and will take advantage of the POSIX
+   wording that allows implementations to treat `${11}' as the eleventh
+   argument instead of literal text.  Be aware that Autoconf 2.61 will not
+   work with this option enabled with the default regular expression; but
+   Autoconf 2.62 will be compatible with this option.
+
+** Improved portability to platforms such as BSD/OS and AIX.
+
+* Noteworthy changes in Version 1.4.8 (2006-11-20) [stable]
+  Released by Eric Blake, based on CVS version 1.4.7a
+
+** The `divert' macro and `-H'/`--hashsize' command line option no longer
+   cause a core dump when handed extra large values.  Also, `divert' now
+   uses memory proportional to the number of diversions in use, rather than
+   to the maximum diversion number encountered, so that large diversion
+   numbers are less likely to exhaust system memory; and is no longer
+   limited by the maximum number of file descriptors.
+
+** The `--help' and `--version' command line options now consistently
+   override all earlier options.  For example, `m4 --debugfile=trace
+   --help' now no longer accidentally creates an empty file `trace'.
+
+** The `-L'/`--nesting-limit' command line option can now be set to 0
+   to remove the default limit of 1024.  However, it is still possible that
+   heavily nested input can cause abrupt program termination due to stack
+   overflow.
+
+** Problems encountered when writing to standard error, such as with the
+   `errprint' macro, now always cause a non-zero exit status.
+
+** Warnings and errors issued during macro expansion are now consistently
+   reported at the line where the macro name was detected, rather than
+   where the close parenthesis resides.  Text wrapped by `m4wrap' now
+   remembers the location that was in effect when m4wrap was invoked,
+   rather than changing to line 0 and the empty string for a file.  The
+   macros `__line__' and `__file__' now work correctly even as the last
+   token in an included file.
+
+** The `builtin' and `indir' macros now transparently handle builtin
+   tokens generated by `defn'.
+
+** When diversions created by the `divert' macro collect enough text that
+   M4 must use temporary files, the environment variable $TMPDIR is now
+   consulted, and a better effort is made to clean up those files in the
+   event of a fatal signal.
+
+** The `mkstemp' builtin is added with the same GNU semantics as `maketemp',
+   based on the recommendation of POSIX to deprecate the POSIX semantics of
+   `maketemp' as inherently insecure.  In GNU mode (no -G supplied on the
+   command line), `maketemp' silently retains the secure GNU semantics, but
+   a future release of M4 will change this to emit a warning.  In
+   traditional mode (m4 -G), `maketemp' now uses the POSIX-mandated
+   insecure semantics, and issues a warning that you should convert your
+   script to use `mkstemp' instead.  Additionally, `mkstemp' and `maketemp'
+   are now well-defined even if the template argument does not end in six
+   `X' characters.
+
+** The manual has been improved, including a new section on a composite
+   macro `foreach'.
+
+** The `changecom' and `changequote' macros now treat an empty second
+   argument the same as if it were missing, rather than using the empty
+   string and making it impossible to end a comment or quote.
+
+** The `translit' macro now operates in linear instead of quadratic time,
+   and is now eight-bit clean.
+
+** The `-D', `-U', `-s', and `-t' command line options now take effect
+   after any files encountered earlier on the command line, rather than up
+   front, as is done in traditional implementations and required by POSIX.
+
+* Noteworthy changes in Version 1.4.7 (2006-09-25) [stable]
+  Released by Eric Blake, based on CVS version 1.4.6a
+
+** Fix regression from 1.4.5 in handling a file that ends in a macro
+   expansion without arguments instead of a newline.
+
+** The define and pushdef macros now warn when the first argument is not
+   a string, rather than silently doing nothing.
+
+** Standard input can now be read more than once, as in 'm4 - file -', and
+   is not closed until all wrapped text is handled.  This makes a
+   difference when stdin is not a regular file, and also fixes bugs when
+   using the syscmd or esyscmd macros from wrapped text.
+
+** When standard input is a seekable file, the m4exit, syscmd, and esyscmd
+   macros now restore the current position to the next unread byte rather
+   than discarding an arbitrary amount of buffered data.
+
+** SysV command-line compatibility is no longer a goal of GNU M4; the
+   focus will be instead on POSIX compatibility.  This release continues to
+   support previous usage, but adds warnings in areas which will allow a
+   future version of GNU M4 to use its own extensions without being tied to
+   the SysV command line interface.
+
+** The no-op compatibility command line options -B, -N, -S, -T, and
+   --diversions may be withdrawn or assigned new meanings in future
+   releases, so they now issue a warning if used.
+
+** A new command line option -i replaces the compatibility -e as the
+   short spelling of --interactive, for consistency with other GNU tools; a
+   warning is issued if the old spelling is used, and it may be assigned
+   new meaning in future releases.
+
+** A new command line option --debugfile replaces the options -o and
+   --error-output as the preferred spelling.  The old options were
+   misleading in their names and inconsistent with other GNU tools; they
+   are still silently accepted, but no longer documented in --help, and may
+   be assigned new meanings in future releases.
+
+* Noteworthy changes in Version 1.4.6 (2006-08-25) [stable]
+  Released by Eric Blake, based on CVS version 1.4.5a
+
+** Fix buffer overruns in regexp and patsubst macros when handed a trailing
+   backslash in the replacement text, or when handling \n substitutions
+   beyond the number of \(\) groups.
+
+** Fix memory leak in regexp, patsubst, and changeword macros.
+
+** The format macro now understands %F, %g, and %G.
+
+** When loading frozen files, m4 now exits with status 63 if version
+   mismatch is detected.
+
+** Fix bugs that occurred when invoked with stdout or stderr closed,
+   and detect write failures to stdout or to the target of the debugfile
+   macro.  In particular, the syscmd and esyscmd macros can no longer
+   interfere with the debug stream or diversions.
+
+** The m4exit macro now converts values outside the range 0-255 to 1.
+
+** It is now an error if a command-line input file ends in the middle of a
+   comment, matching the behavior of mid-string and mid-argument
+   collection.
+
+** The dnl macro now warns if end of file is encountered instead of a
+   newline.
+
+** The error message when end of file is encountered now uses the file and
+   line where the dangling construct started, rather than `NONE:0:'.
+
+** The debugmode and __file__ macros, and the -s/--synclines option, now
+   show what directory a file was found in when the -I/--include option or
+   M4PATH variable had an effect.
+
+** The changequote and changecom macros now work with 8-bit characters, and
+   quotes and comments that begin with `(' are properly recognized
+   following a word.
+
+** The new macro __program__ is added, which allows the input file to issue
+   an error message that resembles messages from m4.  Warning and error
+   messages have been reformatted to comply with GNU Coding Standards.
+
+** The errprint, m4wrap, and shift macros are now recognized only with
+   arguments.
+
+** The index, substr, translit, regexp, and patsubst macros now produce
+   output when given only one argument, but still warn about a missing
+   second argument.
+
+** The patsubst macro now reliably finds zero-length matches at the end
+   of a string.
+
+* Noteworthy changes in Version 1.4.5 (2006-07-15) [stable]
+  Released by Eric Blake, based on CVS version 1.4.4c
+
+** Fix sysval on BeOS, OS/2, and other systems that store exit status
+   in the low-order byte.  Additionally, on Unix platforms, if syscmd was
+   terminated by a signal, sysval now displays the signal number shifted
+   left by eight bits, to match traditional m4 implementations.
+
+** The maketemp macro is no longer subject to platform limitations (such as
+   26 or 32 max files from a given template).
+
+** Frozen files now require that the first directive be V (version), to
+   better diagnose version mismatch.  Additionally, if the F directive
+   (builtin function) names an unknown builtin that existed in the m4 that
+   froze the file but not in the current m4 (for example, changeword), the
+   warning is deferred until an attempt is made to actually use the
+   builtin.  This allows downgrading from beta m4-1.4o to stable m4-1.4.5
+   without breaking autoconf.
+
+** The format and indir macros are now recognized only with arguments.
+
+** The eval macro no longer crashes on x86 architectures when dividing the
+   minimum integer by -1.
+
+** On systems with ecvt and fcvt, format no longer truncates trailing
+   zeroes on integers printed with %.0f.  On systems without these
+   functions, format is no longer subject to a buffer overflow that
+   permitted arbitrary code execution.
+
+** On native Windows builds, the macro __windows__ is provided instead of
+   __unix__.  Likewise, on OS/2 builds, the macro __os2__ is provided.
+   This allows input files to determine when syscmd might behave
+   differently.
+
+** Fix bug in 1.4.3 patch to use \n line-endings that did not work for
+   cygwin.
+
+** When given the empty string or 0, undivert is now documented as a no-op
+   rather than closing stdout, warning about a non-existent file, or trying
+   to read a directory as a file.
+
+** Many documentation improvements.  Also, the manual is now distributed
+   under FDL 1.2, rather than a stricter verbatim-only license.
+
+** Raise the -L (--nesting-limit) command line option limit from 250 to
+   1024.
+
+** The decr, incr, divert, m4exit, and substr macros treat an empty number
+   as 0, issue a warning, and expand as normal; rather than issuing an
+   error and expanding to the empty string.
+
+** The eval macro now treats an empty radix argument as 10, handles radix 1,
+   and treats the width argument as number of digits excluding the sign,
+   for compatibility with other m4 implementations.
+
+** The ifdef, divert, m4exit, substr, and translit macros now correctly
+   ignore extra arguments.
+
+** The popdef and undefine macros now correctly accept multiple arguments.
+
+** Although changeword is on its last leg, if enabled, it now reverts to the
+   default (faster) regexp when passed the empty string.
+
+** The regexp and substr macros now warn and ignore a trailing backslash in
+   the replacement, and warn on \n for n larger than the number of
+   sub-expressions in the regexp.
+
+* Noteworthy changes in Version 1.4.4b (2006-06-17) [beta]
+  Released by Eric Blake, based on CVS version 1.4.4a
+
+** Fix a recursive push_string crashing bug, which affected changequote of
+   three or more characters on some compilers.
+
+** Use automake to fix build portability issues.
+
+** Fix a recursive m4wrap crashing bug.
+
+** Fix a 1 in 2**32 hash crashing bug.
+
+** Tracing a macro by name is now persistent, even if the macro is
+   subsequently undefined or redefined.  The traceon and traceoff macros no
+   longer warn about undefined symbols.  This solves a crash when using
+   indir on an undefined macro traced with the -t option, as well as an
+   incorrect result of ifdef.  Furthermore, tracing is no longer
+   transferred with builtins, solving the bug of "m4 -tm4_eval" failing to
+   give trace output on the input
+   "define(`m4_eval',defn(`eval'))m4_eval(1)".
+
+** Fix a crash when a macro is undefined while collecting its arguments, by
+   always using the definition that was in effect before argument
+   collection.  This behavior matches the C pre-processor, and means that
+   the sequence "define(`f',`1')f(define(`f',`2'))f" is now documented to
+   result in "12", rather than the previously undocumented "22".
+
+** Update the regex engine to fix several bugs.
+
+** Fix a potential crash on machines where char is signed.
+
+* Noteworthy changes in Version 1.4.4 (Oct 2005) [stable]
+  Released by Gary V. Vaughan
+
+** ./configure --infodir=/usr/share/info now works correctly.
+
+** When any file named on the command line is missing exit with status 1.
+
+* Noteworthy changes in Version 1.4.3 (Mar 2005) [stable]
+  Released by Gary V. Vaughan
+
+** DESTDIR installs now work correctly.
+
+** Don't segfault with uncompilable regexps to changeword().
+
+** Always use \n line-endings for frozen files (fixes a Windows bug).
+
+** Portability fix for systems lacking mkstemp(3).
+
+** Approximately 20% speed up in the common case of usage with autoconf.
+
+** Supported on QNX 6.3.
+
+* Noteworthy changes in Version 1.4.2 (Aug 2004) [stable]
+  Released by Paul Eggert
+
+** No user visible changes; portability bug fixes only.
+
+* Noteworthy changes in Version 1.4.1 (Jun 2004) [stable]
+  Released by Paul Eggert
+
+** maketemp now creates an empty file with the given name, instead of merely
+   returning the name of a nonexistent file.  This closes a security hole.
+
+* Noteworthy changes in Version 1.4 (Oct 1994) [stable]
+  Released by Franc,ois Pinard
+
+** (No user visible changes)
+
 
 Version 1.3 - September 1994, by Franc,ois Pinard
 
diff --git a/README b/README
index 92a5e54..548ffb9 100644
--- a/README
+++ b/README
@@ -6,7 +6,7 @@ running shell commands, doing arithmetic, etc.  Autoconf needs 
GNU
 `m4' for generating `configure' scripts, but not for running them.
 
 GNU `m4' was originally written by Rene' Seindal, from Denmark.
-This release is considered stable.
+This is a beta release on the stable branch.
 
 If GNU `m4' is meant to serve GNU `autoconf', beware that `m4'
 should be fully installed *prior to* configuring `autoconf' itself.
diff --git a/bootstrap b/bootstrap
index dec9499..6a4fb3d 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# bootstrap (GNU M4) version 2008-02-11
+# bootstrap (GNU M4) version 2008-02-23
 # Written by Gary V. Vaughan  <address@hidden>
 
 # Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
@@ -32,7 +32,7 @@
 
 # This script bootstraps a git or CVS checkout of GNU M4 by correctly
 # calling out to parts of the GNU Build Platform.  Currently this
-# requires GNU Autoconf 2.60, GNU Automake 1.9.6, and bleeding edge
+# requires GNU Autoconf 2.60, GNU Automake 1.10.1, and bleeding edge
 # git or CVS snapshots of GNU Gnulib.
 
 # Report bugs to <address@hidden>
diff --git a/configure.ac b/configure.ac
index 630c40b..e7d6a07 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 # Configure template for GNU M4.                       -*-Autoconf-*-
-# Copyright (C) 1991, 1993, 1994, 2004, 2005, 2006, 2007 Free Software
-# Foundation, Inc.
+# Copyright (C) 1991, 1993, 1994, 2004, 2005, 2006, 2007, 2008 Free
+# Software Foundation, Inc.
 #
 # This file is part of GNU M4.
 #
@@ -18,10 +18,10 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 AC_PREREQ([2.60])
-AC_INIT([GNU M4], [1.4.10a], address@hidden)
+AC_INIT([GNU M4], [1.4.10c], address@hidden)
 AC_CONFIG_AUX_DIR([build-aux])
 
-AM_INIT_AUTOMAKE([1.9.6 dist-bzip2 gnu])
+AM_INIT_AUTOMAKE([1.10.1 dist-bzip2 dist-lzma gnu])
 
 m4_pattern_forbid([^M4_[A-Z]])
 
diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4
index be1c121..d41f158 100644
--- a/m4/gnulib-cache.m4
+++ b/m4/gnulib-cache.m4
@@ -15,11 +15,11 @@
 
 
 # Specification in the form of a command-line invocation:
-#   gnulib-tool --import --dir=. --local-dir=local --lib=libm4 
--source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=build-aux --with-tests 
--no-libtool --macro-prefix=M4 assert avltree-oset binary-io clean-temp cloexec 
close-stream closein config-h error fdl fflush flexmember fopen-safer free 
fseeko gendocs getopt gnupload gpl-3.0 intprops memmem mkstemp obstack quote 
regex stdbool stdint stdlib-safer strtod strtol unlocked-io vasnprintf-posix 
verror version-etc version-etc-fsf xalloc xprintf xvasprintf-posix
+#   gnulib-tool --import --dir=. --local-dir=local --lib=libm4 
--source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=build-aux --with-tests 
--no-libtool --macro-prefix=M4 announce-gen assert avltree-oset binary-io 
clean-temp cloexec close-stream closein config-h error fdl fflush flexmember 
fopen-safer free fseeko gendocs getopt gnupload gpl-3.0 intprops memmem mkstemp 
obstack quote regex stdbool stdint stdlib-safer strtod strtol unlocked-io 
vasnprintf-posix verror version-etc version-etc-fsf xalloc xprintf 
xvasprintf-posix
 
 # Specification in the form of a few gnulib-tool.m4 macro invocations:
 gl_LOCAL_DIR([local])
-gl_MODULES([assert avltree-oset binary-io clean-temp cloexec close-stream 
closein config-h error fdl fflush flexmember fopen-safer free fseeko gendocs 
getopt gnupload gpl-3.0 intprops memmem mkstemp obstack quote regex stdbool 
stdint stdlib-safer strtod strtol unlocked-io vasnprintf-posix verror 
version-etc version-etc-fsf xalloc xprintf xvasprintf-posix])
+gl_MODULES([announce-gen assert avltree-oset binary-io clean-temp cloexec 
close-stream closein config-h error fdl fflush flexmember fopen-safer free 
fseeko gendocs getopt gnupload gpl-3.0 intprops memmem mkstemp obstack quote 
regex stdbool stdint stdlib-safer strtod strtol unlocked-io vasnprintf-posix 
verror version-etc version-etc-fsf xalloc xprintf xvasprintf-posix])
 gl_AVOID([])
 gl_SOURCE_BASE([lib])
 gl_M4_BASE([m4])


hooks/post-receive
--
GNU M4 source repository




reply via email to

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