autoconf-patches
[Top][All Lists]
Advanced

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

upstream file sync


From: Eric Blake
Subject: upstream file sync
Date: Thu, 03 Apr 2008 06:30:43 -0600
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080213 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

There still isn't a nice rule to automatically update files borrowed from
other locations (ie. 'make update' is currently broken), but I figured a
manual file sync prior to the release was better than nothing.  Coreutils'
maint.mk is still not fully synced, but is closer.  In the process of
syncing, I fixed a few things to once again pass 'make syntax-check'.  I'm
installing this big patch:

- --
Don't work too hard, make some time for fun as well!

Eric Blake             address@hidden
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkf0zfMACgkQ84KuGfSFAYCsXwCaA2aAzZ9LnkVLwwpWkVIoy4W1
SKcAoLfGnmxQm3XGYM+nRhV7NWuBiMP/
=CIF3
-----END PGP SIGNATURE-----
>From 991e8cc0ca82045e91a4a639bfa259907912bcc8 Mon Sep 17 00:00:00 2001
From: Eric Blake <address@hidden>
Date: Thu, 3 Apr 2008 06:22:48 -0600
Subject: [PATCH] Sync files from upstream, and pass 'make syntax-check'.

* config/announce-gen: Move...
* build-aux/announce-gen: ...here, and sync from gnulib.
* Makefile.am (EXTRA_DIST): Adjust accordingly.
* cfg.mk (announce_gen): Likewise.
(prev_version_file): Delete, relying on default in maint.mk.
(gpg_key_ID): New macro.
(url_dir_list): Rewrite to match coreutils.
* config/prev-version.txt: Move...
* .prev-version: ...here, and adjust to 2.61.
* build-aux/vc-list-files: Sync from coreutils.
* maint.mk: Resynchronize with coreutils, where possible.
(ME): Remove $(srcdir) from definition.
(CVS): Delete.
(GIT, VC, VC-tag): New macros.
(CVS_LIST, CVS_LIST_EXCEPT): Rename...
(VC_LIST, VC_LIST_EXCEPT): ...to this.
(cvs-tag-check): Delete.
(cvs-diff-check): Rename...
(vc-diff-check): ...to this.
(sc_file_system): Allow FHS acronym.
* doc/autoconf.texi (Particular Functions): Recommend
unconditional <config.h>.
* build-aux/config.guess: Sync from upstream (manually).
* build-aux/config.sub: Likewise.
* build-aux/texinfo.tex: Likewise.
* doc/make-stds.texi: Likewise.
* doc/standards.texi: Likewise.
* .gitattributes: Ignore whitespace problems in upstream files.

Signed-off-by: Eric Blake <address@hidden>
---
 .gitattributes                     |   12 ++-
 .prev-version                      |    1 +
 ChangeLog                          |   42 +++++-
 Makefile.am                        |    2 +-
 {config => build-aux}/announce-gen |  133 ++++++++++++++----
 build-aux/config.guess             |    5 +-
 build-aux/config.sub               |   16 ++-
 build-aux/texinfo.tex              |   67 ++++++---
 build-aux/vc-list-files            |   53 ++++----
 cfg.mk                             |   16 ++-
 config/prev-version.txt            |    1 -
 doc/autoconf.texi                  |    4 +-
 doc/make-stds.texi                 |   28 +++--
 doc/standards.texi                 |   61 +++++----
 maint.mk                           |  269 +++++++++++++++++++++---------------
 15 files changed, 459 insertions(+), 251 deletions(-)
 create mode 100644 .prev-version
 rename {config => build-aux}/announce-gen (73%)
 delete mode 100644 config/prev-version.txt

diff --git a/.gitattributes b/.gitattributes
index e8495d5..130bd39 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1,11 @@
-ChangeLog merge=merge-changelog
+ChangeLog      merge=merge-changelog
+config.guess   -whitespace
+config.sub     -whitespace
+elisp-comp     -whitespace
+install-sh     -whitespace
+mdate-sh       -whitespace
+missing                -whitespace
+texinfo.tex    -whitespace
+fdl.texi       -whitespace
+make-stds.texi -whitespace
+standards.texi -whitespace
diff --git a/.prev-version b/.prev-version
new file mode 100644
index 0000000..881307c
--- /dev/null
+++ b/.prev-version
@@ -0,0 +1 @@
+2.61
diff --git a/ChangeLog b/ChangeLog
index 5d00e73..8629f93 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,35 @@
+2008-04-03  Eric Blake  <address@hidden>
+
+       Sync files from upstream, and pass 'make syntax-check'.
+       * config/announce-gen: Move...
+       * build-aux/announce-gen: ...here, and sync from gnulib.
+       * Makefile.am (EXTRA_DIST): Adjust accordingly.
+       * cfg.mk (announce_gen): Likewise.
+       (prev_version_file): Delete, relying on default in maint.mk.
+       (gpg_key_ID): New macro.
+       (url_dir_list): Rewrite to match coreutils.
+       * config/prev-version.txt: Move...
+       * .prev-version: ...here, and adjust to 2.61.
+       * build-aux/vc-list-files: Sync from coreutils.
+       * maint.mk: Resynchronize with coreutils, where possible.
+       (ME): Remove $(srcdir) from definition.
+       (CVS): Delete.
+       (GIT, VC, VC-tag): New macros.
+       (CVS_LIST, CVS_LIST_EXCEPT): Rename...
+       (VC_LIST, VC_LIST_EXCEPT): ...to this.
+       (cvs-tag-check): Delete.
+       (cvs-diff-check): Rename...
+       (vc-diff-check): ...to this.
+       (sc_file_system): Allow FHS acronym.
+       * doc/autoconf.texi (Particular Functions): Recommend
+       unconditional <config.h>.
+       * build-aux/config.guess: Sync from upstream (manually).
+       * build-aux/config.sub: Likewise.
+       * build-aux/texinfo.tex: Likewise.
+       * doc/make-stds.texi: Likewise.
+       * doc/standards.texi: Likewise.
+       * .gitattributes: Ignore whitespace problems in upstream files.
+
 2008-04-03  Ralf Wildenhues  <address@hidden>
 
        * doc/autoconf.texi (Limitations of Usual Tools): Mention awk %u
@@ -19,11 +51,11 @@
 
 2008-03-28  Peter O'Gorman  <address@hidden>
 
-       Find X11 on Mac OS X too.
-       * lib/autoconf/libs.m4 (_AC_PATH_X_DIRECT,_AC_PATH_X_XMKMF):
-       Check for libX11 with extensions dylib la and dll too.
-       * THANKS: Update.
-       Reported by Martin Costabel.
+       Find X11 on Mac OS X too.
+       * lib/autoconf/libs.m4 (_AC_PATH_X_DIRECT,_AC_PATH_X_XMKMF):
+       Check for libX11 with extensions dylib la and dll too.
+       * THANKS: Update.
+       Reported by Martin Costabel.
 
 2008-03-28  Eric Blake  <address@hidden>
 
diff --git a/Makefile.am b/Makefile.am
index 40cb20c..86b6491 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -27,7 +27,7 @@ EXTRA_DIST = ChangeLog.0 ChangeLog.1 ChangeLog.2 \
             BUGS \
             GNUmakefile maint.mk cfg.mk \
             build-aux/git-version-gen \
-            config/announce-gen config/prev-version.txt
+            build-aux/announce-gen .prev-version
 
 MAINTAINERCLEANFILES = $(srcdir)/INSTALL
 
