common-mk: arg wrappers: fix bytes-vs-str handling with subprocess
The subprocess module returns bytes by default for stdout. Make sure
we get back UTF-8 strings so we can parse/output things correctly.
BUG=chromium:989152
TEST=building with python->python3 works
Change-Id: If5ebc532f322020d87e9ac67c4be6ebe87239913
Reviewed-on: https://chromium-review.googlesource.com/1760280
Tested-by: Mike Frysinger <vapier@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Keigo Oka <oka@chromium.org>
diff --git a/common-mk/arg_prefix_filter_wrapper.py b/common-mk/arg_prefix_filter_wrapper.py
index 1ab51d1..07d9c23 100755
--- a/common-mk/arg_prefix_filter_wrapper.py
+++ b/common-mk/arg_prefix_filter_wrapper.py
@@ -32,7 +32,9 @@
opts, cmd_list = parser.parse_known_args(argv)
prefix_len = len(opts.prefix)
- flags = shlex.split(subprocess.check_output(cmd_list))
+ # TODO(vapier): Move decode('utf-8') to encoding='utf-8' in check_output once
+ # .gn uses shebangs.
+ flags = shlex.split(subprocess.check_output(cmd_list).decode('utf-8'))
filtered = [x[prefix_len:] for x in flags if x.startswith(opts.prefix)]
print('\n'.join(filtered))
diff --git a/common-mk/args_generator_wrapper.py b/common-mk/args_generator_wrapper.py
index d265901..3239d54 100755
--- a/common-mk/args_generator_wrapper.py
+++ b/common-mk/args_generator_wrapper.py
@@ -24,7 +24,9 @@
import common_utils
-output = subprocess.check_output(sys.argv[1:]).strip()
+# TODO(vapier): Move decode('utf-8') to encoding='utf-8' in check_output once
+# .gn uses shebangs.
+output = subprocess.check_output(sys.argv[1:]).decode('utf-8').strip()
unescaped = common_utils.parse_shell_args(output)
print('\n'.join(unescaped))
diff --git a/common-mk/common_utils.py b/common-mk/common_utils.py
index 3d5e667..4c5f2f9 100644
--- a/common-mk/common_utils.py
+++ b/common-mk/common_utils.py
@@ -27,4 +27,6 @@
# for echo. IFS is set to separate $* with newlines.
output = subprocess.check_output(
['eval "set -- dummy $0"; IFS=$\'\\n\'; printf "%s" "$*"', s], shell=True)
- return output.splitlines()[1:]
+ # TODO(vapier): Move decode('utf-8') to encoding='utf-8' in check_output once
+ # platform2.py is converted to `python3`.
+ return output.decode('utf-8').splitlines()[1:]