Python version requirement

I just pushed a patch that uses CMake to actually enforce the minimum version of Python 3.6. (https://reviews.llvm.org/D95635) On https://llvm.org/docs/GettingStarted.html#software, we document that Python 3.6 is the minimum version of python that is required for LLVM, and some patches have gone in to use Python 3.6 features. As of a few days ago, if you try to run the test suite without python 3.6 or greater, you will get a syntax error in the test suite python code. However, I had to revert my patch because some of the build bots don’t actually have Python 3.6. Specifically, I got a failure in the fuchsia-x86_64-linux bot that has Python 3.5.3. I have no way of knowing if any other infrastructure has this issue. (unless they email me to complain)

I think that Ideally we want CMake to enforce the version minimum, but we can’t do that until the build bots are all updated. I wanted to raise awareness of this issue so that hopefully we can get this sorted out soon.

Thanks,

Christopher Tetreault

It was actually pointed out to me that the linked page just says “known to work”, not “minimum required”, so now I’m very confused as to what to do. I think two reasonable ways ahead are to just roll with it and require 3.6, or to revert the recent patches that require it and to find the lowest version that works with the resulting code. Thoughts?

I think we should enforce a minimum version and that should not be less than 3.6. <3.6 is eol, and bug fixes for 3.6 will continue through 2021. Obviously, we should make sure that bots are upgraded of course, I would think…

I think we should enforce a minimum version and that should not be less than 3.6. <3.6 is eol, and bug fixes for 3.6 will continue through 2021. Obviously, we should make sure that bots are upgraded of course, I would think…

This makes sense to me.

It was actually pointed out to me that the linked page just says “known to work”, not “minimum required”, so now I’m very confused as to what to do. I think two reasonable ways ahead are to just roll with it and require 3.6, or to revert the recent patches that require it and to find the lowest version that works with the resulting code. Thoughts?

Pasting the used language in the docs to aid the discussion.

Getting Started with the LLVM System —> Requirements —> Software
https://llvm.org/docs/GettingStarted.html#software

Compiling LLVM requires that you have several software packages installed. The

table below lists those required packages. The Package column is the usual name

for the software package that LLVM depends on. The Version column provides

“known to work” versions of the package. The Notes column describes how LLVM

uses the package and provides other details.

So the packages themselves are required, but the exact versions are “known to work”. Previously, I didn’t read the text carefully enough and misrepresented its meaning (causing the trouble that triggered this thread). I am voting for removing the “known to work” phrase from the docs since I don’t think the distinction between package and versioned-package is useful.

Note that we already have a precedent for requiring the stated version with CMake. Most CMakeLists.txt start with cmake_minimum_required(VERSION 3.13.4).

As for the exact version (3.5 or 3.6) I have no strong preference, so I would follow Stella’s recommendation.