diff --git a/config/announce-gen b/build-aux/announce-gen
similarity index 73%
rename from config/announce-gen
rename to build-aux/announce-gen
index fec3df8..c642ef8 100755
--- a/config/announce-gen
+++ b/build-aux/announce-gen
@@ -1,7 +1,13 @@
 #!/usr/bin/perl -w
-# Generate an announcement message.
+# Generate a release announcement message.
 
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+my $VERSION = '2008-02-08 10:34'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job.  Otherwise, update this string manually.
+
+# Copyright (C) 2002-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
@@ -16,13 +22,15 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+# Written by Jim Meyering
+
 use strict;
 
 use Getopt::Long;
 use Digest::MD5;
 use Digest::SHA1;
+use POSIX qw(strftime);
 
-(my $VERSION = '$Revision$ ') =~ tr/[0-9].//cd;
 (my $ME = $0) =~ s|.*/||;
 
 my %valid_release_types = map {$_ => 1} qw (alpha beta major);
@@ -70,16 +78,24 @@ OPTIONS:
 
   Generate an announcement message.
 
-  FIXME: describe the following
+These options must be specified:
 
    --release-type=TYPE          TYPE must be one of @types
    --package-name=PACKAGE_NAME
    --previous-version=VER
    --current-version=VER
    --gpg-key-id=ID         The GnuPG ID of the key used to sign the tarballs
-   --release-archive-directory=DIR
    --url-directory=URL_DIR
-   --news=NEWS_FILE             optional
+
+The following are optional:
+
+   --news=NEWS_FILE
+   --bootstrap-tools=TOOL_LIST  a comma-separated list of tools, e.g.,
+                                autoconf,automake,bison,gnulib
+   --gnulib-snapshot-date=DATE  if gnulib is in the bootstrap tool list,
+                                then report this as the snapshot date.
+                                If not specified, use the current date/time.
+                                If you specify a date here, be sure it is UTC.
 
    --help             display this help and exit
    --version          output version information and exit
@@ -191,26 +207,28 @@ sub print_news_deltas ($$$)
   # the first occurrence of $prev_version.
   my $in_items;
 
+  my $re_prefix = qr/\* (?:Noteworthy|Major) change/;
+
   open NEWS, '<', $news_file
     or die "$ME: $news_file: cannot open for reading: $!\n";
   while (defined (my $line = <NEWS>))
     {
       if ( ! $in_items)
        {
-         # Match lines like this one:
+         # Match lines like these:
          # * Major changes in release 5.0.1:
-         # but not any other line that starts with a space, *, or -.
-         $line =~ /^(\* Major changes.*|[^ *-].*)\Q$curr_version\E/o
+         # * Noteworthy changes in release 6.6 (2006-11-22) [stable]
+         $line =~ /^$re_prefix.*(?:[^\d.]|$)\Q$curr_version\E(?:[^\d.]|$)/o
            or next;
          $in_items = 1;
          print $line;
        }
       else
        {
-         # Be careful that this regexp cannot match version numbers
-         # in NEWS items -- they might well say `introduced in 4.5.5',
+         # This regexp must not match version numbers in NEWS items.
+         # For example, they might well say `introduced in 4.5.5',
          # and we don't want that to match.
-         $line =~ /^(\* Major changes.*|[^ *-].*)\Q$prev_version\E/o
+         $line =~ /^$re_prefix.*(?:[^\d.]|$)\Q$prev_version\E(?:[^\d.]|$)/o
            and last;
          print $line;
        }
@@ -307,6 +325,44 @@ sub print_changelog_deltas ($$)
     or warn "$ME: warning: `cmd' had unexpected exit code or signal ($?)\n";
 }
 
