30
30
except ImportError :
31
31
from io import StringIO
32
32
import argparse
33
+ import codecs
33
34
import errno
34
35
import json
35
36
import os
@@ -184,13 +185,13 @@ class Target(object):
184
185
def parse_manifest ():
185
186
# we have a *very* strict format for our manifest to make parsing more robust
186
187
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 ()
188
189
189
190
def convert (match ):
190
191
name = match .group (1 )
191
192
deps = eval (match .group (2 ))
192
193
return Target (name , deps )
193
- targets = map (convert , pattern .finditer (manifest_data ))
194
+ targets = list ( map (convert , pattern .finditer (manifest_data ) ))
194
195
195
196
# substitute strings for Target objects
196
197
for target in targets :
@@ -202,7 +203,7 @@ def parse_manifest():
202
203
b = Target (targetName )
203
204
targets .append (b )
204
205
return b
205
- target .dependencies = map (convert , target .dependencies )
206
+ target .dependencies = list ( map (convert , target .dependencies ) )
206
207
207
208
# fill dependency graph and set dependencies back to strings
208
209
def convert (target ):
@@ -216,7 +217,7 @@ def parse_manifest():
216
217
return deps
217
218
# `reversed` because Linux link order must be reverse-topological
218
219
return Target (target .name , reversed (recurse (target )))
219
- return map (convert , targets )
220
+ return list ( map (convert , targets ) )
220
221
221
222
# Hard-coded target definition.
222
223
g_project_root = os .path .dirname (os .path .dirname (os .path .abspath (__file__ )))
0 commit comments