[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Automake-commit] [SCM] GNU Automake branch, branch-1-10, updated. v1.10
From: |
Ralf Wildenhues |
Subject: |
[Automake-commit] [SCM] GNU Automake branch, branch-1-10, updated. v1.10.2-32-geb58d76 |
Date: |
Wed, 04 Mar 2009 19:50:34 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".
http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=eb58d7611dbac645c1894b194ff824a07986a038
The branch, branch-1-10 has been updated
via eb58d7611dbac645c1894b194ff824a07986a038 (commit)
via 043deceaec504dcaae91a696d3631bbf1cd7fac6 (commit)
via ca2c6e149378871de6ec667546f763d0395d16c2 (commit)
from 0cfcf85e56b940cefebd95bb58f74249ff96ec44 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit eb58d7611dbac645c1894b194ff824a07986a038
Author: Ralf Wildenhues <address@hidden>
Date: Wed Mar 4 20:41:05 2009 +0100
reformat gnupload script.
* lib/gnupload: Reformat and reindent.
Signed-off-by: Ralf Wildenhues <address@hidden>
commit 043deceaec504dcaae91a696d3631bbf1cd7fac6
Author: Ralf Wildenhues <address@hidden>
Date: Wed Mar 4 20:40:43 2009 +0100
gnupload touchups.
* lib/gnupload (conffile): New variable. Use throughout.
(dry_run): Use `false' and `:' values. Show, don't execute,
gpg signing commands upon --dry-run.
(usage): Typo and formatting fixes. Mention that commands are
applied in order.
(argument loop): Factorize a bit, fix quoting.
(dprint, mkdirective, mksymlink, upload): Formatting and
portability fixes.
Signed-off-by: Ralf Wildenhues <address@hidden>
commit ca2c6e149378871de6ec667546f763d0395d16c2
Author: Sergey Poznyakoff <address@hidden>
Date: Wed Mar 4 20:39:56 2009 +0100
Various gnupload improvements.
Add support for uploading to download.gnu.org.ua.
Add support for a .gnupload configuration file.
Support creating and removing symlinks.
Allow for several operations in a single invocation.
Add debugging features.
* lib/gnupload: New options --delete, --symlink, --rmsymlink,
--symlink-regex, --dry-run; support `--' to separate options and
commands from files. New target download.gnu.org.ua. Expand
`.gnupload' file contents before command line arguments.
(usage): Expand.
(dprint, mkdirective, mksymlink, upload): New functions.
* THANKS: Update.
Signed-off-by: Ralf Wildenhues <address@hidden>
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 31 +++++
THANKS | 1 +
lib/gnupload | 361 ++++++++++++++++++++++++++++++++++++++++++++--------------
3 files changed, 308 insertions(+), 85 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 7efd6e2..8274355 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,34 @@
+2009-03-04 Ralf Wildenhues <address@hidden>
+
+ reformat gnupload script.
+ * lib/gnupload: Reformat and reindent.
+
+ gnupload touchups.
+ * lib/gnupload (conffile): New variable. Use throughout.
+ (dry_run): Use `false' and `:' values. Show, don't execute,
+ gpg signing commands upon --dry-run.
+ (usage): Typo and formatting fixes. Mention that commands are
+ applied in order.
+ (argument loop): Factorize a bit, fix quoting.
+ (dprint, mkdirective, mksymlink, upload): Formatting and
+ portability fixes.
+
+2009-03-04 Sergey Poznyakoff <address@hidden>
+
+ Various gnupload improvements.
+ Add support for uploading to download.gnu.org.ua.
+ Add support for a .gnupload configuration file.
+ Support creating and removing symlinks.
+ Allow for several operations in a single invocation.
+ Add debugging features.
+ * lib/gnupload: New options --delete, --symlink, --rmsymlink,
+ --symlink-regex, --dry-run; support `--' to separate options and
+ commands from files. New target download.gnu.org.ua. Expand
+ `.gnupload' file contents before command line arguments.
+ (usage): Expand.
+ (dprint, mkdirective, mksymlink, upload): New functions.
+ * THANKS: Update.
+
2009-03-03 Peter Rosin <address@hidden>
Add depmode=msvcmsys for Microsoft Visual C++ on MSYS.
diff --git a/THANKS b/THANKS
index ae3ad0d..316c797 100644
--- a/THANKS
+++ b/THANKS
@@ -287,6 +287,7 @@ Sam Steingold address@hidden
Sander Niemeijer address@hidden
Santiago Vila address@hidden
Scott James Remnant address@hidden
+Sergey Poznyakoff address@hidden
Sergey Vlasov address@hidden
Seth Alves address@hidden
Shuhei Amakawa address@hidden
diff --git a/lib/gnupload b/lib/gnupload
index 1d0533a..cf97e50 100755
--- a/lib/gnupload
+++ b/lib/gnupload
@@ -1,9 +1,9 @@
#!/bin/sh
# Sign files and upload them.
-scriptversion=2009-01-30.00
+scriptversion=2009-03-04.21
-# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 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
@@ -25,101 +25,193 @@ scriptversion=2009-01-30.00
set -e
GPG='gpg --batch --no-tty'
+conffile=.gnupload
to=
-delete=false
+dry_run=false
+symlink_files=
+delete_files=
+delete_symlinks=
+collect_var=
+dbg=
-usage="Usage: $0 [OPTIONS]... FILES...
+usage="Usage: $0 [OPTIONS]... [COMMAND] FILES... [[COMMAND] FILES...]
-Sign all FILES, and upload them to (or delete them from) selected
-destinations, according to
+Sign all FILES, and upload them to selected destinations, according to
<http://www.gnu.org/prep/maintain/html_node/Automated-FTP-Uploads.html>.
+Commands:
+ --delete delete FILES from destination
+ --symlink create symbolic links
+ --rmsymlink remove symbolic links
+ -- treat the remaining arguments as files to upload
+
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
- --delete delete FILES from destination instead of uploading
+ --symlink-regex[=EXPR] use sed script EXPR to compute symbolic link names
+ --dry-run do nothing, show what would have been done
--version output version information and exit
+If --symlink-regex is given without EXPR, then the link target name
+is created by replacing the version information with \`-latest', e.g.:
+
+ foo-1.3.4.tar.gz -> foo-latest.tar.gz
+
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
+ download.gnu.org.ua:{alpha|ftp}/DIRECTORY
+ build directive files and upload files by SFTP
address@hidden:DIRECTORY upload files with scp
-Deletion only works for ftp.gnu.org and alpha.gnu.org (using the
-archive: directive). Otherwise it is a no-op. Deleting a file foo also
-deletes foo.sig; do not specify the .sig explicitly.
+Options and commands are applied in order. If the file $conffile exists
+in the current working directory, its contents are prepended to the
+actual command line options. Use this to keep your defaults. Comments
+(#) and empty lines in $conffile are allowed.
-Simple single-target single-file examples:
- gnupload --to alpha.gnu.org:automake automake-1.8.2b.tar.gz
- gnupload --to ftp.gnu.org:automake automake-1.8.3.tar.gz
- gnupload --to alpha.gnu.org:automake --delete automake-oops.tar.gz
+Examples:
+1. Upload automake-1.8.2b.tar.gz and automake-1.8.2b.tar.bz2 to two sites:
+ 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
-Multiple-target multiple-file example:
+2. Same as above, but also create symbolic links to automake-latest.tar.*:
gnupload --to sources.redhat.com:~ftp/pub/automake \\
--to alpha.gnu.org:automake \\
+ --symlink-regex \\
automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
-You can get the latest version of this script from savannah:
-<http://git.savannah.gnu.org/cgit/automake.git/plain/lib/gnupload>
+3. Symlink automake-1.8.2b.tar.gz to automake-latest.tar.gz and
+automake-1.8.2b.tar.bz2 to automake-latest.tar.bz2 on both sites:
+
+ gnupload --to sources.redhat.com:~ftp/pub/automake \\
+ --to alpha.gnu.org:automake \\
+ --symlink automake-1.8.2b.tar.gz automake-latest.tar.gz \\
+ automake-1.8.2b.tar.bz2 automake-latest.tar.bz2
+
+4. Delete automake-1.8.2a.tar.gz and .bz2, remove symlink
+automake-latest.tar.gz and upload automake-1.8.2b.tar.gz:
+
+ gnupload --to sources.redhat.com:~ftp/pub/automake \\
+ --to alpha.gnu.org:automake \\
+ --delete automake-1.8.2a.tar.gz automake-1.8.2a.tar.bz2 \\
+ --rmsymlink automake-latest.tar.gz \\
+ -- \\
+ automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
Report bugs to <address@hidden>.
Send patches to <address@hidden>."
+# Read local configuration file
+if test -r "$conffile"; then
+ echo "$0: Reading configuration file $conffile"
+ eval set x "`sed 's/#.*$//;/^$/d' \"$conffile\" | tr '\012\015' ' '`
\"address@hidden""
+ shift
+fi
+
while test -n "$1"; do
case $1 in
- --delete)
- delete=true
- shift
- ;;
+ -*)
+ collect_var=
+ case $1 in
--help)
echo "$usage"
exit $?
;;
--to)
if test -z "$2"; then
- echo "$0: Missing argument for --to" 1>&2
+ echo "$0: Missing argument for --to" 1>&2
exit 1
else
to="$to $2"
- shift 2
+ shift
fi
;;
--user)
if test -z "$2"; then
- echo "$0: Missing argument for --user" 1>&2
+ echo "$0: Missing argument for --user" 1>&2
exit 1
else
GPG="$GPG --local-user $2"
- shift 2
+ shift
fi
;;
+ --delete)
+ collect_var=delete_files
+ ;;
+ --rmsymlink)
+ collect_var=delete_symlinks
+ ;;
+ --symlink-regex=*)
+ symlink_expr=`expr "$1" : '[^=]*=\(.*\)'`
+ ;;
+ --symlink-regex)
+ symlink_expr='s|-[0-9][0-9\.]*\(-[0-9][0-9]*\)\{0,1\}\.|-latest.|'
+ ;;
+ --symlink)
+ collect_var=symlink_files
+ ;;
+ --dry-run|-n)
+ dry_run=:
+ ;;
--version)
echo "gnupload $scriptversion"
exit $?
;;
+ --)
+ shift
+ break
+ ;;
-*)
echo "$0: Unknown option \`$1', try \`$0 --help'" 1>&2
exit 1
;;
- *)
+ esac
+ ;;
+ *)
+ if test -z "$collect_var"; then
break
- ;;
+ else
+ eval "$collect_var=\"\$$collect_var $1\""
+ fi
+ ;;
esac
+ shift
done
-if test $# = 0; then
- echo "$0: No file to upload or delete" 1>&2
+dprint()
+{
+ echo "Running $*..."
+}
+
+if $dry_run; then
+ dbg=dprint
+fi
+
+if test -z "$to"; then
+ echo "$0: Missing destination sites" >&2
exit 1
-else
- :
fi
-if $delete; then :; else
+if test -n "$symlink_files"; then
+ x=`echo "$symlink_files" | sed 's/[^ ]//g;s/ //g'`
+ if test -n "$x"; then
+ echo "$0: Odd number of symlink arguments" >&2
+ exit 1
+ fi
+fi
+
+if test $# = 0; then
+ if test -z "${symlink_files}${delete_files}${delete_symlinks}"; then
+ echo "$0: No file to upload" 1>&2
+ exit 1
+ fi
+else
# Make sure all files exist. We don't want to ask
# for the passphrase if the script will fail.
for file
@@ -127,8 +219,15 @@ if $delete; then :; else
if test ! -f $file; then
echo "$0: Cannot find \`$file'" 1>&2
exit 1
- else
- :
+ elif test -n "$symlink_expr"; then
+ linkname=`echo $file | sed "$symlink_expr"`
+ if test -z "$linkname"; then
+ echo "$0: symlink expression produces empty results" >&2
+ exit 1
+ elif test "$linkname" = $file; then
+ echo "$0: symlink expression does not alter file name" >&2
+ exit 1
+ fi
fi
done
fi
@@ -148,72 +247,164 @@ read -r passphrase
stty echo
echo
-# Nothing to sign if deleting.
-if $delete; then :; else
+if test $# -ne 0; then
for file
do
echo "Signing $file..."
rm -f $file.sig
- echo $passphrase | $GPG --passphrase-fd 0 -ba -o $file.sig $file
+ echo "$passphrase" | $dbg $GPG --passphrase-fd 0 -ba -o $file.sig $file
+ done
+fi
+
+
+# mkdirective DESTDIR BASE FILE STMT
+# Arguments: See upload, below
+mkdirective ()
+{
+ stmt="$4"
+ if test -n "$3"; then
+ stmt="
+filename: $3$stmt"
+ fi
+
+ cat >${2}.directive<<EOF
+version: 1.1
+directory: $1
+comment: gnupload v. $scriptversion$stmt
+EOF
+ if $dry_run; then
+ echo "File ${2}.directive:"
+ cat ${2}.directive
+ echo "File ${2}.directive:" | sed 's/./-/g'
+ fi
+}
+
+mksymlink ()
+{
+ while test $# -ne 0
+ do
+ echo "symlink: $1 $2"
+ shift
+ shift
+ done
+}
+
+# upload DEST DESTDIR BASE FILE STMT FILES
+# Arguments:
+# DEST Destination site;
+# DESTDIR Destination directory;
+# BASE Base name for the directive file;
+# FILE Name of the file to distribute (may be empty);
+# STMT Additional statements for the directive file;
+# FILES List of files to upload.
+upload ()
+{
+ dest=$1
+ destdir=$2
+ base=$3
+ file=$4
+ stmt=$5
+ files=$6
+
+ rm -f $base.directive $base.directive.asc
+ case $dest in
+ alpha.gnu.org:*)
+ mkdirective "$destdir" "$base" "$file" "$stmt"
+ echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign
$base.directive
+ $dbg ncftpput ftp-upload.gnu.org /incoming/alpha $files
$base.directive.asc
+ ;;
+ ftp.gnu.org:*)
+ mkdirective "$destdir" "$base" "$file" "$stmt"
+ echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign
$base.directive
+ $dbg ncftpput ftp-upload.gnu.org /incoming/ftp $files $base.directive.asc
+ ;;
+ savannah.gnu.org:*)
+ if test -z "$files"; then
+ echo "$0: warning: standalone directives not applicable for $dest" >&2
+ fi
+ $dbg ncftpput savannah.gnu.org /incoming/savannah/$destdir $files
+ ;;
+ savannah.nongnu.org:*)
+ if test -z "$files"; then
+ echo "$0: warning: standalone directives not applicable for $dest" >&2
+ fi
+ $dbg ncftpput savannah.nongnu.org /incoming/savannah/$destdir $files
+ ;;
+ download.gnu.org.ua:alpha/*|download.gnu.org.ua:ftp/*)
+ destdir_p1=`echo "$destdir" | sed 's,^[^/]*/,,'`
+ destdir_topdir=`echo "$destdir" | sed 's,/.*,,'`
+ mkdirective "$destdir_p1" "$base" "$file" "$stmt"
+ echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign
$base.directive
+ for f in $files $base.directive.asc
+ do
+ echo put $f
+ done | $dbg sftp -b - puszcza.gnu.org.ua:/incoming/$destdir_topdir
+ ;;
+ /*)
+ dest_host=`echo "$dest" | sed 's,:.*,,'`
+ mkdirective "$destdir" "$base" "$file" "$stmt"
+ echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign
$base.directive
+ $dbg cp $files $base.directive.asc $dest_host
+ ;;
+ *)
+ if test -z "$files"; then
+ echo "$0: warning: standalone directives not applicable for $dest" >&2
+ fi
+ $dbg scp $files $dest
+ ;;
+ esac
+ rm -f $base.directive $base.directive.asc
+}
+
+#####
+# Process any standalone directives
+stmt=
+if test -n "$symlink_files"; then
+ stmt="$stmt
+`mksymlink $symlink_files`"
+fi
+
+for file in $delete_files
+do
+ stmt="$stmt
+archive: $file"
+done
+
+for file in $delete_symlinks
+do
+ stmt="$stmt
+rmsymlink: $file"
+done
+
+if test -n "$stmt"; then
+ for dest in $to
+ do
+ destdir=`echo $dest | sed 's/[^:]*://'`
+ upload "$dest" "$destdir" "`hostname`-$$" "" "$stmt"
done
fi
+# Process actual uploads
for dest in $to
do
for file
do
- # Prepare arguments.
- if $delete; then
- echo "Removing $file from $dest..."
- files= # nothing to upload if deleting
- directive="archive: $file"
- else
- echo "Uploading $file to $dest..."
- files="$file $file.sig"
- directive="filename: "`basename -- "$file"`
- fi
+ echo "Uploading $file to $dest..."
+ stmt=
+ files="$file $file.sig"
destdir=`echo $dest | sed 's/[^:]*://'`
-
- case $dest in
- alpha.gnu.org:*)
- rm -f $file.directive $file.directive.asc
- cat >$file.directive<<EOF
-version: 1.1
-directory: $destdir
-$directive
-EOF
- 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
- cat >$file.directive<<EOF
-version: 1.1
-directory: $destdir
-$directive
-EOF
- 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:*)
- # We only know how to implement delete for {ftp,alpha}.gnu.org.
- $delete \
- || ncftpput savannah.gnu.org /incoming/savannah/$destdir $files
- ;;
- savannah.nongnu.org:*)
- $delete \
- || ncftpput savannah.nongnu.org /incoming/savannah/$destdir $files
- ;;
- *)
- $delete \
- || scp $files $dest
- ;;
- esac
+ if test -n "$symlink_expr"; then
+ linkname=`echo $file | sed "$symlink_expr"`
+ stmt="$stmt
+symlink: $file $linkname
+symlink: $file.sig $linkname.sig"
+ fi
+ upload "$dest" "$destdir" "$file" "$file" "$stmt" "$files"
done
done
+exit 0
+
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
hooks/post-receive
--
GNU Automake
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Automake-commit] [SCM] GNU Automake branch, branch-1-10, updated. v1.10.2-32-geb58d76,
Ralf Wildenhues <=