changeset 7716:f2d3357d1ce7

* build-aux/announce-gen: Add two new options, both optional: --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's UTC.
author Jim Meyering <jim@meyering.net>
date Fri, 08 Dec 2006 09:28:23 +0000
parents dcba1dfb9ff2
children fca53d8533ba
files ChangeLog build-aux/announce-gen
diffstat 2 files changed, 78 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2006-12-08  Jim Meyering  <jim@meyering.net>
+
+	* build-aux/announce-gen: Add two new options, both optional:
+	--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's UTC.
+
 2006-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
 	* tests/test-argp-2.sh: Fix test to match actual output.
--- a/build-aux/announce-gen
+++ b/build-aux/announce-gen
@@ -24,8 +24,9 @@
 use Getopt::Long;
 use Digest::MD5;
 use Digest::SHA1;
+use POSIX qw(strftime);
 
-(my $VERSION = '$Revision: 1.1 $ ') =~ tr/[0-9].//cd;
+(my $VERSION = '$Revision: 1.2 $ ') =~ tr/[0-9].//cd;
 (my $ME = $0) =~ s|.*/||;
 
 my %valid_release_types = map {$_ => 1} qw (alpha beta major);
@@ -73,7 +74,7 @@
 
   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
@@ -81,7 +82,16 @@
    --current-version=VER
    --gpg-key-id=ID         The GnuPG ID of the key used to sign the tarballs
    --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's UTC.
 
    --help             display this help and exit
    --version          output version information and exit
@@ -311,6 +321,49 @@
     or warn "$ME: warning: `cmd' had unexpected exit code or signal ($?)\n";
 }
 
+sub get_tool_versions ($$)
+{
+  my ($bootstrap_tools, $gnulib_snapshot_timestamp) = @_;
+  defined $bootstrap_tools
+    or return ();
+
+  defined $gnulib_snapshot_timestamp
+    or $gnulib_snapshot_timestamp = strftime '%Y-%m-%d %T UTC', gmtime;
+
+  my $fail;
+  my @tool_list = split ',', $bootstrap_tools;
+  my @tool_version_pair;
+  foreach my $t (@tool_list)
+    {
+      if ($t eq 'gnulib')
+	{
+	  push @tool_version_pair,
+	    "CVS Gnulib sources from $gnulib_snapshot_timestamp";
+	  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.
@@ -323,6 +376,8 @@
   my $gpg_key_id;
   my @url_dir_list;
   my @news_file;
+  my $bootstrap_tools;
+  my $gnulib_snapshot_timestamp;
 
   GetOptions
     (
@@ -333,6 +388,8 @@
      'gpg-key-id=s'       => \$gpg_key_id,
      'url-directory=s'    => \@url_dir_list,
      'news=s'             => \@news_file,
+     'bootstrap-tools=s'  => \$bootstrap_tools,
+     'gnulib-snapshot-time-stamp=s' => \$gnulib_snapshot_timestamp,
 
      help => sub { usage 0 },
      version => sub { print "$ME version $VERSION\n"; exit },
@@ -408,6 +465,12 @@
 and rerun the \`gpg --verify' command.
 EOF
 
+  my @tool_versions = get_tool_versions ($bootstrap_tools,
+                                         $gnulib_snapshot_timestamp);
+  @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;