build: ongoing list of actions for Python 3 compatibility
We have several threads in issues and pull requests related to Python 3 compatibility. We need a task list to keep in sync and to show our progress
-
test: Fix Python unittests in ./test and ./tools #30340 -
tools: pull xcode_emulation.py fixes from node-gyp #30272 -
deprecated python3 "imp" module used in tools/test.py #29418 Fixed in #30208 ? -
Build: No module named 'distutils.spawn' #30189 -
v8: load_objects_from_file() using utf-8 #30218 -
upstream to v8 https://chromium-review.googlesource.com/c/v8/v8/+/1895560
-
-
tools: check-imports using utf-8 #30220 -
gyp_round_trip I: Release nodejs/node-gyp@5.x --> npm-cli --> /deps/npm -
node-gyp: Decode stdout on Python 3 (nodejs/node-gyp#1890) -
node-gyp: release v5.0.4 so that npm can pick it up (nodejs/node-gyp#1893) -
npm/cli: node gyp 5.0.5 (npm/cli#260) -
re-vendor npm-cli back into nodejs/node /deps/npm #29885
-
-
pull non-travis code out of #29451 and PR it (https://github.com/nodejs/node/pull/29818) -
build: Switch Travis tests to use Python 3 explicitly for configure/build/test, existing CI will continue to use Python 2 (#29451 ) -
tap2junit update to support py3 -
tap2junit import into nodejs org, blocked on: https://github.com/nodejs/tap2junit/pull/18#issuecomment-545535626 (https://github.com/nodejs/tap2junit/pull/19) -
build: allow Python 3.8 #30194 -
node: find and use Python 3.x before Python 2.x: discussion landed on master -
node-gyp: release 6.x preferring Python 3: nodejs/node-gyp#1892 -
node: tools: fix Python 3 syntax error in mac_tool.py #30146
-
tools: py3 nodedownload.py #29104 -
v8: py3 gen-postmortem-metadata.py #29105 (landed upstream in v8) -
build: py3 configure.py #29106 -
pseudo-tty tests don't run with py 3 #29167 -
gyp: cherrypick python3 changes to input.py from node-gyp #29140 -
build: add Python 3 tests to Travis CI #29196 (or #29193) -
tools: fix Python 3 issues in gyp/generator/make.py #29214 -
tools: fix Python 3 issues in tools/icu/icutrim.py #29213 -
v8: fix mixup with bytes.decode() and str.encode() #29208 -
tools: fix Python 3 issues in inspector_protocol #29296 -
test: use print() function in both Python 2 and 3 #29298 -
Accept Python 3 on Windows #29236 -
build: test Python 3.6 and 3.7 on Travis CI #29291 -
tools: from io import StringIO in ninja.py #29371 -
tools: fix GYP ninja generator for Python 3 #29416 -
build,win: fix Python detection on localized OS #29423 -
build: add comment to .travis.yml on how to test Py3 #29473 -
tools/test.py is not yet Python 3 compatible #29246 (closed) -
build: find Python 3 or Python 2 in configure #25878 modifies ./configure to prefer py2 to py3 See: https://github.com/cclauss/node-configure -
'async' is a reserved word in Python >= 3.7 #29326 -
https://chromium-review.googlesource.com/c/deps/inspector_protocol/+/1781351 -
deps: need to cherrypick async fix into inspector code generator #29548 -
tools: python3 compat for inspector code generator #29340
-
-
tap2junit: Python 3 changes plus automated testing nodejs/tap2junit#5 -
tap2junit: v0.1.5 release (nodejs/tap2junit#12) to the Python Packaging Index PyPI -
node-gyp: Accept Python 3 by default (semver-major) nodejs/node-gyp#1844 -
node-gyp: doc: Declare that node-gyp is Python 3 compatible nodejs/node-gyp#1811
-
node-test-commit-v8-linux is perma red: https://github.com/nodejs/node/issues/30152 -
gyp_round_trip_II: Release nodejs/node-gyp@6.x (prefers py3 over py2) --> npm-cli --> /deps/npm -
node-gyp: Release proposal: node-gyp@6.0.1 nodejs/node-gyp#1935 -
node-gyp: npm-cli update and release npm/cli#276?? -
node-gyp: npm-cli revendor into deps/npm
-
-
node: backport https://github.com/nodejs/node/pull/30091 to 13.x -
node: backport https://github.com/nodejs/node/pull/30091 to 12.x? -
Watch our CI.... see QA -
Add Python 3.8 to Travis CI when Travis' pyenv is updated. -
https://github.com/nodejs/node/pull/31221
QA:: Our CI machines are mix of machines that have Python 2, have Python 3, have both, have a python
symlink, have it not, etc. By preferring Python 3 in configure/make/test some set of our current machines will start to test against Python 3, but many will continue to test against Python 2. The more modern machines will use 3, as will our users running more up-to-date operating systems in the next year.
Upstream V8 issues:
Neither Chromium or depot_tools are Python 3 compatible yet. This doesn't effect the main Node.js builds, but does affect our V8 integration builds, where v8 is built and tested.
- migration of Chromium to Python 3: https://bugs.chromium.org/p/chromium/issues/detail?id=942720
- specific one for depot_tools: https://bugs.chromium.org/p/chromium/issues/detail?id=984182
Miscellaneous non-blocking cleanups
-
Tests do not test ./configure --ninja #29415 reopened -
Travis CI does not test ./configure --ninja test #30033reverted -
configure.py: upgrade from optparse to argparse #29814 -
sort((MSVSFolder, MSVSProject)) https://github.com/nodejs/node-addon-api/issues/445#issuecomment-534941469 -
sort out the home for tap2junit: https://github.com/nodejs/admin/issues/413 -
investigate using nodejs/node-gyp:gyp/ as up-stream for nodejs/node:tools/gyp/, see https://github.com/nodejs/node-gyp/issues/1791 for more information and alternate proposals.