33211b3fb4
Given that 3.6 is now several years old and the current and previous Ubuntu LTS ship with 3.8 or later, upgrade the minimum required Python version from 3.6 to 3.8. Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
48 lines
2.1 KiB
CMake
48 lines
2.1 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
include_guard(GLOBAL)
|
|
|
|
# On Windows, instruct Python to output UTF-8 even when not
|
|
# interacting with a terminal. This is required since Python scripts
|
|
# are invoked by CMake code and, on Windows, standard I/O encoding defaults
|
|
# to the current code page if not connected to a terminal, which is often
|
|
# not what we want.
|
|
if (WIN32)
|
|
set(ENV{PYTHONIOENCODING} "utf-8")
|
|
endif()
|
|
|
|
set(PYTHON_MINIMUM_REQUIRED 3.8)
|
|
|
|
# We are using foreach here, instead of find_program(PYTHON_EXECUTABLE_SYSTEM_DEFAULT "python" "python3")
|
|
# cause just using find_program directly could result in a python2.7 as python, and not finding a valid python3.
|
|
foreach(PYTHON_PREFER ${PYTHON_PREFER} ${WEST_PYTHON} "python" "python3")
|
|
find_program(PYTHON_PREFER_EXECUTABLE ${PYTHON_PREFER})
|
|
if(PYTHON_PREFER_EXECUTABLE)
|
|
execute_process (COMMAND "${PYTHON_PREFER_EXECUTABLE}" -c
|
|
"import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:2]]))"
|
|
RESULT_VARIABLE result
|
|
OUTPUT_VARIABLE version
|
|
ERROR_QUIET
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
if(version VERSION_LESS PYTHON_MINIMUM_REQUIRED)
|
|
set(PYTHON_PREFER_EXECUTABLE "PYTHON_PREFER_EXECUTABLE-NOTFOUND")
|
|
else()
|
|
set(PYTHON_MINIMUM_REQUIRED ${version})
|
|
set(PYTHON_EXACT EXACT)
|
|
# Python3_ROOT_DIR ensures that location will be preferred by FindPython3.
|
|
# On Linux, this has no impact as it will usually be /usr/bin
|
|
# but on Windows it solve issues when both 32 and 64 bit versions are
|
|
# installed, as version is not enough and FindPython3 might pick the
|
|
# version not on %PATH%. Setting Python3_ROOT_DIR ensures we are using
|
|
# the version we just tested.
|
|
get_filename_component(PYTHON_PATH ${PYTHON_PREFER_EXECUTABLE} DIRECTORY)
|
|
set(Python3_ROOT_DIR ${PYTHON_PATH})
|
|
break()
|
|
endif()
|
|
endif()
|
|
endforeach()
|
|
|
|
find_package(Python3 ${PYTHON_MINIMUM_REQUIRED} REQUIRED ${PYTHON_EXACT})
|
|
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
|