Python 2 end-of-life and llvm

Hi,

Python 2.7 will become obsolete in January 2020 [1] with no further maintenance. LLVM still explicitly does not support Python 3 [2]. Is there a plan or a tracking bug for things that need to be done to support Python 3? The only thing I could find was this [3] from over three years ago.

Regards,
Z

  1. https://www.python.org/dev/peps/pep-0373/

  2. https://github.com/llvm/llvm-project/blob/master/llvm/CMakeLists.txt#L668-L682

  3. https://reviews.llvm.org/D20825

Hi,
This set of patches: https://reviews.llvm.org/search/query/TjeugLh2AQsV/#R) aimed at providing Python2/3 compatibility for Python scripts used in llvm, clang lld and lldb. And probably llvm-test too.
It was a first step in that direction, but as long as LLVM is used on targets that don’t ship Python3, it’s likely to be the status quo.

I’m not aware of any official announcement on that subject though.

I don’t think those comments are necessarily authoritative. LLDB on Windows basically requires Python 3, so I’ve been configuring my entire checkout with -DPYTHON_EXECUTABLE=C:/src/Python37/python.exe, and things work OK. However, I think that mainly controls how cmake invokes lit when you build check-llvm, so I wouldn’t be surprised if the longer tail of scripts is Python2 only.

So, I think in practice, for important scripts that run as part of build & test, we are Python 3 ready. For the long tail of things that developers run locally (git-llvm, update_llc_test_checks.py, etc), I imagine things are done on an ad hoc basis.

If someone wanted to do a lot of testing and try to make CMake prefer python 3 if both are available, I think that would be reasonable now that Python 2 is approaching EOL. On reflection, that was just a long, hopefully nicer, way of saying “patches welcome.” :slight_smile: