Make our Python scripts Python-3-compatible.

They still need to be Python-2-compatible until I figure out how to
switch the version used in the CI.

I've left out make_curve25519_tables.py because it's some bytes vs
unicode mess I don't care to figure out. We should just rewrite that in
Go which should also be much faster anyway.

Change-Id: I4446641815315a84c2979b1be1e1949f88cbacf8
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/46884
Reviewed-by: Adam Langley <agl@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
grpc-202302
David Benjamin 4 years ago committed by CQ bot account: commit-bot@chromium.org
parent 15961379e6
commit 666f2ab65e
  1. 2
      crypto/hpke/translate_test_vectors.py
  2. 2
      util/bot/go/env.py
  3. 52
      util/bot/update_clang.py
  4. 4
      util/bot/vs_env.py
  5. 4
      util/bot/vs_toolchain.py

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3
# coding=utf-8
# Copyright (c) 2020, Google Inc.
#

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

@ -1,10 +1,13 @@
#!/usr/bin/env python
#!/usr/bin/env python3
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""This script is used to download prebuilt clang binaries."""
from __future__ import division
from __future__ import print_function
import os
import shutil
import subprocess
@ -13,7 +16,13 @@ import sys
import tarfile
import tempfile
import time
import urllib2
try:
# Python 3.0 or later
from urllib.error import HTTPError, URLError
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen, HTTPError, URLError
# CLANG_REVISION and CLANG_SUB_REVISION determine the build of clang
@ -45,8 +54,8 @@ def DownloadUrl(url, output_file):
try:
sys.stdout.write('Downloading %s ' % url)
sys.stdout.flush()
response = urllib2.urlopen(url)
total_size = int(response.info().getheader('Content-Length').strip())
response = urlopen(url)
total_size = int(response.headers.get('Content-Length').strip())
bytes_done = 0
dots_printed = 0
while True:
@ -55,29 +64,28 @@ def DownloadUrl(url, output_file):
break
output_file.write(chunk)
bytes_done += len(chunk)
num_dots = TOTAL_DOTS * bytes_done / total_size
num_dots = TOTAL_DOTS * bytes_done // total_size
sys.stdout.write('.' * (num_dots - dots_printed))
sys.stdout.flush()
dots_printed = num_dots
if bytes_done != total_size:
raise urllib2.URLError("only got %d of %d bytes" %
(bytes_done, total_size))
print ' Done.'
raise URLError("only got %d of %d bytes" % (bytes_done, total_size))
print(' Done.')
return
except urllib2.URLError as e:
except URLError as e:
sys.stdout.write('\n')
print e
if num_retries == 0 or isinstance(e, urllib2.HTTPError) and e.code == 404:
print(e)
if num_retries == 0 or isinstance(e, HTTPError) and e.code == 404:
raise e
num_retries -= 1
print 'Retrying in %d s ...' % retry_wait_s
print('Retrying in %d s ...' % retry_wait_s)
time.sleep(retry_wait_s)
retry_wait_s *= 2
def EnsureDirExists(path):
if not os.path.exists(path):
print "Creating directory %s" % path
print("Creating directory %s" % path)
os.makedirs(path)
@ -120,7 +128,7 @@ def RmTree(dir):
def CopyFile(src, dst):
"""Copy a file from src to dst."""
print "Copying %s to %s" % (src, dst)
print("Copying %s to %s" % (src, dst))
shutil.copy(src, dst)
@ -133,32 +141,30 @@ def UpdateClang():
else:
return 0
print 'Updating Clang to %s...' % PACKAGE_VERSION
print('Updating Clang to %s...' % PACKAGE_VERSION)
if ReadStampFile() == PACKAGE_VERSION:
print 'Clang is already up to date.'
print('Clang is already up to date.')
return 0
# Reset the stamp file in case the build is unsuccessful.
WriteStampFile('')
print 'Downloading prebuilt clang'
print('Downloading prebuilt clang')
if os.path.exists(LLVM_BUILD_DIR):
RmTree(LLVM_BUILD_DIR)
try:
DownloadAndUnpack(cds_full_url, LLVM_BUILD_DIR)
print 'clang %s unpacked' % PACKAGE_VERSION
print('clang %s unpacked' % PACKAGE_VERSION)
WriteStampFile(PACKAGE_VERSION)
return 0
except urllib2.URLError:
print 'Failed to download prebuilt clang %s' % cds_file
print 'Exiting.'
except URLError:
print('Failed to download prebuilt clang %s' % cds_file)
print('Exiting.')
return 1
def main():
# Don't buffer stdout, so that print statements are immediately flushed.
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
return UpdateClang()

@ -12,13 +12,15 @@
# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
from __future__ import print_function
import subprocess
import sys
import vs_toolchain
if len(sys.argv) < 2:
print >>sys.stderr, "Usage: vs_env.py TARGET_ARCH CMD..."
print("Usage: vs_env.py TARGET_ARCH CMD...", file=sys.stderr)
sys.exit(1)
target_arch = sys.argv[1]

@ -2,6 +2,8 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from __future__ import print_function
import json
import os
import os.path
@ -96,7 +98,7 @@ def main():
'update': Update,
}
if len(sys.argv) < 2 or sys.argv[1] not in commands:
print >>sys.stderr, 'Expected one of: %s' % ', '.join(commands)
print('Expected one of: %s' % ', '.join(commands), file=sys.stderr)
return 1
return commands[sys.argv[1]](*sys.argv[2:])

Loading…
Cancel
Save