Skip to content

Commit

Permalink
Fix Py3 environment setting failures
Browse files Browse the repository at this point in the history
  • Loading branch information
saschanaz committed Jun 20, 2020
1 parent 0b61cfc commit a202a1d
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 6 deletions.
5 changes: 4 additions & 1 deletion python/servo/build_commands.py
Expand Up @@ -320,7 +320,10 @@ def build(self, release=False, dev=False, jobs=None, params=None, media_stack=No
exitcode = process.wait()
encoding = locale.getpreferredencoding() # See https://stackoverflow.com/a/9228117
if exitcode == 0:
os.environ.update(eval(stdout.decode(encoding)))
decoded = stdout.decode(encoding)
if decoded.startswith("environ("):
decoded = decoded.strip()[8:-1]
os.environ.update(eval(decoded))
else:
print("Failed to run vcvarsall. stderr:")
print(stderr.decode(encoding))
Expand Down
10 changes: 5 additions & 5 deletions python/servo/command_base.py
Expand Up @@ -131,17 +131,17 @@ def reset(tarinfo):


def normalize_env(env):
# There is a bug in subprocess where it doesn't like unicode types in
# There is a bug in Py2 subprocess where it doesn't like unicode types in
# environment variables. Here, ensure all unicode are converted to
# binary. utf-8 is our globally assumed default. If the caller doesn't
# want UTF-8, they shouldn't pass in a unicode instance.
# native string type. utf-8 is our globally assumed default. If the caller
# doesn't want UTF-8, they shouldn't pass in a unicode instance.
normalized_env = {}
for k, v in env.items():
if isinstance(k, six.text_type):
k = k.encode('utf-8', 'strict')
k = six.ensure_str(k, 'utf-8', 'strict')

if isinstance(v, six.text_type):
v = v.encode('utf-8', 'strict')
v = six.ensure_str(v, 'utf-8', 'strict')

normalized_env[k] = v

Expand Down

0 comments on commit a202a1d

Please sign in to comment.