+sub get_tool_versions ($$)
+{
+  my ($tool_list, $gnulib_version) = @_;
+  @$tool_list
+    or return ();
+
+  my $fail;
+  my @tool_version_pair;
+  foreach my $t (@$tool_list)
+    {
+      if ($t eq 'gnulib')
+       {
+         push @tool_version_pair, ucfirst $t . ' ' . $gnulib_version;
+         next;
+       }
+      # Assume that the last "word" on the first line of
+      # `tool --version` output is the version string.
+      my ($first_line, undef) = split ("\n", `$t --version`);
+      if ($first_line =~ /.* (\d[\w.-]+)$/)
+       {
+         $t = ucfirst $t;
+         push @tool_version_pair, "$t $1";
+       }
+      else
+       {
+         defined $first_line
+           and $first_line = '';
+         warn "$ME: $t: unexpected --version output\n:$first_line";
+         $fail = 1;
+       }
+    }
+
+  $fail
+    and exit 1;
+
+  return @tool_version_pair;
+}
+
 {
   # Neutralize the locale, so that, for instance, "du" does not
   # issue "1,2" instead of "1.2", what confuses our regexps.
@@ -316,10 +372,11 @@ sub print_changelog_deltas ($$)
   my $package_name;
   my $prev_version;
   my $curr_version;
-  my $release_archive_dir;
   my $gpg_key_id;
   my @url_dir_list;
   my @news_file;
+  my $bootstrap_tools;
+  my $gnulib_version;
 
   GetOptions
     (
@@ -328,9 +385,10 @@ sub print_changelog_deltas ($$)
      'previous-version=s' => \$prev_version,
      'current-version=s'  => \$curr_version,
      'gpg-key-id=s'       => \$gpg_key_id,
-     'release-archive-directory=s' => \$release_archive_dir,
      'url-directory=s'    => address@hidden,
      'news=s'             => address@hidden,
+     'bootstrap-tools=s'  => \$bootstrap_tools,
+     'gnulib-version=s'   => \$gnulib_version,
 
      help => sub { usage 0 },
      version => sub { print "$ME version $VERSION\n"; exit },
@@ -346,25 +404,38 @@ sub print_changelog_deltas ($$)
     or (warn "$ME: previous version string not specified\n"), $fail = 1;
   $curr_version
     or (warn "$ME: current version string not specified\n"), $fail = 1;
-  $release_archive_dir
-    or (warn "$ME: release directory name not specified\n"), $fail = 1;
+  $gpg_key_id
+    or (warn "$ME: GnuPG key ID not specified\n"), $fail = 1;
   @url_dir_list
     or (warn "$ME: URL directory name(s) not specified\n"), $fail = 1;
 
+  my @tool_list = split ',', $bootstrap_tools;
+
+  grep (/^gnulib$/, @tool_list) ^ defined $gnulib_version
+    and (warn "$ME: when specifying gnulib as a tool, you must also specify\n"
+       . "--gnulib-version=V, where V is the result of running git describe\n"
+       . "in the gnulib source directory.\n"), $fail = 1;
+
   exists $valid_release_types{$release_type}
     or (warn "$ME: `$release_type': invalid release type\n"), $fail = 1;
 
   @ARGV
-    and (warn "$ME: too many arguments\n"), $fail = 1;
+    and (warn "$ME: too many arguments:\n", join ("\n", @ARGV), "\n"),
+      $fail = 1;
   $fail
     and usage 1;
 
   my $my_distdir = "$package_name-$curr_version";
   my $tgz = "$my_distdir.tar.gz";
   my $tbz = "$my_distdir.tar.bz2";
+  my $lzma = "$my_distdir.tar.lzma";
   my $xd = "$package_name-$prev_version-$curr_version.xdelta";
 
-  my %size = sizes ($tgz, $tbz, $xd);
+  my @tarballs = grep {-f $_} ($tgz, $tbz, $lzma);
+  my @sizable = @tarballs;
+  -f $xd
+    and push @sizable, $xd;
+  my %size = sizes (@sizable);
   %size
     or exit 1;
 
@@ -380,14 +451,16 @@ FIXME: put comments here
 
 EOF
 
-  print_locations ("compressed sources", @url_dir_list, %size,
-                  $tgz, $tbz);
-  print_locations ("xdelta-style diffs", @url_dir_list, %size,
-                  $xd);
+  print_locations ("compressed sources", @url_dir_list, %size, @tarballs);
+  -f $xd
+    and print_locations ("xdelta diffs (useful? if so, "
+                        . "please tell address@hidden)",
+                        @url_dir_list, %size, $xd);
+  my @sig_files = map { "$_.sig" } @tarballs;
   print_locations ("GPG detached signatures[*]", @url_dir_list, %size,
-                  "$tgz.sig", "$tbz.sig");
+                  @sig_files);
 
-  print_checksums ($tgz, $tbz, $xd);
+  print_checksums (@sizable);
 
   print <<EOF;
 
@@ -406,6 +479,11 @@ then run this command to import it:
 and rerun the \`gpg --verify' command.
 EOF
 
+  my @tool_versions = get_tool_versions (address@hidden, $gnulib_version);
+  @tool_versions
+    and print "\nThis release was bootstrapped with the following tools:",
+      join ('', map {"\n  $_"} @tool_versions), "\n";
+
   print_news_deltas ($_, $prev_version, $curr_version)
     foreach @news_file;
 
@@ -415,8 +493,6 @@ EOF
   exit 0;
 }
 
-
-
 ### Setup "GNU" style for perl-mode and cperl-mode.
 ## Local Variables:
 ## perl-indent-level: 2
@@ -432,4 +508,9 @@ EOF
 ## cperl-extra-newline-before-brace: t
 ## cperl-merge-trailing-else: nil
 ## cperl-continued-statement-offset: 2
+## eval: (add-hook 'write-file-hooks 'time-stamp)
+## time-stamp-start: "my $VERSION = '"
+## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+## time-stamp-time-zone: "UTC"
+## time-stamp-end: "'; # UTC"
 ## End:
diff --git a/build-aux/config.guess b/build-aux/config.guess
index f32079a..6603908 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -4,7 +4,7 @@
 #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
 #   Free Software Foundation, Inc.
 
-timestamp='2008-01-23'
+timestamp='2008-03-12'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -1216,6 +1216,9 @@ EOF
     BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
        echo i586-pc-beos
        exit ;;
+    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
+       echo i586-pc-haiku
+       exit ;;
     SX-4:SUPER-UX:*:*)
        echo sx4-nec-superux${UNAME_RELEASE}
        exit ;;
diff --git a/build-aux/config.sub b/build-aux/config.sub
index 6759825..087f29b 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -4,7 +4,7 @@
 #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
 #   Free Software Foundation, Inc.
 
-timestamp='2008-01-16'
+timestamp='2008-03-26'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -250,12 +250,14 @@ case $basic_machine in
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | mcore | mep \
+       | maxq | mb | microblaze | mcore | mep | metag \
        | mips | mipsbe | mipseb | mipsel | mipsle \
        | mips16 \
        | mips64 | mips64el \
-       | mips64vr | mips64vrel \
+       | mips64octeon | mips64octeonel \
        | mips64orion | mips64orionel \
+       | mips64r5900 | mips64r5900el \
+       | mips64vr | mips64vrel \
        | mips64vr4100 | mips64vr4100el \
        | mips64vr4300 | mips64vr4300el \
        | mips64vr5000 | mips64vr5000el \
@@ -331,12 +333,14 @@ case $basic_machine in
        | ip2k-* | iq2000-* \
        | m32c-* | m32r-* | m32rle-* \
        | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
        | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
        | mips16-* \
        | mips64-* | mips64el-* \
-       | mips64vr-* | mips64vrel-* \
+       | mips64octeon-* | mips64octeonel-* \
        | mips64orion-* | mips64orionel-* \
+       | mips64r5900-* | mips64r5900el-* \
+       | mips64vr-* | mips64vrel-* \
        | mips64vr4100-* | mips64vr4100el-* \
        | mips64vr4300-* | mips64vr4300el-* \
        | mips64vr5000-* | mips64vr5000el-* \
@@ -364,7 +368,7 @@ case $basic_machine in
        | sparclite-* \
        | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* 
| sx?-* \
        | tahoe-* | thumb-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
        | tron-* \
        | v850-* | v850e-* | vax-* \
        | we32k-* \
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
index d2b264d..ef835d6 100644
--- a/build-aux/texinfo.tex
+++ b/build-aux/texinfo.tex
@@ -3,11 +3,11 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2007-12-02.17}
+\def\texinfoversion{2008-03-31.10}
 %
-% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 2007,
+% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007 Free Software Foundation, Inc.
+% 2007, 2008 Free Software Foundation, Inc.
 %
 % This texinfo.tex file is free software: you can redistribute it and/or
 % modify it under the terms of the GNU General Public License as
@@ -97,6 +97,7 @@
 \let\ptexslash=\/
 \let\ptexstar=\*
 \let\ptext=\t
+\let\ptextop=\top
 
 % If this character appears in an error message or help string, it
 % starts a new line in the output.
@@ -916,15 +917,19 @@ where each line of input produces a line of output.}
   \temp
 }
 
-% @include file    insert text of that file as input.
+% @include FILE -- \input text of FILE.
 %
 \def\include{\parseargusing\filenamecatcodes\includezzz}
 \def\includezzz#1{%
   \pushthisfilestack
   \def\thisfile{#1}%
   {%
-    \makevalueexpandable
-    \def\temp{\input #1 }%
+    \makevalueexpandable  % we want to expand any @value in FILE.  
+    \turnoffactive        % and allow special characters in the expansion
+    \edef\temp{\noexpand\input #1 }%
+    %
+    % This trickery is to read FILE outside of a group, in case it makes
+    % definitions, etc.
     \expandafter
   }\temp
   \popthisfilestack
@@ -1362,8 +1367,11 @@ output) for that.)}
           \openin 1 #1.jpeg \ifeof 1
             \openin 1 #1.JPG \ifeof 1
               \openin 1 #1.pdf \ifeof 1
-                \errhelp = \nopdfimagehelp
-                \errmessage{Could not find image file #1 for pdf}%
+                \openin 1 #1.PDF \ifeof 1
+                  \errhelp = \nopdfimagehelp
+                  \errmessage{Could not find image file #1 for pdf}%
+                \else \gdef\pdfimgext{PDF}%
+                \fi
               \else \gdef\pdfimgext{pdf}%
               \fi
             \else \gdef\pdfimgext{JPG}%
@@ -1377,7 +1385,7 @@ output) for that.)}
       \closein 1
     \endgroup
     %
-    % without \immediate, pdftex seg faults when the same image is
+    % without \immediate, ancient pdftex seg faults when the same image is
     % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
     \ifnum\pdftexversion < 14
       \immediate\pdfimage
@@ -2560,6 +2568,13 @@ end
 \let\env=\code
 \let\command=\code
 
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow   (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
 % @uref (abbreviation for `urlref') takes an optional (comma-separated)
 % second argument specifying the text to display and an optional third
 % arg as text to display instead of (rather than in addition to) the url
@@ -5652,14 +5667,15 @@ end
 
 % @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
 %
-% Since these characters are used in examples, it should be an even number of
+% Since these characters are used in examples, they should be an even number of
 % \tt widths. Each \tt character is 1en, so two makes it 1em.
 %
 \def\point{$\star$}
-\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
 \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
 
 % The @error{} command.
 % Adapted from the TeXbook's \boxit.
@@ -5717,6 +5733,7 @@ end
   \let\/=\ptexslash
   \let\*=\ptexstar
   \let\t=\ptext
+  \expandafter \let\csname top\endcsname=\ptextop  % outer
   \let\frenchspacing=\plainfrenchspacing
   %
   \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
@@ -6953,20 +6970,22 @@ end
   %
   % Make link in pdf output.
   \ifpdf
-    \leavevmode
-    \getfilename{#4}%
     {\indexnofonts
      \turnoffactive
+     % This expands tokens, so do it after making catcode changes, so _
+     % etc. don't get their TeX definitions.
+     \getfilename{#4}%
+     %
      % See comments at \activebackslashdouble.
      {\activebackslashdouble \xdef\pdfxrefdest{#1}%
       \backslashparens\pdfxrefdest}%
      %
+     \leavevmode
+     \startlink attr{/Border [0 0 0]}%
      \ifnum\filenamelength>0
-       \startlink attr{/Border [0 0 0]}%
-         goto file{\the\filename.pdf} name{\pdfxrefdest}%
+       goto file{\the\filename.pdf} name{\pdfxrefdest}%
      \else
-       \startlink attr{/Border [0 0 0]}%
-         goto name{\pdfmkpgn{\pdfxrefdest}}%
+       goto name{\pdfmkpgn{\pdfxrefdest}}%
      \fi
     }%
     \setcolor{\linkcolor}%
@@ -7421,15 +7440,19 @@ end
   % If the image is by itself, center it.
   \ifvmode
     \imagevmodetrue
-    \nobreak\bigskip
+    \nobreak\medskip
     % Usually we'll have text after the image which will insert
     % \parskip glue, so insert it here too to equalize the space
     % above and below.
     \nobreak\vskip\parskip
     \nobreak
-    \line\bgroup
   \fi
   %
+  % Leave vertical mode so that indentation from an enclosing
+  % environment such as @quotation is respected.  On the other hand, if
+  % it's at the top level, we don't want the normal paragraph indentation.
+  \noindent
+  %
   % Output the image.
   \ifpdf
     \dopdfimage{#1}{#2}{#3}%
@@ -7440,7 +7463,7 @@ end
     \epsfbox{#1.eps}%
   \fi
   %
-  \ifimagevmode \egroup \bigbreak \fi  % space after the image
+  \ifimagevmode \medskip \fi  % space after the standalone image
 \endgroup}
 
 
diff --git a/build-aux/vc-list-files b/build-aux/vc-list-files
index 9032244..1e158bb 100755
--- a/build-aux/vc-list-files
+++ b/build-aux/vc-list-files
@@ -1,7 +1,7 @@
 #!/bin/sh
-# List the specified version-controlled files.
+# List version-controlled file names.
 
-# Copyright (C) 2006 Free Software Foundation, Inc.
+# Copyright (C) 2006-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
@@ -18,41 +18,40 @@
 
 
 # List the specified version-controlled files.
-# With no argument, list them all.
+# With no argument, list them all.  With a single DIRECTORY argument,
+# list the version-controlled files in that directory.
 # This script must be run solely from the top of a $srcdir build directory.
 
-# If there's an argument, it must be a single, "."-relative directory name,
-# with no trailing slashes.  In mercurial mode, it's used as part of a
-# "grep" pattern (prepend "^", append "/"), and in cvs mode, it's simply
-# used as an argument to the cvsu script.
+# If there's an argument, it must be a single, "."-relative directory name.
+# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
 
-include_prefix=
+dir=
 case $# in
   0) ;;
-  1) include_prefix=$1 ;;
-  *) echo "$0: too many arguments" 1>&2; exit 1 ;;
+  1) dir=$1 ;;
+  *) echo "$0: too many arguments" 1>&2
+     echo "Usage: $0 [DIR]" 1>&2; exit 1;;
 esac
 
