aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-12-19 13:32:24 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-19 13:34:27 -0800
commit09894d1001aa2e0140beb21cd36615895e204e73 (patch)
tree53e1f9683f127b6318a37bcd1c8682e68c0a4e24
parent43f45b58acf10beadbb1221b71dfa06fa1341510 (diff)
Python 3 fixes for tools/build_defs, jdk, objc
RELNOTES: None PiperOrigin-RevId: 179596587
-rw-r--r--tools/build_defs/docker/create_image_config.py8
-rw-r--r--tools/build_defs/docker/join_layers.py4
-rw-r--r--tools/build_defs/docker/rewrite_json.py8
-rw-r--r--tools/build_defs/pkg/archive.py18
-rw-r--r--tools/build_defs/pkg/archive_test.py27
-rw-r--r--tools/build_defs/pkg/make_deb.py2
-rw-r--r--tools/build_defs/pkg/make_rpm.py4
-rw-r--r--tools/build_defs/pkg/make_rpm_test.py18
-rw-r--r--tools/jdk/proguard_whitelister_test.py2
-rwxr-xr-xtools/objc/j2objc_dead_code_pruner.py2
10 files changed, 51 insertions, 42 deletions
diff --git a/tools/build_defs/docker/create_image_config.py b/tools/build_defs/docker/create_image_config.py
index 05ce4a684b..30eef39c4a 100644
--- a/tools/build_defs/docker/create_image_config.py
+++ b/tools/build_defs/docker/create_image_config.py
@@ -100,7 +100,7 @@ def DeepCopySkipNull(data):
"""Do a deep copy, skipping null entry."""
if isinstance(data, dict):
return dict((DeepCopySkipNull(k), DeepCopySkipNull(v))
- for k, v in data.iteritems() if v is not None)
+ for k, v in data.items() if v is not None)
return copy.deepcopy(data)
@@ -149,7 +149,7 @@ def CreateImageConfig(data, options):
# Build a dictionary of existing environment variables (used by Resolve).
environ_dict = KeyValueToDict(output['config'].get('Env', []))
# Merge in new environment variables, resolving references.
- for k, v in options.env.iteritems():
+ for k, v in options.env.items():
# Resolve handles scenarios like "PATH=$PATH:...".
environ_dict[k] = Resolve(v, environ_dict)
output['config']['Env'] = Dict2ConfigValue(environ_dict)
@@ -157,7 +157,7 @@ def CreateImageConfig(data, options):
# TODO(babel-team) Label is currently docker specific
if options.labels:
label_dict = KeyValueToDict(output['config'].get('Label', []))
- for k, v in options.labels.iteritems():
+ for k, v in options.labels.items():
label_dict[k] = v
output['config']['Label'] = Dict2ConfigValue(label_dict)
@@ -216,7 +216,7 @@ def main(unused_argv):
layers.append(utils.ExtractValue(layer))
labels = KeyValueToDict(FLAGS.labels)
- for label, value in labels.iteritems():
+ for label, value in labels.items():
if value.startswith('@'):
with open(value[1:], 'r') as f:
labels[label] = f.read()
diff --git a/tools/build_defs/docker/join_layers.py b/tools/build_defs/docker/join_layers.py
index 97e47931ab..0928aef70d 100644
--- a/tools/build_defs/docker/join_layers.py
+++ b/tools/build_defs/docker/join_layers.py
@@ -53,10 +53,10 @@ def _add_top(tar, repositories):
# Walk the single-item dictionary, and if there is a single tag
# for the single repository, then emit a 'top' file pointing to
# the single image in this bundle.
- for (unused_x, tags) in repositories.iteritems():
+ for (unused_x, tags) in repositories.items():
if len(tags) != 1:
continue
- for (unused_y, layer_id) in tags.iteritems():
+ for (unused_y, layer_id) in tags.items():
tar.add_file('top', content=layer_id)
diff --git a/tools/build_defs/docker/rewrite_json.py b/tools/build_defs/docker/rewrite_json.py
index 38fd01def0..c06bf459b7 100644
--- a/tools/build_defs/docker/rewrite_json.py
+++ b/tools/build_defs/docker/rewrite_json.py
@@ -122,7 +122,7 @@ def DeepCopySkipNull(data):
"""Do a deep copy, skipping null entry."""
if type(data) == type(dict()):
return dict((DeepCopySkipNull(k), DeepCopySkipNull(v))
- for k, v in data.iteritems() if v is not None)
+ for k, v in data.items() if v is not None)
return copy.deepcopy(data)
@@ -187,14 +187,14 @@ def RewriteMetadata(data, options):
# Build a dictionary of existing environment variables (used by Resolve).
environ_dict = KeyValueToDict(output['config'].get('Env', []))
# Merge in new environment variables, resolving references.
- for k, v in options.env.iteritems():
+ for k, v in options.env.items():
# Resolve handles scenarios like "PATH=$PATH:...".
environ_dict[k] = Resolve(v, environ_dict)
output['config']['Env'] = Dict2ConfigValue(environ_dict)
if options.labels:
label_dict = KeyValueToDict(output['config'].get('Label', []))
- for k, v in options.labels.iteritems():
+ for k, v in options.labels.items():
label_dict[k] = v
output['config']['Label'] = Dict2ConfigValue(label_dict)
@@ -279,7 +279,7 @@ def main(unused_argv):
name = f.read()
labels = KeyValueToDict(FLAGS.labels)
- for label, value in labels.iteritems():
+ for label, value in labels.items():
if value.startswith('@'):
with open(value[1:], 'r') as f:
labels[label] = f.read()
diff --git a/tools/build_defs/pkg/archive.py b/tools/build_defs/pkg/archive.py
index 59728e0655..16695232a4 100644
--- a/tools/build_defs/pkg/archive.py
+++ b/tools/build_defs/pkg/archive.py
@@ -15,11 +15,8 @@
# pylint: disable=g-import-not-at-top
import gzip
+import io
import os
-try:
- from StringIO import StringIO
-except ImportError:
- from io import StringIO
import subprocess
import tarfile
@@ -60,7 +57,7 @@ class SimpleArFile(object):
"""
def __init__(self, f):
- self.filename = f.read(16).strip()
+ self.filename = f.read(16).decode('utf-8').strip()
if self.filename.endswith('/'): # SysV variant
self.filename = self.filename[:-1]
self.timestamp = int(f.read(12).strip())
@@ -69,11 +66,11 @@ class SimpleArFile(object):
self.mode = int(f.read(8).strip(), 8)
self.size = int(f.read(10).strip())
pad = f.read(2)
- if pad != '\x60\x0a':
+ if pad != b'\x60\x0a':
raise SimpleArFile.ArError('Invalid AR file header')
self.data = f.read(self.size)
- MAGIC_STRING = '!<arch>\n'
+ MAGIC_STRING = b'!<arch>\n'
def __init__(self, filename):
self.filename = filename
@@ -273,8 +270,9 @@ class TarFileWriter(object):
if link:
tarinfo.linkname = link
if content:
- tarinfo.size = len(content)
- self._addfile(tarinfo, StringIO(content))
+ content_bytes = content.encode('utf-8')
+ tarinfo.size = len(content_bytes)
+ self._addfile(tarinfo, io.BytesIO(content_bytes))
elif file_content:
with open(file_content, 'rb') as f:
tarinfo.size = os.fstat(f.fileno()).st_size
@@ -334,7 +332,7 @@ class TarFileWriter(object):
p = subprocess.Popen('cat %s | xzcat' % tar,
shell=True,
stdout=subprocess.PIPE)
- f = StringIO(p.stdout.read())
+ f = io.BytesIO(p.stdout.read())
p.wait()
intar = tarfile.open(fileobj=f, mode='r:')
else:
diff --git a/tools/build_defs/pkg/archive_test.py b/tools/build_defs/pkg/archive_test.py
index 729e533a2c..5aa64079c3 100644
--- a/tools/build_defs/pkg/archive_test.py
+++ b/tools/build_defs/pkg/archive_test.py
@@ -64,7 +64,10 @@ class SimpleArFileTest(unittest.TestCase):
def assertSimpleFileContent(self, names):
datafile = os.path.join(testenv.TESTDATA_PATH, "_".join(names) + ".ar")
- content = [{"filename": n, "size": len(n), "data": n} for n in names]
+ content = [{"filename": n,
+ "size": len(n.encode("utf-8")),
+ "data": n.encode("utf-8")}
+ for n in names]
self.assertArFileContent(datafile, content)
def testAFile(self):
@@ -140,9 +143,11 @@ class TarFileWriterTest(unittest.TestCase):
with archive.TarFileWriter(self.tempfile) as f:
for n in names:
f.add_file(n, content=n)
- content = ([{"name": "."}] + [{"name": n,
- "size": len(n),
- "data": n} for n in names])
+ content = ([{"name": "."}] +
+ [{"name": n,
+ "size": len(n.encode("utf-8")),
+ "data": n.encode("utf-8")}
+ for n in names])
self.assertTarFileContent(self.tempfile, content)
def testAddFile(self):
@@ -172,9 +177,9 @@ class TarFileWriterTest(unittest.TestCase):
content = [
{"name": ".", "mode": 0o755},
{"name": "./a", "mode": 0o755},
- {"name": "./a/b", "data": "ab", "mode": 0o644},
+ {"name": "./a/b", "data": b"ab", "mode": 0o644},
{"name": "./a/c", "mode": 0o755},
- {"name": "./a/c/d", "data": "acd", "mode": 0o644},
+ {"name": "./a/c/d", "data": b"acd", "mode": 0o644},
]
tempdir = os.path.join(os.environ["TEST_TMPDIR"], "test_dir")
# Iterate over the `content` array to create the directory
@@ -183,7 +188,7 @@ class TarFileWriterTest(unittest.TestCase):
if "data" in c:
p = os.path.join(tempdir, c["name"][2:])
os.makedirs(os.path.dirname(p))
- with open(p, "w") as f:
+ with open(p, "wb") as f:
f.write(c["data"])
with archive.TarFileWriter(self.tempfile) as f:
f.add_dir("./", tempdir, mode=0o644)
@@ -191,8 +196,8 @@ class TarFileWriterTest(unittest.TestCase):
def testMergeTar(self):
content = [
- {"name": "./a", "data": "a"},
- {"name": "./ab", "data": "ab"},
+ {"name": "./a", "data": b"a"},
+ {"name": "./ab", "data": b"ab"},
]
for ext in ["", ".gz", ".bz2", ".xz"]:
with archive.TarFileWriter(self.tempfile) as f:
@@ -204,8 +209,8 @@ class TarFileWriterTest(unittest.TestCase):
content = [
{"name": ".", "mode": 0o755},
{"name": "./foo", "mode": 0o755},
- {"name": "./foo/a", "data": "a"},
- {"name": "./foo/ab", "data": "ab"},
+ {"name": "./foo/a", "data": b"a"},
+ {"name": "./foo/ab", "data": b"ab"},
]
with archive.TarFileWriter(self.tempfile) as f:
f.add_tar(os.path.join(testenv.TESTDATA_PATH, "tar_test.tar"),
diff --git a/tools/build_defs/pkg/make_deb.py b/tools/build_defs/pkg/make_deb.py
index 8e81a6f9d1..c734536a3c 100644
--- a/tools/build_defs/pkg/make_deb.py
+++ b/tools/build_defs/pkg/make_deb.py
@@ -137,7 +137,7 @@ def CreateDebControl(extrafiles=None, **kwargs):
tarinfo.size = len(controlfile)
f.addfile(tarinfo, fileobj=StringIO(controlfile))
if extrafiles:
- for name, (data, mode) in extrafiles.iteritems():
+ for name, (data, mode) in extrafiles.items():
tarinfo = tarfile.TarInfo(name)
tarinfo.size = len(data)
tarinfo.mode = mode
diff --git a/tools/build_defs/pkg/make_rpm.py b/tools/build_defs/pkg/make_rpm.py
index 9f0f40a23b..108bd9d972 100644
--- a/tools/build_defs/pkg/make_rpm.py
+++ b/tools/build_defs/pkg/make_rpm.py
@@ -119,7 +119,7 @@ def CopyAndRewrite(input_file, output_file, replacements=None):
with open(output_file, 'w') as output:
for line in fileinput.input(input_file):
if replacements:
- for prefix, text in replacements.iteritems():
+ for prefix, text in replacements.items():
if line.startswith(prefix):
line = prefix + ' ' + text + '\n'
break
@@ -151,7 +151,7 @@ class RpmBuilder(object):
# Create directory structure.
for name in RpmBuilder.DIRS:
if not os.path.exists(name):
- os.makedirs(name, 0777)
+ os.makedirs(name, 0o777)
shutil.copy(os.path.join(original_dir, spec_file), os.getcwd())
diff --git a/tools/build_defs/pkg/make_rpm_test.py b/tools/build_defs/pkg/make_rpm_test.py
index f8f771038a..8c871725c0 100644
--- a/tools/build_defs/pkg/make_rpm_test.py
+++ b/tools/build_defs/pkg/make_rpm_test.py
@@ -43,6 +43,12 @@ def FileContents(filename):
class MakeRpmTest(unittest.TestCase):
+ # Python 2 alias
+ if not hasattr(unittest.TestCase, 'assertCountEqual'):
+
+ def assertCountEqual(self, *args):
+ return self.assertItemsEqual(*args)
+
def testFindOutputFile(self):
log = """
Lots of data.
@@ -51,7 +57,7 @@ class MakeRpmTest(unittest.TestCase):
"""
result = make_rpm.FindOutputFile(log)
- self.assertEquals('/path/to/file/here.rpm', result)
+ self.assertEqual('/path/to/file/here.rpm', result)
def testFindOutputFile_missing(self):
log = """
@@ -60,7 +66,7 @@ class MakeRpmTest(unittest.TestCase):
"""
result = make_rpm.FindOutputFile(log)
- self.assertEquals(None, result)
+ self.assertEqual(None, result)
def testCopyAndRewrite(self):
with make_rpm.Tempdir():
@@ -71,7 +77,7 @@ class MakeRpmTest(unittest.TestCase):
})
self.assertTrue(FileExists('out.txt'))
- self.assertItemsEqual(['Some: data1a', 'Other: data2', 'More: data3a'],
+ self.assertCountEqual(['Some: data1a', 'Other: data2', 'More: data3a'],
FileContents('out.txt'))
def testSetupWorkdir(self):
@@ -92,13 +98,13 @@ class MakeRpmTest(unittest.TestCase):
self.assertTrue(DirExists('BUILD'))
self.assertTrue(DirExists('TMP'))
self.assertTrue(FileExists('test.spec'))
- self.assertItemsEqual(
+ self.assertCountEqual(
['Name: test', 'Version: 1.0', 'Summary: test data'],
FileContents('test.spec'))
self.assertTrue(FileExists('BUILD/file1.txt'))
- self.assertItemsEqual(['Hello'], FileContents('BUILD/file1.txt'))
+ self.assertCountEqual(['Hello'], FileContents('BUILD/file1.txt'))
self.assertTrue(FileExists('BUILD/file2.txt'))
- self.assertItemsEqual(['Goodbye'], FileContents('BUILD/file2.txt'))
+ self.assertCountEqual(['Goodbye'], FileContents('BUILD/file2.txt'))
if __name__ == '__main__':
diff --git a/tools/jdk/proguard_whitelister_test.py b/tools/jdk/proguard_whitelister_test.py
index 6a24501fbe..a7754c70c0 100644
--- a/tools/jdk/proguard_whitelister_test.py
+++ b/tools/jdk/proguard_whitelister_test.py
@@ -30,7 +30,7 @@ class ProguardConfigValidatorTest(unittest.TestCase):
output_path = os.path.join(tmpdir, "proguard_whitelister_test_output.cfg")
# This will raise an exception if the config is invalid.
self._CreateValidator(input_path, output_path).ValidateAndWriteOutput()
- with file(output_path) as output:
+ with open(output_path) as output:
self.assertTrue(("# Merged from %s" % input_path) in output.read())
def _TestInvalidConfig(self, invalid_args, config):
diff --git a/tools/objc/j2objc_dead_code_pruner.py b/tools/objc/j2objc_dead_code_pruner.py
index 3377fc9553..218a8d4a94 100755
--- a/tools/objc/j2objc_dead_code_pruner.py
+++ b/tools/objc/j2objc_dead_code_pruner.py
@@ -219,7 +219,7 @@ def _DuplicatedFiles(archive_source_file_mapping):
duplicated_files = []
dict_with_duplicates = dict()
- for archive, source_files in archive_source_file_mapping.iteritems():
+ for source_files in archive_source_file_mapping.values():
for source_file in source_files:
file_basename = os.path.basename(source_file)
file_without_ext = os.path.splitext(source_file)[0]