[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FYI: automatize uploads of automake releases
From: |
Alexandre Duret-Lutz |
Subject: |
FYI: automatize uploads of automake releases |
Date: |
Sat, 24 Jan 2004 20:22:01 +0100 |
User-agent: |
Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3.50 (gnu/linux) |
I was fed up to type my passphrase many time when doing
releases, repeat the same scp/ftp commands, etc. Parallelly Jim
asked whether I had a script for the FSF upload procedure. So
here we are. I'm installing the following on HEAD.
Thanks Jim for his initial comments and corrections to gnupload.
2004-01-24 Alexandre Duret-Lutz <address@hidden>
* lib/gnupload: New script.
* lib/Makefile.am (EXTRA_DIST): Distribute gnupload.
* Makefile.am (cvs-release): New target.
Index: HACKING
===================================================================
RCS file: /cvs/automake/automake/HACKING,v
retrieving revision 1.21
diff -u -r1.21 HACKING
--- HACKING 12 Nov 2003 23:37:28 -0000 1.21
+++ HACKING 24 Jan 2004 19:16:22 -0000
@@ -128,29 +128,17 @@
* Run ./bootstrap, ./configure, make.
-* Run `make cvs-dist'.
- This will run distcheck to create the tarball, commit the last
- NEWS/configure.ac/ChangeLog changes, and tag the repository.
+* Run `make cvs-release'.
+ This will run distcheck to create the tarballs, commit the last
+ NEWS/configure.ac/ChangeLog changes, tag the repository, sign
+ the tarballs, and upload them.
+ Use `make GNUPLOADFLAGS="--user key" cvs-release' to sign with
+ a non-default key.
* Update version number in configure.ac to next alpha number.
Re-run ./bootstrap and commit.
-* gpg -ba -o automake-VERSION.tar.gz.sig automake-VERSION.tar.gz
- gpg -ba -o automake-VERSION.tar.bz2.sig automake-VERSION.tar.bz2
- echo 'directory: automake' >automake-VERSION.tar.gz.directive
- gpg --clearsign automake-VERSION.tar.gz.directive
- cp automake-VERSION.tar.{gz,bz2}.directive.asc
-
- scp automake-VERSION.tar.{gz,bz2}{,.sig} sources.redhat.com:~ftp/pub/automake
-
- For alpha releases:
- ncftpput ftp-upload.gnu.org /incoming/alpha \
- automake-VERSION.tar.{gz,bz2}{,.directive.asc,.sig}
- For "real" releases:
- ncftpput ftp-upload.gnu.org /incoming/ftp \
- automake-VERSION.tar.{gz,bz2}{,.directive.asc,.sig}
-
- Send announcement at least to address@hidden, and
+* Send announcement at least to address@hidden, and
address@hidden If not an alpha, announcement must also go to
address@hidden
Index: Makefile.am
===================================================================
RCS file: /cvs/automake/automake/Makefile.am,v
retrieving revision 1.227
diff -u -r1.227 Makefile.am
--- Makefile.am 5 Jan 2004 22:21:30 -0000 1.227
+++ Makefile.am 24 Jan 2004 19:16:22 -0000
@@ -274,6 +274,15 @@
cd $(srcdir) && clcommit && \
cvs -q tag -c `echo "Release-$(VERSION)" | sed 's/\./-/g'`
+cvs-release: cvs-dist
+ case $(VERSION) in \
+ *[a-z]) dest=alpha;; \
+ *) dest=ftp;; \
+ esac; \
+ $(srcdir)/lib/gnupload $(GNUPLOADFLAGS) \
+ --to sources.redhat.com:~ftp/automake \
+ --to $$dest.gnu.org:gnu/automake $(DIST_ARCHIVES)
+
cvs-diff:
thisver=`echo "Release-$(VERSION)" | sed 's/\./-/g'`; \
if test -z "$$OLDVERSION"; then \
Index: lib/Makefile.am
===================================================================
RCS file: /cvs/automake/automake/lib/Makefile.am,v
retrieving revision 1.7
diff -u -r1.7 Makefile.am
--- lib/Makefile.am 11 Nov 2003 13:03:07 -0000 1.7
+++ lib/Makefile.am 24 Jan 2004 19:16:23 -0000
@@ -2,7 +2,7 @@
## Makefile for Automake lib.
-## Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+## Copyright (C) 2001, 2003, 2004 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
@@ -31,6 +31,8 @@
dist_script_DATA = config.guess config.sub install-sh mdate-sh missing \
mkinstalldirs elisp-comp ylwrap acinstall depcomp compile py-compile \
symlink-tree
+
+EXTRA_DIST = gnupload
install-data-hook:
@$(POST_INSTALL)
Index: lib/gnupload
===================================================================
RCS file: lib/gnupload
diff -N lib/gnupload
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/gnupload 24 Jan 2004 19:16:23 -0000
@@ -0,0 +1,161 @@
+#!/bin/sh
+# Sign files and upload them.
+
+scriptversion=2004-01-24.20
+
+# Copyright (C) 2004 Free Software Foundation
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# Originally written by Alexandre Duret-Lutz <address@hidden>.
+
+set -e
+
+GPG='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 build directive files and upload files by FTP
+ ftp.gnu.org:DIRECTORY build directive files and upload files by FTP
+ address@hidden:DIRECTORY upload files with scp
+
+Example:
+ gnupload --to sources.redhat.com:~ftp/automake \\
+ --to alpha.gnu.org:gnu/automake \\
+ automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
+
+Report bugs to <address@hidden>.
+Send patches to <address@hidden>."
+
+while test -n "$1"; do
+ case $1 in
+ --help)
+ echo "$usage"
+ exit 0
+ ;;
+ --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 0
+ ;;
+ -*)
+ 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
+
+# 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...).
+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"
+ case $dest in
+ alpha.gnu.org:*)
+ rm -f $file.directive $file.directive.asc
+ echo directory: `echo $dest | sed 's/[^:]*://'` >$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: `echo $dest | sed 's/[^:]*://'` >$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
+ ;;
+ *)
+ 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:
--
Alexandre Duret-Lutz
- FYI: automatize uploads of automake releases,
Alexandre Duret-Lutz <=