Improve announce-gen user messages.
[gnulib.git] / build-aux / announce-gen
index f13b6d5..6775665 100755 (executable)
@@ -1,18 +1,18 @@
 #!/usr/bin/perl -w
 # Generate a release announcement message.
 
-my $VERSION = '2006-12-28 19:19'; # UTC
+my $VERSION = '2008-10-10 05:12'; # 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, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Copyright (C) 2002-2008 Free Software Foundation, Inc.
 
-# This program is free software; you can redistribute it and/or modify
+# 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 2, or (at your option)
-# any later version.
+# 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
@@ -20,8 +20,7 @@ my $VERSION = '2006-12-28 19:19'; # UTC
 # 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, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Written by Jim Meyering
 
@@ -93,10 +92,10 @@ 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.
+   --gnulib-version=VERSION     report VERSION as the gnulib version, where
+                                VERSION is the result of running git describe
+                                in the gnulib source directory.
+                                required if gnulib is in TOOL_LIST.
 
    --help             display this help and exit
    --version          output version information and exit
@@ -328,22 +327,17 @@ sub print_changelog_deltas ($$)
 
 sub get_tool_versions ($$)
 {
-  my ($bootstrap_tools, $gnulib_snapshot_timestamp) = @_;
-  defined $bootstrap_tools
+  my ($tool_list, $gnulib_version) = @_;
+  @$tool_list
     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)
+  foreach my $t (@$tool_list)
     {
       if ($t eq 'gnulib')
        {
-         push @tool_version_pair,
-           "CVS Gnulib sources from $gnulib_snapshot_timestamp";
+         push @tool_version_pair, ucfirst $t . ' ' . $gnulib_version;
          next;
        }
       # Assume that the last "word" on the first line of
@@ -382,7 +376,7 @@ sub get_tool_versions ($$)
   my @url_dir_list;
   my @news_file;
   my $bootstrap_tools;
-  my $gnulib_snapshot_timestamp;
+  my $gnulib_version;
 
   GetOptions
     (
@@ -394,7 +388,7 @@ sub get_tool_versions ($$)
      'url-directory=s'    => \@url_dir_list,
      'news=s'             => \@news_file,
      'bootstrap-tools=s'  => \$bootstrap_tools,
-     'gnulib-snapshot-time-stamp=s' => \$gnulib_snapshot_timestamp,
+     'gnulib-version=s'   => \$gnulib_version,
 
      help => sub { usage 0 },
      version => sub { print "$ME version $VERSION\n"; exit },
@@ -415,20 +409,31 @@ sub get_tool_versions ($$)
   @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 @tarballs = grep {-f $_} ($tgz, $tbz);
+  my @tarballs = grep {-f $_} ($tgz, $tbz, $lzma);
+  @tarballs
+    or die "$ME: none of $tgz, $tbz, or $lzma were found\n";
   my @sizable = @tarballs;
   -f $xd
     and push @sizable, $xd;
@@ -450,7 +455,9 @@ EOF
 
   print_locations ("compressed sources", @url_dir_list, %size, @tarballs);
   -f $xd
-    and print_locations ("xdelta-style diffs", @url_dir_list, %size, $xd);
+    and print_locations ("xdelta diffs (useful? if so, "
+                        . "please tell bug-gnulib\@gnu.org)",
+                        @url_dir_list, %size, $xd);
   my @sig_files = map { "$_.sig" } @tarballs;
   print_locations ("GPG detached signatures[*]", @url_dir_list, %size,
                   @sig_files);
@@ -469,13 +476,12 @@ Then, run a command like this:
 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 $gpg_key_id
+  gpg --keyserver keys.gnupg.net --recv-keys $gpg_key_id
 
 and rerun the \`gpg --verify' command.
 EOF
 
-  my @tool_versions = get_tool_versions ($bootstrap_tools,
-                                         $gnulib_snapshot_timestamp);
+  my @tool_versions = get_tool_versions (\@tool_list, $gnulib_version);
   @tool_versions
     and print "\nThis release was bootstrapped with the following tools:",
       join ('', map {"\n  $_"} @tool_versions), "\n";