+test "x$dir" = x && dir=.
+
 if test -d .git; then
-  if test "x$include_prefix" = x; then
-    git-ls-files | cut -d ' ' -f 3
-  else
-    git-ls-files | cut -d ' ' -f 3 | grep "^$include_prefix/"
-  fi
+  exec git ls-files "$dir"
 elif test -d .hg; then
-  if test "x$include_prefix" = x; then
-    hg manifest | cut -d ' ' -f 3
+  exec hg locate "$dir/*"
+elif test -d CVS; then
+  if test -x build-aux/cvsu; then
+    build-aux/cvsu --find --types=AFGM "$dir"
   else
-    hg manifest | cut -d ' ' -f 3 | grep "^$include_prefix/"
+    awk -F/ '{                         \
+       if (!$1 && $3 !~ /^-/) {        \
+         f=FILENAME;                   \
+         sub(/CVS\/Entries/, "", f);   \
+         print f $2;                   \
+       }}'                             \
+      $(find ${*-*} -name Entries -print) /dev/null;
   fi
-elif test -x build-aux/cvsu; then
-  build-aux/cvsu --find --types=AFGM $include_prefix
 else
-  awk -F/ '{                           \
-      if (!$1 && $3 !~ /^-/) {         \
-       f=FILENAME;                     \
-       sub(/CVS\/Entries/, "", f);     \
-       print f $2;                     \
-      }}'                              \
-    $(find ${*-*} -name Entries -print) /dev/null;
+  echo "$0: Failed to determine type of version control used in "`pwd` 1>&2
+  exit 1
 fi
diff --git a/cfg.mk b/cfg.mk
index 2b0bcac..e8c8045 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -23,19 +23,21 @@ export PATH = $(shell echo "`pwd`/tests:$$PATH")
 _autoreconf = autoreconf -i -v && rm -f INSTALL
 
 # Version management.
-prev_version_file = $(srcdir)/config/prev-version.txt
-announce_gen   = $(srcdir)/config/announce-gen
+announce_gen   = $(srcdir)/build-aux/announce-gen
 release_archive_dir = releases
 
 # Use alpha.gnu.org for alpha and beta releases.
 # Use ftp.gnu.org for major releases.
-gnu_ftp_host-alpha = alpha
-gnu_ftp_host-beta = alpha
-gnu_ftp_host-major = ftp
+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.org/gnu/autoconf
+  ftp://$(gnu_rel_host)/gnu/autoconf
+
+# The GnuPG ID of the key used to sign the tarballs.
+gpg_key_ID = F4850180
 
 # Files to update automatically.
 cvs_executable_files = \
@@ -62,4 +64,4 @@ executable-update: wget-update cvs-update autom4te-update
 
 # Tests not to run.
 local-checks-to-skip ?= \
