catapult-project / catapult

Deprecated Catapult GitHub. Please instead use http://crbug.com "Speed>Benchmarks" component for bugs and https://chromium.googlesource.com/catapult for downloading and editing source code..
https://chromium.googlesource.com/catapult
BSD 3-Clause "New" or "Revised" License
1.91k stars 563 forks source link

Python 3 support #4599

Open oprypin opened 5 years ago

oprypin commented 5 years ago

Catapult relies on Python 2 but it's nearing end-of-life in the year 2020. This is a tracking bug for Python 3 compatibility fixes.

ITmaze commented 5 years ago

Using a python:latest container, which defaults to python3, the following test fails:

# catapult/tracing/bin/run_py_tests [50/139] trace_data.trace_data_unittest.TraceDataTest.testSerializeTraceback (most recent call last):
File "/tmp/catapult/tracing/tracing/trace_data/../../bin/trace2html", line 13, in from tracing_build import trace2html File "/tmp/catapult/tracing/tracing_build/trace2html.py", line 17, in from py_vulcanize import generate File "/tmp/catapult/common/py_vulcanize/py_vulcanize/init.py", line 11, in from py_vulcanize.project import Project File "/tmp/catapult/common/py_vulcanize/py_vulcanize/project.py", line 13, in from py_vulcanize import resource_loader File "/tmp/catapult/common/py_vulcanize/py_vulcanize/resource_loader.py", line 13, in from py_vulcanize import html_module File "/tmp/catapult/common/py_vulcanize/py_vulcanize/html_module.py", line 10, in from py_vulcanize import parse_html_deps File "/tmp/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py", line 34, in import bs4 File "/tmp/catapult/third_party/beautifulsoup4/bs4/init.py", line 175 except Exception, e: ^ SyntaxError: invalid syntax [51/139] trace_data.trace_data_unittest.TraceDataTest.testSerialize failed unexpectedly: Traceback (most recent call last): File "/tmp/catapult/tracing/tracing/trace_data/trace_data_unittest.py", line 21, in testSerialize ri.Serialize(trace_path) File "/tmp/catapult/tracing/tracing/trace_data/trace_data.py", line 198, in Serialize subprocess.check_output(cmd) File "/usr/local/lib/python3.7/subprocess.py", line 389, in check_output **kwargs).stdout File "/usr/local/lib/python3.7/subprocess.py", line 481, in run output=stdout, stderr=stderr) subprocess.CalledProcessError: Command '['python', '/tmp/catapult/tracing/tracing/trace_data/../../bin/trace2html', '/tmp/tmpnzrx83ru/tmp_s87kz_4', '--output', '/tmp/tmp7px4mrki/test_trace.json', '--title', '']' returned non-zero exit status 1. 138 tests passed, 0 skipped, 1 failure.

oprypin commented 5 years ago

It works by launching through python3 and only if python is 2.7.

ITmaze commented 5 years ago

# python3 --version Python 3.7.1

# python2 --version Python 2.7.13

One point is that the docker container has a symlink called python, that was linked to python3, which caused the failed test. Once I replaced it with a symlink to python2, all worked as expected.