diff --git a/dev-tools/scripts/buildAndPushRelease.py b/dev-tools/scripts/buildAndPushRelease.py index 8a60b365342..43858dcf5ee 100644 --- a/dev-tools/scripts/buildAndPushRelease.py +++ b/dev-tools/scripts/buildAndPushRelease.py @@ -19,9 +19,9 @@ import shutil import os import sys -# Usage: python -u buildRelease.py [-sign gpgKey(eg: 6E68DA61)] [-prepare] [-push userName] [-pushLocal dirName] [-smoke tmpDir] /path/to/checkout version(eg: 3.4.0) rcNum(eg: 0) +# Usage: python3.2 -u buildAndPushRelease.py [-sign gpgKey(eg: 6E68DA61)] [-prepare] [-push userName] [-pushLocal dirName] [-smoke tmpDir] /path/to/checkout version(eg: 3.4.0) rcNum(eg: 0) # -# EG: python -u buildRelease.py -prepare -push -sign 6E68DA61 mikemccand /lucene/34x 3.4.0 0 +# EG: python3.2 -u buildAndPushRelease.py -prepare -push -sign 6E68DA61 mikemccand /lucene/34x 3.4.0 0 # NOTE: if you specify -sign, you have to type in your gpg password at # some point while this runs; it's VERY confusing because the output @@ -32,15 +32,15 @@ import sys LOG = '/tmp/release.log' def log(msg): - f = open(LOG, 'ab') - f.write(msg) + f = open(LOG, mode='ab') + f.write(msg.encode('utf-8')) f.close() def run(command): log('\n\n%s: RUN: %s\n' % (datetime.datetime.now(), command)) if os.system('%s >> %s 2>&1' % (command, LOG)): msg = ' FAILED: %s [see log %s]' % (command, LOG) - print msg + print(msg) raise RuntimeError(msg) def scrubCheckout(): @@ -53,7 +53,7 @@ def scrubCheckout(): if match: s = match.group(1) if os.path.exists(s): - print ' delete %s' % s + print(' delete %s' % s) if os.path.isdir(s) and not os.path.islink(s): shutil.rmtree(s) else: @@ -69,29 +69,29 @@ def getSVNRev(): def prepare(root, version, gpgKeyID, doTest): - print - print 'Prepare release...' + print() + print('Prepare release...') if os.path.exists(LOG): os.remove(LOG) os.chdir(root) - print ' svn up...' + print(' svn up...') run('svn up') rev = getSVNRev() - print ' svn rev: %s' % rev + print(' svn rev: %s' % rev) log('\nSVN rev: %s\n' % rev) if doTest: # Don't run tests if we are gonna smoke test after the release... - print ' ant clean test' + print(' ant clean test') run('ant clean test') - print ' clean checkout' + print(' clean checkout') scrubCheckout() - open('rev.txt', 'wb').write(rev) + open('rev.txt', mode='wb').write(rev.encode('UTF-8')) - print ' lucene prepare-release' + print(' lucene prepare-release') os.chdir('lucene') cmd = 'ant -Dversion=%s -Dspecversion=%s' % (version, version) if gpgKeyID is not None: @@ -100,7 +100,7 @@ def prepare(root, version, gpgKeyID, doTest): cmd += ' prepare-release-no-sign' run(cmd) - print ' solr prepare-release' + print(' solr prepare-release') os.chdir('../solr') cmd = 'ant -Dversion=%s -Dspecversion=%s' % (version, version) if gpgKeyID is not None: @@ -108,48 +108,48 @@ def prepare(root, version, gpgKeyID, doTest): else: cmd += ' prepare-release-no-sign' run(cmd) - print ' done!' - print + print(' done!') + print() return rev def push(version, root, rev, rcNum, username): - print 'Push...' + print('Push...') dir = 'lucene-solr-%s-RC%d-rev%s' % (version, rcNum, rev) - s = os.popen('ssh %s@people.apache.org "ls -ld public_html/staging_area/%s" 2>&1' % (username, dir)).read() - if s.lower().find('no such file or directory') == -1: - print ' Remove old dir...' + s = os.popen('ssh %s@people.apache.org "ls -ld public_html/staging_area/%s" 2>&1' % (username, dir)).read().decode('UTF-8') + if 'no such file or directory' not in s.lower(): + print(' Remove old dir...') run('ssh %s@people.apache.org "chmod -R u+rwX public_html/staging_area/%s; rm -rf public_html/staging_area/%s"' % (username, dir, dir)) run('ssh %s@people.apache.org "mkdir -p public_html/staging_area/%s/lucene public_html/staging_area/%s/solr"' % \ (username, dir, dir)) - print ' Lucene' + print(' Lucene') os.chdir('%s/lucene/dist' % root) - print ' zip...' + print(' zip...') if os.path.exists('lucene.tar.bz2'): os.remove('lucene.tar.bz2') run('tar cjf lucene.tar.bz2 *') - print ' copy...' + print(' copy...') run('scp lucene.tar.bz2 %s@people.apache.org:public_html/staging_area/%s/lucene' % (username, dir)) - print ' unzip...' + print(' unzip...') run('ssh %s@people.apache.org "cd public_html/staging_area/%s/lucene; tar xjf lucene.tar.bz2; rm -f lucene.tar.bz2"' % (username, dir)) os.remove('lucene.tar.bz2') - print ' copy changes...' + print(' copy changes...') os.chdir('..') run('scp -r build/docs/changes %s@people.apache.org:public_html/staging_area/%s/lucene/changes-%s' % (username, dir, version)) - print ' Solr' + print(' Solr') os.chdir('%s/solr/package' % root) - print ' zip...' + print(' zip...') if os.path.exists('solr.tar.bz2'): os.remove('solr.tar.bz2') run('tar cjf solr.tar.bz2 *') - print ' copy...' + print(' copy...') run('scp solr.tar.bz2 %s@people.apache.org:public_html/staging_area/%s/solr' % (username, dir)) - print ' unzip...' + print(' unzip...') run('ssh %s@people.apache.org "cd public_html/staging_area/%s/solr; tar xjf solr.tar.bz2; rm -f solr.tar.bz2"' % (username, dir)) os.remove('solr.tar.bz2') - print ' KEYS' + print(' KEYS') run('wget http://people.apache.org/keys/group/lucene.asc') os.rename('lucene.asc', 'KEYS') run('chmod a+r-w KEYS') @@ -157,56 +157,56 @@ def push(version, root, rev, rcNum, username): run('scp KEYS %s@people.apache.org:public_html/staging_area/%s/solr' % (username, dir)) os.remove('KEYS') - print ' chmod...' + print(' chmod...') run('ssh %s@people.apache.org "chmod -R a+rX-w public_html/staging_area/%s"' % (username, dir)) - print ' done!' + print(' done!') url = 'https://people.apache.org/~%s/staging_area/%s' % (username, dir) return url def pushLocal(version, root, rev, rcNum, localDir): - print 'Push local [%s]...' % localDir + print('Push local [%s]...' % localDir) os.makedirs(localDir) dir = 'lucene-solr-%s-RC%d-rev%s' % (version, rcNum, rev) os.makedirs('%s/%s/lucene' % (localDir, dir)) os.makedirs('%s/%s/solr' % (localDir, dir)) - print ' Lucene' + print(' Lucene') os.chdir('%s/lucene/dist' % root) - print ' zip...' + print(' zip...') if os.path.exists('lucene.tar.bz2'): os.remove('lucene.tar.bz2') run('tar cjf lucene.tar.bz2 *') os.chdir('%s/%s/lucene' % (localDir, dir)) - print ' unzip...' + print(' unzip...') run('tar xjf "%s/lucene/dist/lucene.tar.bz2"' % root) os.remove('%s/lucene/dist/lucene.tar.bz2' % root) - print ' copy changes...' + print(' copy changes...') run('cp -r "%s/lucene/build/docs/changes" changes-%s' % (root, version)) - print ' Solr' + print(' Solr') os.chdir('%s/solr/package' % root) - print ' zip...' + print(' zip...') if os.path.exists('solr.tar.bz2'): os.remove('solr.tar.bz2') run('tar cjf solr.tar.bz2 *') - print ' unzip...' + print(' unzip...') os.chdir('%s/%s/solr' % (localDir, dir)) run('tar xjf "%s/solr/package/solr.tar.bz2"' % root) os.remove('%s/solr/package/solr.tar.bz2' % root) - print ' KEYS' + print(' KEYS') run('wget http://people.apache.org/keys/group/lucene.asc') os.rename('lucene.asc', 'KEYS') run('chmod a+r-w KEYS') run('cp KEYS ../lucene') - print ' chmod...' + print(' chmod...') os.chdir('..') run('chmod -R a+rX-w .') - print ' done!' + print(' done!') return 'file://%s/%s' % (os.path.abspath(localDir), dir) def main(): @@ -231,9 +231,9 @@ def main(): smokeTmpDir = sys.argv[idx+1] del sys.argv[idx:idx+2] if os.path.exists(smokeTmpDir): - print - print 'ERROR: smoke tmpDir "%s" exists; please remove first' % smokeTmpDir - print + print() + print('ERROR: smoke tmpDir "%s" exists; please remove first' % smokeTmpDir) + print() sys.exit(1) try: @@ -245,15 +245,15 @@ def main(): localStagingDir = sys.argv[idx+1] del sys.argv[idx:idx+2] if os.path.exists(localStagingDir): - print - print 'ERROR: pushLocal dir "%s" exists; please remove first' % localStagingDir - print + print() + print('ERROR: pushLocal dir "%s" exists; please remove first' % localStagingDir) + print() sys.exit(1) if doPushRemote and doPushLocal: - print - print 'ERROR: specify at most one of -push or -pushLocal (got both)' - print + print() + print('ERROR: specify at most one of -push or -pushLocal (got both)') + print() sys.exit(1) try: @@ -263,7 +263,7 @@ def main(): else: gpgKeyID = sys.argv[idx+1] del sys.argv[idx:idx+2] - + root = os.path.abspath(sys.argv[1]) version = sys.argv[2] rcNum = int(sys.argv[3]) @@ -272,22 +272,26 @@ def main(): rev = prepare(root, version, gpgKeyID, smokeTmpDir is None) else: os.chdir(root) - rev = open('rev.txt').read() + rev = open('rev.txt', encoding='UTF-8').read() if doPushRemote: url = push(version, root, rev, rcNum, username) elif doPushLocal: url = pushLocal(version, root, rev, rcNum, localStagingDir) else: - url = NOne + url = None if url is not None: - print ' URL: %s' % url + print(' URL: %s' % url) if smokeTmpDir is not None: import smokeTestRelease smokeTestRelease.DEBUG = False smokeTestRelease.smokeTest(url, version, smokeTmpDir, gpgKeyID is not None) - + if __name__ == '__main__': - main() + try: + main() + except: + import traceback + traceback.print_exc()