-  sc_unmarked_diagnostics
+  changelog-check sc_unmarked_diagnostics
diff --git a/config/prev-version.txt b/config/prev-version.txt
deleted file mode 100644
index f6a4163..0000000
--- a/config/prev-version.txt
+++ /dev/null
@@ -1 +0,0 @@
-2.60
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index 8bbfdde..672e1a5 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -4807,9 +4807,7 @@ Typically, the replacement file @file{malloc.c} should 
look like (note
 the @samp{#undef malloc}):
 
 @verbatim
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
+#include <config.h>
 #undef malloc
 
 #include <sys/types.h>
diff --git a/doc/make-stds.texi b/doc/make-stds.texi
index 205a6db..041a085 100644
--- a/doc/make-stds.texi
+++ b/doc/make-stds.texi
@@ -9,7 +9,7 @@
 @cindex standards for makefiles
 
 @c Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
address@hidden 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
address@hidden 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 @c Permission is granted to copy, distribute and/or modify this document
 @c under the terms of the GNU Free Documentation License, Version 1.2
@@ -33,7 +33,10 @@ chapter
 @end iftex
 describes conventions for writing the Makefiles for GNU programs.
 Using Automake will help you write a Makefile that follows these
-conventions.
+conventions.  For more information on portable Makefiles, see
address@hidden and @ref{Portable Make, Portable Make Programming,, autoconf,
+Autoconf}.
+
 
 @menu
 * Makefile Basics::             General conventions for Makefiles.
@@ -144,8 +147,10 @@ subtargets) work correctly with a parallel @code{make}.
 @section Utilities in Makefiles
 
 Write the Makefile commands (and any shell scripts, such as
address@hidden) to run in @code{sh}, not in @code{csh}.  Don't use any
-special features of @code{ksh} or @code{bash}.
address@hidden) to run under @code{sh} (both the traditional Bourne
+shell and the @sc{posix} shell), not @code{csh}.  Don't use any
+special features of @code{ksh} or @code{bash}, or @sc{posix} features
+not widely supported in traditional Bourne @code{sh}.
 
 The @code{configure} script and the Makefile rules for building and
 installation should not use any utilities directly except these:
@@ -159,14 +164,19 @@ awk cat cmp cp diff echo egrep expr false grep 
install-info
 ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
 @end example
 
-The compression program @code{gzip} can be used in the @code{dist} rule.
+Compression programs such as @code{gzip} can be used in the
address@hidden rule.
+
+Generally, stick to the widely-supported (usually
address@hidden) options and features of these programs.  For
+example, don't use @samp{mkdir -p}, convenient as it may be, because a
+few systems don't support it at all and with others, it is not safe
+for parallel execution.  For a list of known incompatibilities, see
address@hidden Shell, Portable Shell Programming,, autoconf, Autoconf}.
 
-Stick to the generally supported options for these programs.  For
-example, don't use @samp{mkdir -p}, convenient as it may be, because
-most systems don't support it.
 
 It is a good idea to avoid creating symbolic links in makefiles, since a
-few systems don't support them.
+few file systems don't support them.
 
 The Makefile rules for building and installation can also use compilers
 and related programs, but should do so via @code{make} variables so that the
diff --git a/doc/standards.texi b/doc/standards.texi
index 12d4267..4cb5ed3 100644
--- a/doc/standards.texi
+++ b/doc/standards.texi
@@ -3,7 +3,7 @@
 @setfilename standards.info
 @settitle GNU Coding Standards
 @c This date is automagically updated when you save this file:
address@hidden lastupdate October 10, 2007
address@hidden lastupdate February 23, 2008
 @c %**end of header
 
 @dircategory GNU organization
@@ -22,18 +22,12 @@
 
 @c This is used by a cross ref in make-stds.texi
 @set CODESTD  1
address@hidden
address@hidden CHAPTER chapter
address@hidden iftex
address@hidden
address@hidden CHAPTER node
address@hidden ifinfo
 
 @copying
 The GNU coding standards, last updated @value{lastupdate}.
 
 Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
 Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
@@ -313,7 +307,7 @@ technique.
 
 @cindex GUILE
 The standard extensibility interpreter for GNU software is GUILE
