Modified: subversion/branches/in-repo-authz/tools/dist/release.py URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/tools/dist/release.py?rev=1421664&r1=1421663&r2=1421664&view=diff ============================================================================== --- subversion/branches/in-repo-authz/tools/dist/release.py (original) +++ subversion/branches/in-repo-authz/tools/dist/release.py Fri Dec 14 04:14:09 2012 @@ -34,6 +34,9 @@ # It'd be kind of nice to use the Subversion python bindings in this script, # but people.apache.org doesn't currently have them installed +# Futures (Python 2.5 compatibility) +from __future__ import with_statement + # Stuff we need import os import re @@ -88,6 +91,7 @@ secure_repos = 'https://svn.apache.org/r dist_repos = 'https://dist.apache.org/repos/dist' dist_dev_url = dist_repos + '/dev/subversion' dist_release_url = dist_repos + '/release/subversion' +KEYS = 'https://people.apache.org/keys/group/subversion-pmc.asc' extns = ['zip', 'tar.gz', 'tar.bz2'] @@ -374,7 +378,10 @@ def compare_changes(repos, branch, revis if stderr: raise RuntimeError('svn mergeinfo failed: %s' % stderr) if stdout: - raise RuntimeError('CHANGES has unmerged revisions: %s' % stdout) + # Treat this as a warning since we are now putting entries for future + # minor releases in CHANGES on trunk. + logging.warning('CHANGES has unmerged revisions: %s' % + stdout.replace("\n", " ")) def roll_tarballs(args): 'Create the release artifacts.' @@ -737,6 +744,15 @@ def check_sigs(args): print(" %s" % fp[1]) +def get_keys(args): + 'Import the LDAP-based KEYS file to gpg' + # We use a tempfile because urlopen() objects don't have a .fileno() + with tempfile.SpooledTemporaryFile() as fd: + fd.write(urllib2.urlopen(KEYS).read()) + fd.flush() + fd.seek(0) + subprocess.check_call(['gpg', '--import'], stdin=fd) + #---------------------------------------------------------------------- # Main entry point for argument parsing and handling @@ -844,6 +860,7 @@ def main(): subparser.add_argument('version', type=Version, help='''The release label, such as '1.7.0-alpha1'.''') + # write-announcement subparser = subparsers.add_parser('write-announcement', help='''Output to stdout template text for the emailed release announcement.''') @@ -851,6 +868,7 @@ def main(): subparser.add_argument('version', type=Version, help='''The release label, such as '1.7.0-alpha1'.''') + # write-downloads subparser = subparsers.add_parser('write-downloads', help='''Output to stdout template text for the download table for subversion.apache.org''') @@ -858,7 +876,7 @@ def main(): subparser.add_argument('version', type=Version, help='''The release label, such as '1.7.0-alpha1'.''') - # The check sigs subcommand + # check-sigs subparser = subparsers.add_parser('check-sigs', help='''Output to stdout the signatures collected for this release''') @@ -869,6 +887,11 @@ def main(): help='''The full path to the directory containing release artifacts.''') + # get-keys + subparser = subparsers.add_parser('get-keys', + help='''Import committers' public keys to ~/.gpg/''') + subparser.set_defaults(func=get_keys) + # A meta-target subparser = subparsers.add_parser('clean', help='''The same as the '--clean' switch, but as a
