cros_setup_toolchains: fix encoding in a few places
Read data as bytes for hashlib hashing, and capture program output
as UTF-8 when we want to parse it.
BUG=chromium:997354
TEST=`./run_tests` passes
Change-Id: I0469e0351eee0bc5d806c7d90aa8c22e5c50f63a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1919668
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/scripts/cros_setup_toolchains.py b/scripts/cros_setup_toolchains.py
index 8b80373..1d1cc9e 100644
--- a/scripts/cros_setup_toolchains.py
+++ b/scripts/cros_setup_toolchains.py
@@ -155,7 +155,8 @@
script = os.path.abspath(__file__)
if script.endswith('.pyc'):
script = script[:-1]
- setup_toolchains_hash = hashlib.md5(osutils.ReadFile(script)).hexdigest()
+ setup_toolchains_hash = hashlib.md5(
+ osutils.ReadFile(script, mode='rb')).hexdigest()
cls._CACHE = {
'crossdev_version': crossdev_version,
@@ -227,7 +228,8 @@
cmd.extend(['-t', target])
# Catch output of crossdev.
out = cros_build_lib.run(
- cmd, print_cmd=False, redirect_stdout=True).output.splitlines()
+ cmd, print_cmd=False, redirect_stdout=True,
+ encoding='utf-8').stdout.splitlines()
# List of tuples split at the first '=', converted into dict.
conf = dict((k, cros_build_lib.ShellUnquote(v))
for k, v in (x.split('=', 1) for x in out))
@@ -641,7 +643,8 @@
extra_env['ROOT'] = root
cmd = ['%s-config' % package, '-c', target]
result = cros_build_lib.run(
- cmd, print_cmd=False, redirect_stdout=True, extra_env=extra_env)
+ cmd, print_cmd=False, redirect_stdout=True, encoding='utf-8',
+ extra_env=extra_env)
current = result.output.splitlines()[0]
# Do not reconfig when the current is live or nothing needs to be done.