-(@uref{http://www.gnu.org/software/guile/}), which implements the
+(@uref{http://www.gnu.org/@/software/@/guile/}), which implements the
 language Scheme (an especially clean and simple dialect of Lisp).  We
 don't reject programs written in other ``scripting languages'' such as
 Perl and Python, but using GUILE is very important for the overall
@@ -1019,10 +1013,10 @@ abbreviation as usual, as in the examples below.
 
 @table @asis
 @item GPL
-GNU General Public License, @url{http://www.gnu.org/licenses/gpl.html}.
+GNU General Public License, @url{http://www.gnu.org/@/licenses/@/gpl.html}.
 
 @item LGPL
-GNU Lesser General Public License, @url{http://www.gnu.org/licenses/lgpl.html}.
+GNU Lesser General Public License, 
@url{http://www.gnu.org/@/licenses/@/lgpl.html}.
 
 @item GPL/Guile
 GNU GPL with the exception for Guile; for example, GPLv3+/Guile means
@@ -1032,47 +1026,47 @@ GNU GPL with the exception for Ada.
 
 @item Apache
 The Apache Software Foundation license,
address@hidden://www.apache.org/licenses}.
address@hidden://www.apache.org/@/licenses}.
 
 @item Artistic
-The Artistic license used for Perl, @url{http://www.perlfoundation.org/legal}.
+The Artistic license used for Perl, 
@url{http://www.perlfoundation.org/@/legal}.
 
 @item Expat
-The Expat license, @url{http://www.jclark.com/xml/copying.txt}.
+The Expat license, @url{http://www.jclark.com/@/xml/@/copying.txt}.
 
 @item MPL
-The Mozilla Public License, @url{http://www.mozilla.org/MPL/}.
+The Mozilla Public License, @url{http://www.mozilla.org/@/MPL/}.
 
 @item OBSD
 The original (4-clause) BSD license, incompatible with the GNU GPL
address@hidden://www.xfree86.org/3.3.6/COPYRIGHT2.html#6}.
address@hidden://www.xfree86.org/@/3.3.6/@/COPYRIGHT2.html#6}.
 
 @item PHP
-The license used for PHP, @url{http://www.php.net/license/}.
+The license used for PHP, @url{http://www.php.net/@/license/}.
 
 @item public domain
 The non-license that is being in the public domain,
address@hidden://www.gnu.org/licenses/license-list.html#PublicDomain}.
address@hidden://www.gnu.org/@/licenses/@/license-list.html#PublicDomain}.
 
 @item Python
-The license for Python, @url{http://www.python.org/2.0.1/license.html}.
+The license for Python, @url{http://www.python.org/@/2.0.1/@/license.html}.
 
 @item RBSD
 The revised (3-clause) BSD, compatible with the GNU GPL,
address@hidden://www.xfree86.org/3.3.6/COPYRIGHT2.html#5}.
address@hidden://www.xfree86.org/@/3.3.6/@/COPYRIGHT2.html#5}.
 
 @item X11
 The simple non-copyleft license used for most versions of the X Window
-system, @url{http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3}.
+system, @url{http://www.xfree86.org/@/3.3.6/@/COPYRIGHT2.html#3}.
 
 @item Zlib
-The license for Zlib, @url{http://www.gzip.org/zlib/zlib_license.html}.
+The license for Zlib, @url{http://www.gzip.org/@/zlib/@/zlib_license.html}.
 
 @end table
 
 More information about these licenses and many more are on the GNU
 licensing web pages,
address@hidden://www.gnu.org/licenses/license-list.html}.
address@hidden://www.gnu.org/@/licenses/@/license-list.html}.
 
 
 @node --help
@@ -2861,7 +2855,7 @@ void error (int status, int errnum, const char *format, 
...);
 A simple way to use the Gnulib error module is to obtain the two
 source files @file{error.c} and @file{error.h} from the Gnulib library
 source code repository at
address@hidden://savannah.gnu.org/cgi-bin/viewcvs/gnulib/gnulib/lib/}.
address@hidden://git.savannah.gnu.org/@/gitweb/@/?p=gnulib.git}.
 Here's a sample use:
 
 @example
@@ -3826,6 +3820,17 @@ refer explicitly to the specified source directory.  To 
make this
 possible, @code{configure} can add to the Makefile a variable named
 @code{srcdir} whose value is precisely the specified directory.
 
+In addition, the @samp{configure} script should take options
+corresponding to most of the standard directory variables
+(@pxref{Directory Variables}).  Here is the list:
+
address@hidden
+--prefix --exec-prefix --bindir --sbindir --libexecdir --sysconfdir
+--sharedstatedir --localstatedir --libdir --includedir --oldincludedir
+--datarootdir --datadir --infodir --localedir --mandir --docdir
+--htmldir --dvidir --pdfdir --psdir
address@hidden example
+
 The @code{configure} script should also take an argument which specifies the
 type of system to build the program for.  This argument should look like
 this:
@@ -3841,7 +3846,7 @@ The @code{configure} script needs to be able to decode 
all plausible
 alternatives for how to describe a machine.  Thus,
 @samp{athlon-pc-gnu/linux} would be a valid alias.  There is a shell
 script called
address@hidden://savannah.gnu.org/@/cgi-bin/@/viewcvs/@/*checkout*/@/config/@/config/@/config.sub,
address@hidden://git.savannah.gnu.org/@/gitweb/@/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD,
 @file{config.sub}} that you can use as a subroutine to validate system
 types and canonicalize aliases.
 
@@ -3852,7 +3857,7 @@ plain @var{buildtype} argument.  For example, 
@samp{configure
 i686-pc-linux-gnu}.  When the build type is not specified by an option
 or argument, the @code{configure} script should normally guess it using
 the shell script
address@hidden://savannah.gnu.org/@/cgi-bin/@/viewcvs/@/*checkout*/@/config/@/config/@/config.guess,
address@hidden://git.savannah.gnu.org/@/gitweb/@/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD,
 @file{config.guess}}.
 
 @cindex optional features, configure-time
@@ -4057,9 +4062,9 @@ advertise them to new potential customers, or to give the 
public the
 idea that their existence is ethical.
 
 The GNU definition of free software is found on the GNU web site at
address@hidden://www.gnu.org/philosophy/free-sw.html}, and the definition
address@hidden://www.gnu.org/@/philosophy/@/free-sw.html}, and the definition
 of free documentation is found at
address@hidden://www.gnu.org/philosophy/free-doc.html}.  The terms ``free''
address@hidden://www.gnu.org/@/philosophy/@/free-doc.html}.  The terms ``free''
 and ``non-free'', used in this document, refer to those definitions.
 
 A list of important licenses and whether they qualify as free is in
diff --git a/maint.mk b/maint.mk
index 0e22d3e..a4fa134 100644
--- a/maint.mk
+++ b/maint.mk
@@ -1,26 +1,25 @@
 # -*-Makefile-*-
-# This Makefile fragment is shared between the coreutils,
-# CPPI, Bison, and Autoconf.
-
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 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/>.
+# This Makefile fragment tries to be general-purpose enough to be
+# used by at least coreutils, idutils, CPPI, Bison, and Autoconf.
+
+## Copyright (C) 2001-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/>.
 
 # This is reported not to work with make-3.79.1
 # ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
-ME := $(srcdir)/maint.mk
+ME := maint.mk
 
 # Do not save the original name or timestamp in the .tar.gz file.
 # Use --rsyncable if available.
@@ -28,24 +27,24 @@ 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)'
 
-# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
-CVS_LIST = build-aux/vc-list-files
+VC_LIST = build-aux/vc-list-files
 
-CVS_LIST_EXCEPT = \
-  $(CVS_LIST) | if test -f .x-$@; then grep -vEf .x-$@; else grep -v 
ChangeLog; fi
+VC_LIST_EXCEPT = \
+  $(VC_LIST) | if test -f .x-$@; then grep -vEf .x-$@; else grep -v ChangeLog; 
fi
 
 ifeq ($(origin prev_version_file), undefined)
-  prev_version_file = .prev-version
+  prev_version_file = $(srcdir)/.prev-version
 endif
 
 PREV_VERSION := $(shell cat $(prev_version_file))
 VERSION_REGEXP = $(subst .,\.,$(VERSION))
 
-tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
-tag-this-version = $(subst .,_,$(VERSION))
-this-cvs-tag = $(tag-package)-$(tag-this-version)
+this-vc-tag = v$(VERSION)
+this-vc-tag-regexp = v$(VERSION_REGEXP)
 my_distdir = $(PACKAGE)-$(VERSION)
 
 # Old releases are stored here.
@@ -62,13 +61,11 @@ export LC_ALL = C
 ## Sanity checks.  ##
 ## --------------- ##
 
-# FIXME: add a check to prohibit definition in src/*.c of symbols defined
-# in system.h.  E.g. today I removed from tail.c a useless definition of
-# ENOSYS.  It was useless because system.h ensures it's defined.
+# Collect the names of rules starting with `sc_'.
+syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \
+                        $(srcdir)/$(ME))
+.PHONY: $(syntax-check-rules)
 
-# Checks that don't require cvs.
-# Run `changelog-check' last, as previous test may reveal problems requiring
-# new ChangeLog entries.
 local-checks-available = \
   po-check copyright-check writable-files m4-check author_mark_check \
   changelog-check patch-check strftime-check $(syntax-check-rules) \
@@ -76,13 +73,9 @@ local-checks-available = \
   makefile-check check-AUTHORS
 .PHONY: $(local-checks-available)
 
-local-check = $(filter-out $(local-checks-to-skip), $(local-checks-available))
-
-# Collect the names of rules starting with `sc_'.
-syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' $(ME))
-.PHONY: $(syntax-check-rules)
+local-check := $(filter-out $(local-checks-to-skip), $(local-checks-available))
 
-syntax-check: $(syntax-check-rules)
+syntax-check: $(local-check)
 #      @shopt -s nullglob;                                             \
 #      grep -nE '#  *include <(limits|std(def|arg|bool))\.h>'          \
 #          $$(find -type f -name '*.[chly]') /dev/null &&              \
@@ -118,16 +111,16 @@ sc_cast_of_alloca_return_value:
            exit 1; } || :
 
 sc_space_tab:
-       @grep -n '[ ]   ' $$($(CVS_LIST_EXCEPT)) &&                     \
+       @grep -n '[ ]   ' $$($(VC_LIST_EXCEPT)) &&                      \
          { echo '$(ME): found SPACE-TAB sequence; remove the SPACE'    \
                1>&2; exit 1; } || :
 
-# Don't use the old ato* functions in `real' code.
+# Don't use *scanf or the old ato* functions in `real' code.
 # They provide no error checking mechanism.
 # Instead, use strto* functions.
 sc_prohibit_atoi_atof:
-       @grep -nE '\<ato([filq]|ll)\>' $$($(CVS_LIST_EXCEPT)) &&        \
-         { echo '$(ME): do not use ato''f, ato''i, ato''l, ato''ll, or ato''q' 
\
+       @grep -nE '\<([fs]?scanf|ato([filq]|ll))\>' $$($(VC_LIST_EXCEPT)) && \
+         { echo '$(ME): do not use *scan''f, ato''f, ato''i, ato''l, ato''ll, 
ato''q, or ss''canf'     \
                1>&2; exit 1; } || :
 
 # Using EXIT_SUCCESS as the first argument to error is misleading,
@@ -139,36 +132,92 @@ sc_error_exit_success:
            exit 1; } || :
 
 sc_file_system:
-       @grep -ni 'file''system' $$($(CVS_LIST_EXCEPT)) &&              \
+       @grep -ni 'file''system' $$($(VC_LIST_EXCEPT))                  \
+         | grep -v 'File''system Hierarchy Standard' &&                \
          { echo '$(ME): found use of "file''system";'                  \
            'rewrite to use "file system"' 1>&2;                        \
            exit 1; } || :
 
-sc_no_if_have_config_h:
-       @grep -n '^# *if HAVE_CONFIG_H' $$($(CVS_LIST_EXCEPT)) &&       \
-         { echo '$(ME): found use of #if HAVE_CONFIG_H; use #ifdef'    \
+sc_no_have_config_h:
+       @grep -n '^# *if.*HAVE''_CONFIG_H' $$($(VC_LIST_EXCEPT)) &&     \
+         { echo '$(ME): found use of HAVE''_CONFIG_H; remove'          \
                1>&2; exit 1; } || :
 
 # Nearly all .c files must include <config.h>.
 sc_require_config_h:
-       @grep -L '^# *include <config\.h>' /dev/null                    \
-               $$($(CVS_LIST_EXCEPT) | grep '\.c$$')                   \
-           | grep -v /dev/null &&                                      \
+       @if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then          \
+         grep -L '^# *include <config\.h>'                             \
+               $$($(VC_LIST_EXCEPT) | grep '\.c$$')                    \
+             | grep . &&                                               \
          { echo '$(ME): the above files do not include <config.h>'     \
-               1>&2; exit 1; } || :
+               1>&2; exit 1; } || :;                                   \
+       else :;                                                         \
+       fi
+
+# To use this "command" macro, you must first define two shell variables:
+# h: the header, enclosed in <> or ""
+# re: a regular expression that matches IFF something provided by $h is used.
+define _header_without_use
+  h_esc=`echo "$$h"|sed 's/\./\\./'`;                                  \
+  if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then                        
\
+    files=$$(grep -l '^# *include '"$$h_esc"                           \
+            $$($(VC_LIST_EXCEPT) | grep '\.c$$')) &&                   \
+    grep -LE "$$re" $$files | grep . &&                                        
\
+      { echo "$(ME): the above files include $$h but don't use it"     \
+       1>&2; exit 1; } || :;                                           \
+  else :;                                                              \
+  fi
+endef
 
 # Prohibit the inclusion of assert.h without an actual use of assert.
 sc_prohibit_assert_without_use:
-       @files=$$(grep -l '# *include <assert\.h>' /dev/null            \
-                   $$($(CVS_LIST_EXCEPT) | grep '\.c$$')) &&           \
-       grep -L '\<assert (' $$files /dev/null                          \
-           | grep -v /dev/null &&                                      \
-         { echo "$(ME): the above files include <assert.h> but don't use it" \
-               1>&2; exit 1; } || :
+       @h='<assert.h>' re='\<assert *\(' $(_header_without_use)
+
+# Prohibit the inclusion of getopt.h without an actual use.
+sc_prohibit_getopt_without_use:
+       @h='<getopt.h>' re='\<getopt(_long)? *\(' $(_header_without_use)
+
+# Don't include quotearg.h unless you use one of its functions.
+sc_prohibit_quotearg_without_use:
+       @h='"quotearg.h"' re='\<quotearg(_[^ ]+)? *\(' $(_header_without_use)
+
+# Don't include quote.h unless you use one of its functions.
+sc_prohibit_quote_without_use:
+       @h='"quote.h"' re='\<quote(_n)? *\(' $(_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_long_options_without_use:
+       @h='"long-options.h"' re='\<parse_long_options *\(' \
+         $(_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_inttostr_without_use:
+       @h='"inttostr.h"' re='\<(off|[iu]max|uint)tostr *\(' \
+         $(_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_error_without_use:
+       @h='"error.h"' \
+       re='\<error(_at_line|_print_progname|_one_per_line|_message_count)? 
*\('\
+         $(_header_without_use)
+
+sc_prohibit_safe_read_without_use:
+       @h='"safe-read.h"' re='(\<SAFE_READ_ERROR\>|\<safe_read *\()' \
+         $(_header_without_use)
+
+sc_prohibit_argmatch_without_use:
+       @h='"argmatch.h"' \
+       
re='(\<(ARRAY_CARDINALITY|X?ARGMATCH(|_TO_ARGUMENT|_VERIFY))\>|\<argmatch(_exit_fn|_(in)?valid)
 *\()' \
+         $(_header_without_use)
+
+sc_prohibit_root_dev_ino_without_use:
+       @h='"root-dev-ino.h"' \
+       re='(\<ROOT_DEV_INO_(CHECK|WARN)\>|\<get_root_dev_ino *\()' \
+         $(_header_without_use)
 
 sc_obsolete_symbols:
        @grep -nE '\<(HAVE''_FCNTL_H|O''_NDELAY)\>'                     \
-            $$($(CVS_LIST_EXCEPT)) &&                                  \
+            $$($(VC_LIST_EXCEPT)) &&                                   \
          { echo '$(ME): do not use HAVE''_FCNTL_H or O''_NDELAY'       \
                1>&2; exit 1; } || :
 
@@ -202,14 +251,14 @@ endif
 # Make sure that none are inadvertently reintroduced.
 sc_prohibit_jm_in_m4:
        @grep -nE 'jm_[A-Z]'                                    \
-               $$($(CVS_LIST) $(srcdir)/m4 |grep '\.m4$$') &&  \
+               $$($(VC_LIST) $(srcdir)/m4 |grep '\.m4$$') &&   \
            { echo '$(ME): do not use jm_ in m4 macro names'    \
              1>&2; exit 1; } || :
 
 sc_root_tests:
        @t1=sc-root.expected; t2=sc-root.actual;                        \
        grep -nl '^PRIV_CHECK_ARG=require-root'                         \
-         $$($(CVS_LIST) tests) |sed s/tests/./ |sort > $$t1;           \
+         $$($(VC_LIST) tests) |sed s/tests/./ |sort > $$t1;            \
        sed -n 's,      cd \([^ ]*\) .*MAKE..check TESTS=\(.*\),./\1/\2,p' \
          $(srcdir)/tests/Makefile.am |sort > $$t2;                     \
        diff -u $$t1 $$t2 || diff=1;                                    \
@@ -228,7 +277,7 @@ sc_system_h_headers:
            | sed 's/ .*//;;s/^["<]/^# *include [<"]/;s/\.h[">]$$/\\.h[">]/' \
          ) &&                                                          \
          grep -nE -f "$pat"                                            \
-             $$($(CVS_LIST) src |                                      \
+             $$($(VC_LIST) src |                                       \
                 grep -Ev '((copy|system)\.h|parse-gram\.c)$$')         \
            && { echo '$(ME): the above are already included via system.h'\
                  1>&2;  exit 1; } || :;                                \
@@ -237,12 +286,12 @@ sc_system_h_headers:
 sc_sun_os_names:
        @grep -nEi \
            'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \
-           $$($(CVS_LIST_EXCEPT)) &&                                   \
+           $$($(VC_LIST_EXCEPT)) &&                                    \
          { echo '$(ME): found misuse of Sun OS version numbers' 1>&2;  \
            exit 1; } || :
 
 sc_the_the:
-       @grep -ni '\<the ''the\>' $$($(CVS_LIST_EXCEPT)) &&             \
+       @grep -ni '\<the ''the\>' $$($(VC_LIST_EXCEPT)) &&              \
          { echo '$(ME): found use of "the ''the";' 1>&2;               \
            exit 1; } || :
 
@@ -250,17 +299,17 @@ sc_tight_scope:
        test ! -d src || $(MAKE) -C src $@
 
 sc_trailing_blank:
-       @grep -n '[      ]$$' $$($(CVS_LIST_EXCEPT)) &&                 \
+       @grep -n '[      ]$$' $$($(VC_LIST_EXCEPT)) &&                  \
          { echo '$(ME): found trailing blank(s)'                       \
                1>&2; exit 1; } || :
 
 # Match lines like the following, but where there is only one space
 # between the options and the description:
 #   -D, --all-repeated[=delimit-method]  print all duplicate lines\n
-longopt_re = --[a-z][0-9A-Za-z-]*(\[=[0-9A-Za-z-]*\])?
+longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)?
 sc_two_space_separator_in_usage:
        @grep -nE '^   *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$'         \
-           $$($(CVS_LIST_EXCEPT)) &&                                   \
+           $$($(VC_LIST_EXCEPT)) &&                                    \
          { echo "$(ME): help2man requires at least two spaces between"; \
            echo "$(ME): an option and its description"; \
                1>&2; exit 1; } || :
@@ -269,7 +318,7 @@ sc_two_space_separator_in_usage:
 # This won't find any for which error's format string is on a separate line.
 sc_unmarked_diagnostics:
        @grep -nE                                                       \
-           '\<error \([^"]*"[^"]*[a-z]{3}' $$($(CVS_LIST_EXCEPT))      \
+           '\<error \([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT))       \
          | grep -v '_''(' &&                                           \
          { echo '$(ME): found unmarked diagnostic(s)' 1>&2;            \
            exit 1; } || :
@@ -277,7 +326,7 @@ sc_unmarked_diagnostics:
 # Avoid useless parentheses like those in this example:
 # #if defined (SYMBOL) || defined (SYM2)
 sc_useless_cpp_parens:
-       @grep -n '^# *if .*defined *(' $$($(CVS_LIST_EXCEPT)) &&        \
+       @grep -n '^# *if .*defined *(' $$($(VC_LIST_EXCEPT)) &&         \
          { echo '$(ME): found useless parentheses in cpp directive'    \
                1>&2; exit 1; } || :
 
@@ -319,22 +368,22 @@ makefile-check:
          && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || :
 
 news-date-check: NEWS
-       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; \
+       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; \
+       if head ChangeLog | grep 'Version $(VERSION_REGEXP)\.$$'        \
+           >/dev/null; then                                            \
+         :;                                                            \
+       else                                                            \
+         echo "$(VERSION) not in ChangeLog" 1>&2;                      \
+         exit 1;                                                       \
        fi
 
 m4-check:
@@ -350,9 +399,10 @@ po-check:
          grep -E -v '^(#|$$)' po/POTFILES.in                           \
            | grep -v '^src/false\.c$$' | sort > address@hidden;                
        \
          files=;                                                       \
-         for file in $$($(CVS_LIST_EXCEPT)) lib/*.[ch]; do             \
+         for file in $$($(VC_LIST_EXCEPT)) lib/*.[ch]; do              \
            case $$file in                                              \
            djgpp/* | man/*) continue;;                                 \
+           */c99-to-c89.diff) continue;;                               \
            esac;                                                       \
            case $$file in                                              \
            *.[ch])                                                     \
@@ -361,7 +411,8 @@ po-check:
            esac;                                                       \
            files="$$files $$file";                                     \
          done;                                                         \
-         grep -E -l '\bN?_\([^)"]*("|$$)' $$files | sort -u > address@hidden;  
\
+         grep -E -l '\b(N?_|gettext *)\([^)"]*("|$$)' $$files          \
+           | sort -u > address@hidden;                                         
\
          diff -u address@hidden address@hidden || exit 1;                      
                \
          rm -f address@hidden address@hidden;                                  
        \
        fi
@@ -409,37 +460,25 @@ copyright-check:
               exit 1; }; \
        fi
 
-
-# Sanity checks with the CVS repository.
-cvs-tag-check:
-       echo $(this-cvs-tag); \
-       if $(CVS) -n log -h README | grep -e $(this-cvs-tag): >/dev/null; then \
-         echo "$(this-cvs-tag) as already been used; not tagging" 1>&2; \
-         exit 1; \
-       else :; fi
-
-cvs-diff-check:
-       if $(CVS) diff >cvs-diffs; then                         \
-         rm cvs-diffs;                                         \
-       else                                                    \
+vc-diff-check:
+       (CDPATH=; cd $(srcdir) && $(VC) diff) > vc-diffs || :
+       if test -s vc-diffs; then                               \
+         cat vc-diffs;                                         \
          echo "Some files are locally modified:" 1>&2;         \
-         cat cvs-diffs;                                        \
          exit 1;                                               \
+       else                                                    \
+         rm vc-diffs;                                          \
        fi
 
-cvs-check: cvs-diff-check cvs-tag-check
+cvs-check: vc-diff-check
 
 maintainer-distcheck:
        $(MAKE) distcheck
        $(MAKE) my-distcheck
 
-
-# Tag before making distribution.  Also, don't make a distribution if
-# checks fail.  Also, make sure the NEWS file is up-to-date.
-# FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck.
-cvs-dist: $(local-check) cvs-check maintainer-distcheck
-       $(CVS) update po
-       $(CVS) tag -c $(this-cvs-tag)
+# Don't make a distribution if checks fail.
+# Also, make sure the NEWS file is up-to-date.
+vc-dist: $(local-check) cvs-check maintainer-distcheck
        $(MAKE) dist
 
 # Use this to make sure we don't run these programs when building
@@ -491,9 +530,9 @@ announcement: NEWS ChangeLog $(rel-files)
            --curr=$(VERSION)                                           \
            --release-archive-directory=$(release_archive_dir)          \
            --gpg-key-id=$(gpg_key_ID)                                  \
-           --news=NEWS                                                 \
-           $(addprefix --url-dir=, $(url_dir_list))                    \
-
+           --news=$(srcdir)/NEWS                                       \
+           --bootstrap-tools=automake                                  \
+           $(addprefix --url-dir=, $(url_dir_list))
 
 ## ---------------- ##
 ## Updating files.  ##
@@ -502,8 +541,8 @@ announcement: NEWS ChangeLog $(rel-files)
 ftp-gnu = ftp://ftp.gnu.org/gnu
 www-gnu = http://www.gnu.org
 
-# Use mv-if-change if you prefer it.
-move_if_change ?= mv
+# Use mv, if you don't have/want move-if-change.
+move_if_change ?= move-if-change
 
 
 # --------------------- #
@@ -547,7 +586,7 @@ emit_upload_commands:
        @echo =====================================
        @echo =====================================
        @echo "$(srcdir)/build-aux/gnupload $(GNUPLOADFLAGS) \\"
-       @echo "    --to $(gnu_rel_host):coreutils \\"
+       @echo "    --to $(gnu_rel_host):$(PACKAGE) \\"
        @echo "  $(rel-files)"
        @echo '# send the /tmp/announcement e-mail'
        @echo =====================================
@@ -562,11 +601,13 @@ alpha beta major: news-date-check changelog-check 
$(local-check)
          && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \
               || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
          || :
-       $(MAKE) cvs-dist
+       $(MAKE) vc-dist
        $(MAKE) $(xd-delta)
        $(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir)
        ln $(rel-files) $(release_archive_dir)
        chmod a-w $(rel-files)
        $(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
        echo $(VERSION) > $(prev_version_file)
-       $(CVS) ci -m. $(prev_version_file)
+       $(VC) commit -m \
+         '$(prev_version_file): Record previous version: $(VERSION).' \
+         $(prev_version_file)
-- 
1.5.4


reply via email to

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