changeset 7178:e8fe34306afa

Add gnupload module.
author Simon Josefsson <simon@josefsson.org>
date Tue, 22 Aug 2006 13:23:55 +0000
parents b15c5c1d9094
children 2fa0a8f44af8
files ChangeLog MODULES.html.sh build-aux/gnupload config/ChangeLog config/srclist.txt modules/gnupload
diffstat 6 files changed, 221 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-08-22  Simon Josefsson  <jas@extundo.com>
+
+	* MODULES.html.sh: Add "Support for maintaining and release
+	projects".
+
+	* build-aux/gnupload: New file, from coreutils.
+
 2006-08-22  Jim Meyering  <jim@meyering.net>
 
 	* modules/mkdir-p (Makefile.am): Fix typo: s/lib+SOURCES/lib_SOURCES/.
--- a/MODULES.html.sh
+++ b/MODULES.html.sh
@@ -2113,6 +2113,16 @@
   func_module gendocs
   func_end_table
 
+  element="Support for maintaining and release projects"
+  func_section_wrap maintain
+  func_wrap H2
+  func_echo "$element"
+
+  func_begin_table
+  func_module gnupload
+  func_module maintainer-makefile
+  func_end_table
+
   element="Misc"
   func_section_wrap misc
   func_wrap H2
new file mode 100755
--- /dev/null
+++ b/build-aux/gnupload
@@ -0,0 +1,176 @@
+#!/bin/sh
+# Sign files and upload them.
+
+scriptversion=2006-05-20.00
+
+# Copyright (C) 2004, 2005, 2006  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 2, 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Originally written by Alexandre Duret-Lutz <adl@gnu.org>.
+
+set -e
+
+GPG='/usr/bin/gpg --batch --no-tty'
+to=
+
+usage="Usage: $0 [OPTIONS]... FILES...
+
+Sign all FILES, and upload them to selected destinations.
+
+Options:
+  --help                   print this help text and exit
+  --to DEST                specify one destination for FILES
+                           (multiple --to options are allowed)
+  --user NAME              sign with key NAME
+  --version                output version information and exit
+
+Recognized destinations are:
+  alpha.gnu.org:DIRECTORY
+  savannah.gnu.org:DIRECTORY
+  savannah.nongnu.org:DIRECTORY
+  ftp.gnu.org:DIRECTORY
+                           build directive files and upload files by FTP
+  [user@]host:DIRECTORY    upload files with scp
+
+Example:
+  gnupload --to sources.redhat.com:~ftp/pub/automake \\
+           ""--to alpha.gnu.org:automake \\
+           automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
+
+Report bugs to <bug-automake@gnu.org>.
+Send patches to <automake-patches@gnu.org>."
+
+while test -n "$1"; do
+  case $1 in
+    --help)
+      echo "$usage"
+      exit $?
+      ;;
+    --to)
+      if test -z "$2"; then
+	echo "$0: Missing argument for --to" 1>&2
+        exit 1
+      else
+        to="$to $2"
+        shift 2
+      fi
+      ;;
+    --user)
+      if test -z "$2"; then
+	echo "$0: Missing argument for --user" 1>&2
+        exit 1
+      else
+        GPG="$GPG --local-user $2"
+        shift 2
+      fi
+      ;;
+    --version)
+      echo "gnupload $scriptversion"
+      exit $?
+      ;;
+    -*)
+      echo "$0: Unknown option \`$1', try \`$0 --help'" 1>&2
+      exit 1
+      ;;
+    *)
+      break
+      ;;
+  esac
+done
+
+if test $# = 0; then
+  echo "$0: No file to upload" 1>&2
+  exit 1
+else
+  :
+fi
+
+# Make sure all files exist.  We don't want to ask
+# for the passphrase if the script will fail.
+for file;
+do
+  if test ! -f $file; then
+    echo "$0: Cannot find \`$file'" 1>&2
+    exit 1
+  else
+    :
+  fi
+done
+
+# Make sure passphrase is not exported in the environment.
+unset passphrase
+
+# Reset PATH to be sure that echo is a built-in.  We will later use
+# `echo $passphrase' to output the passphrase, so it is important that
+# it is a built-in (third-party programs tend to appear in `ps'
+# listings with their arguments...).
+# Remember this script runs with `set -e', so if echo is not built-in
+# it will exit now.
+PATH=/empty echo -n "Enter GPG passphrase: "
+stty -echo
+read -r passphrase
+stty echo
+echo
+
+for file;
+do
+  echo "Signing $file..."
+  rm -f $file.sig
+  echo $passphrase | $GPG --passphrase-fd 0 -ba -o $file.sig $file
+done
+
+for dest in $to;
+do
+  for file;
+  do
+    echo "Uploading $file to $dest..."
+    files="$file $file.sig"
+    destdir=`echo $dest | sed 's/[^:]*://'`
+    case $dest in
+      alpha.gnu.org:*)
+	rm -f $file.directive $file.directive.asc
+	echo directory: $destdir >$file.directive
+	echo "$passphrase" | $GPG --passphrase-fd 0 --clearsign $file.directive
+        ncftpput ftp-upload.gnu.org /incoming/alpha $files $file.directive.asc
+	rm -f $file.directive $file.directive.asc
+	;;
+      ftp.gnu.org:*)
+	rm -f $file.directive $file.directive.asc
+	echo directory: $destdir >$file.directive
+	echo "$passphrase" | $GPG --passphrase-fd 0 --clearsign $file.directive
+        ncftpput ftp-upload.gnu.org /incoming/ftp $files $file.directive.asc
+	rm -f $file.directive $file.directive.asc
+	;;
+      savannah.gnu.org:*)
+        ncftpput savannah.gnu.org /incoming/savannah/$destdir $files
+	;;
+      savannah.nongnu.org:*)
+        ncftpput savannah.nongnu.org /incoming/savannah/$destdir $files
+	;;
+      *)
+	scp $files $dest
+	;;
+    esac
+  done
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,7 @@
+2006-07-14  Simon Josefsson  <jas@extundo.com>
+
+	* srclist.txt: Add gnupload.
+
 2006-08-14  Paul Eggert  <eggert@cs.ucla.edu>
 
 	* srclistvars.sh: Add copyright notice.
--- a/config/srclist.txt
+++ b/config/srclist.txt
@@ -1,4 +1,4 @@
-# $Id: srclist.txt,v 1.133 2006-08-12 22:37:45 karl Exp $
+# $Id: srclist.txt,v 1.134 2006-08-22 13:23:56 jas Exp $
 # Files for which we are not the source.  See ./srclistvars.sh for the
 # variable definitions.
 
@@ -276,6 +276,8 @@
 #$LIBCSRC/sysdeps/unix/sysv/gethostname.c	lib gpl
 #$LIBCSRC/sysdeps/unix/utime.c			lib gpl
 
+$COREUTILS/gnupload				build-aux
+
 $LIBTOOL/libltdl/argz.c				lib gpl
 $LIBTOOL/libltdl/argz_.h			lib gpl
 $LIBTOOL/libltdl/m4/argz.m4			m4
new file mode 100644
--- /dev/null
+++ b/modules/gnupload
@@ -0,0 +1,21 @@
+Description:
+Upload PGP signed files to gnu.org.
+See http://www.gnu.org/prep/maintain/html_node/Automated-FTP-Uploads.html
+for more information.
+
+Files:
+build-aux/gnupload
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+
+Include:
+
+License:
+GPLed build tool
+
+Maintainer:
+coreutils