build: mention ftp redirector in release announcements
[gnulib.git] / build-aux / announce-gen
index f6affab..5fbb9cd 100755 (executable)
@@ -1,7 +1,9 @@
-#!/usr/bin/perl -w
+eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
+  & eval 'exec perl -wS "$0" $argv:q'
+    if 0;
 # Generate a release announcement message.
 
-my $VERSION = '2009-03-02 07:45'; # UTC
+my $VERSION = '2009-11-20 13:36'; # 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
@@ -33,32 +35,8 @@ use POSIX qw(strftime);
 
 (my $ME = $0) =~ s|.*/||;
 
-my %valid_release_types = map {$_ => 1} qw (alpha beta major);
-
-END
-{
-  # Nobody ever checks the status of print()s.  That's okay, because
-  # if any do fail, we're guaranteed to get an indicator when we close()
-  # the filehandle.
-  #
-  # Close stdout now, and if there were no errors, return happy status.
-  # If stdout has already been closed by the script, though, do nothing.
-  defined fileno STDOUT
-    or return;
-  close STDOUT
-    and return;
-
-  # Errors closing stdout.  Indicate that, and hope stderr is OK.
-  warn "$ME: closing standard output: $!\n";
-
-  # Don't be so arrogant as to assume that we're the first END handler
-  # defined, and thus the last one invoked.  There may be others yet
-  # to come.  $? will be passed on to them, and to the final _exit().
-  #
-  # If it isn't already an error, make it one (and if it _is_ an error,
-  # preserve the value: it might be important).
-  $? ||= 1;
-}
+my %valid_release_types = map {$_ => 1} qw (alpha beta stable);
+my @archive_suffixes = ('tar.gz', 'tar.bz2', 'tar.lzma', 'tar.xz');
 
 sub usage ($)
 {
@@ -73,11 +51,10 @@ sub usage ($)
       my @types = sort keys %valid_release_types;
       print $STREAM <<EOF;
 Usage: $ME [OPTIONS]
+Generate an announcement message.
 
 OPTIONS:
 
-  Generate an announcement message.
-
 These options must be specified:
 
    --release-type=TYPE          TYPE must be one of @types
@@ -97,6 +74,7 @@ The following are optional:
                                 in the gnulib source directory.
                                 required if gnulib is in TOOL_LIST.
    --no-print-checksums         do not emit MD5 or SHA1 checksums
+   --archive-suffix=SUF         add SUF to the list of archive suffixes
 
    --help             display this help and exit
    --version          output version information and exit
@@ -391,6 +369,7 @@ sub get_tool_versions ($$)
      'bootstrap-tools=s'  => \$bootstrap_tools,
      'gnulib-version=s'   => \$gnulib_version,
      'print-checksums!'   => \$print_checksums_p,
+     'archive-suffix=s'   => \@archive_suffixes,
 
      help => sub { usage 0 },
      version => sub { print "$ME version $VERSION\n"; exit },
@@ -428,16 +407,14 @@ sub get_tool_versions ($$)
     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 $xz = "$my_distdir.tar.xz";
 
   my $xd = "$package_name-$prev_version-$curr_version.xdelta";
 
-  my @tarballs = grep {-f $_} ($tgz, $tbz, $lzma, $xz);
+  my @candidates = map { "$my_distdir.$_" } @archive_suffixes;
+  my @tarballs = grep {-f $_} @candidates;
+
   @tarballs
-    or die "$ME: none of $tgz, $tbz, $lzma or $xz were found\n";
+    or die "$ME: none of " . join(', ', @candidates) . " were found\n";
   my @sizable = @tarballs;
   -f $xd
     and push @sizable, $xd;
@@ -449,7 +426,7 @@ sub get_tool_versions ($$)
   # mail (or part of a diff), Gnus is not triggered.
   print <<EOF;
 
-Subject: $my_distdir released
+Subject: $my_distdir released [$release_type]
 
 <\#secure method=pgpmime mode=sign>
 
@@ -465,6 +442,11 @@ EOF
   my @sig_files = map { "$_.sig" } @tarballs;
   print_locations ("GPG detached signatures[*]", @url_dir_list, %size,
                   @sig_files);
+  if ($url_dir_list[0] =~ "gnu\.org")
+    {
+      print "To reduce load on the main server, use a mirror listed at:\n";
+      print "  http://www.gnu.org/order/ftp.html\n\n";
+    }
 
   $print_checksums_p
     and print_checksums (@sizable);
@@ -475,7 +457,7 @@ the corresponding file (without the .sig suffix) is intact.  First,
 be sure to download both the .sig file and the corresponding tarball.
 Then, run a command like this:
 
-  gpg --verify $tgz.sig
+  gpg --verify $tarballs[0].sig
 
 If that command fails because you don't have the required public key,
 then run this command to import it:
@@ -493,7 +475,7 @@ EOF
   print_news_deltas ($_, $prev_version, $curr_version)
     foreach @news_file;
 
-  $release_type eq 'major'
+  $release_type eq 'stable'
     or print_changelog_deltas ($package_name, $prev_version);
 
   exit 0;
@@ -501,19 +483,15 @@ EOF
 
 ### Setup "GNU" style for perl-mode and cperl-mode.
 ## Local Variables:
+## mode: perl
 ## perl-indent-level: 2
 ## perl-continued-statement-offset: 2
 ## perl-continued-brace-offset: 0
 ## perl-brace-offset: 0
 ## perl-brace-imaginary-offset: 0
 ## perl-label-offset: -2
-## cperl-indent-level: 2
-## cperl-brace-offset: 0
-## cperl-continued-brace-offset: 0
-## cperl-label-offset: -2
-## cperl-extra-newline-before-brace: t
-## cperl-merge-trailing-else: nil
-## cperl-continued-statement-offset: 2
+## perl-extra-newline-before-brace: t
+## perl-merge-trailing-else: nil
 ## eval: (add-hook 'write-file-hooks 'time-stamp)
 ## time-stamp-start: "my $VERSION = '"
 ## time-stamp-format: "%:y-%02m-%02d %02H:%02M"