Skip to content

Commit fb2c985

Browse files
committed
Update bootstrap utility to be Python 3 compatible
* Enforce a UTF-8 encoded string when reading Package.swift * Convert `map` to `list` in Python 3
1 parent eb8c15c commit fb2c985

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

Utilities/bootstrap

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ try:
3030
except ImportError:
3131
from io import StringIO
3232
import argparse
33+
import codecs
3334
import errno
3435
import json
3536
import os
@@ -184,13 +185,13 @@ class Target(object):
184185
def parse_manifest():
185186
# we have a *very* strict format for our manifest to make parsing more robust
186187
pattern = re.compile(r'Target\(.*?name: "(.*?)",\n *dependencies: (\[.*?\])\)', re.DOTALL|re.MULTILINE)
187-
manifest_data = open(os.path.join(g_project_root, "Package.swift")).read()
188+
manifest_data = codecs.open(os.path.join(g_project_root, "Package.swift"), encoding='utf-8', errors='strict').read()
188189

189190
def convert(match):
190191
name = match.group(1)
191192
deps = eval(match.group(2))
192193
return Target(name, deps)
193-
targets = map(convert, pattern.finditer(manifest_data))
194+
targets = list(map(convert, pattern.finditer(manifest_data)))
194195

195196
# substitute strings for Target objects
196197
for target in targets:
@@ -202,7 +203,7 @@ def parse_manifest():
202203
b = Target(targetName)
203204
targets.append(b)
204205
return b
205-
target.dependencies = map(convert, target.dependencies)
206+
target.dependencies = list(map(convert, target.dependencies))
206207

207208
# fill dependency graph and set dependencies back to strings
208209
def convert(target):
@@ -216,7 +217,7 @@ def parse_manifest():
216217
return deps
217218
# `reversed` because Linux link order must be reverse-topological
218219
return Target(target.name, reversed(recurse(target)))
219-
return map(convert, targets)
220+
return list(map(convert, targets))
220221

221222
# Hard-coded target definition.
222223
g_project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

0 commit comments

Comments
 (0)