Python: Drop support for Python 3.6
Python 3.6 was EOL 2021-12-31. Newer versions of upstream libraries have begun dropping support for this version and it is becoming more cumbersome to support. Avocado-framework and qemu.qmp each have their own reasons for wanting to drop Python 3.6, but won't until QEMU does. Versions of Python available in our supported build platforms as of today, with optional versions available in parentheses: openSUSE Leap 15.4: 3.6.15 (3.9.10, 3.10.2) CentOS Stream 8: 3.6.8 (3.8.13, 3.9.16) CentOS Stream 9: 3.9.13 Fedora 36: 3.10 Fedora 37: 3.11 Debian 11: 3.9.2 Alpine 3.14, 3.15: 3.9.16 Alpine 3.16, 3.17: 3.10.10 Ubuntu 20.04 LTS: 3.8.10 Ubuntu 22.04 LTS: 3.10.4 NetBSD 9.3: 3.9.13* FreeBSD 12.4: 3.9.16 FreeBSD 13.1: 3.9.16 OpenBSD 7.2: 3.9.16 Note: Our VM tests install 3.9 explicitly for FreeBSD and 3.10 for NetBSD; the default for "python" or "python3" in FreeBSD is 3.9.16. NetBSD does not appear to have a default meta-package, but offers several options, the lowest of which is 3.7.15. "python39" appears to be a pre-requisite to one of the other packages we request in tests/vm/netbsd. pip, ensurepip and other Python essentials are currently only available for Python 3.10 for NetBSD. CentOS and OpenSUSE support parallel installation of multiple Python interpreters, and binaries in /usr/bin will always use Python 3.6. However, the newly introduced support for virtual environments ensures that all build steps that execute QEMU Python code use a single interpreter. Since it is safe to under our supported platform policy, bump our minimum supported version of Python to 3.7. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20230511035435.734312-24-jsnow@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
0c5f3dcbb2
commit
5591b74511
10
configure
vendored
10
configure
vendored
@ -617,9 +617,9 @@ esac
|
||||
|
||||
|
||||
check_py_version() {
|
||||
# We require python >= 3.6.
|
||||
# We require python >= 3.7.
|
||||
# NB: a True python conditional creates a non-zero return code (Failure)
|
||||
"$1" -c 'import sys; sys.exit(sys.version_info < (3,6))'
|
||||
"$1" -c 'import sys; sys.exit(sys.version_info < (3,7))'
|
||||
}
|
||||
|
||||
python=
|
||||
@ -628,7 +628,7 @@ first_python=
|
||||
if test -z "${PYTHON}"; then
|
||||
# A bare 'python' is traditionally python 2.x, but some distros
|
||||
# have it as python 3.x, so check in both places.
|
||||
for binary in python3 python python3.11 python3.10 python3.9 python3.8 python3.7 python3.6; do
|
||||
for binary in python3 python python3.11 python3.10 python3.9 python3.8 python3.7; do
|
||||
if has "$binary"; then
|
||||
python=$(command -v "$binary")
|
||||
if check_py_version "$python"; then
|
||||
@ -1077,7 +1077,7 @@ then
|
||||
# If first_python is set, there was a binary somewhere even though
|
||||
# it was not suitable. Use it for the error message.
|
||||
if test -n "$first_python"; then
|
||||
error_exit "Cannot use '$first_python', Python >= 3.6 is required." \
|
||||
error_exit "Cannot use '$first_python', Python >= 3.7 is required." \
|
||||
"Use --python=/path/to/python to specify a supported Python."
|
||||
else
|
||||
error_exit "Python not found. Use --python=/path/to/python"
|
||||
@ -1090,7 +1090,7 @@ then
|
||||
fi
|
||||
|
||||
if ! check_py_version "$python"; then
|
||||
error_exit "Cannot use '$python', Python >= 3.6 is required." \
|
||||
error_exit "Cannot use '$python', Python >= 3.7 is required." \
|
||||
"Use --python=/path/to/python to specify a supported Python."
|
||||
fi
|
||||
|
||||
|
@ -98,7 +98,7 @@ Python runtime
|
||||
option of the ``configure`` script to point QEMU to a supported
|
||||
version of the Python runtime.
|
||||
|
||||
As of QEMU |version|, the minimum supported version of Python is 3.6.
|
||||
As of QEMU |version|, the minimum supported version of Python is 3.7.
|
||||
|
||||
Python build dependencies
|
||||
Some of QEMU's build dependencies are written in Python. Usually these
|
||||
|
@ -9,14 +9,14 @@ help:
|
||||
@echo "make check-minreqs:"
|
||||
@echo " Run tests in the minreqs virtual environment."
|
||||
@echo " These tests use the oldest dependencies."
|
||||
@echo " Requires: Python 3.6"
|
||||
@echo " Hint (Fedora): 'sudo dnf install python3.6'"
|
||||
@echo " Requires: Python 3.7"
|
||||
@echo " Hint (Fedora): 'sudo dnf install python3.7'"
|
||||
@echo ""
|
||||
@echo "make check-tox:"
|
||||
@echo " Run tests against multiple python versions."
|
||||
@echo " These tests use the newest dependencies."
|
||||
@echo " Requires: Python 3.6 - 3.10, and tox."
|
||||
@echo " Hint (Fedora): 'sudo dnf install python3-tox python3.10'"
|
||||
@echo " Requires: Python 3.7 - 3.11, and tox."
|
||||
@echo " Hint (Fedora): 'sudo dnf install python3-tox python3.11'"
|
||||
@echo " The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra"
|
||||
@echo " arguments to tox".
|
||||
@echo ""
|
||||
@ -59,7 +59,7 @@ PIP_INSTALL = pip install --disable-pip-version-check
|
||||
min-venv: $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate
|
||||
$(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: setup.cfg tests/minreqs.txt
|
||||
@echo "VENV $(QEMU_MINVENV_DIR)"
|
||||
@python3.6 -m venv $(QEMU_MINVENV_DIR)
|
||||
@python3.7 -m venv $(QEMU_MINVENV_DIR)
|
||||
@( \
|
||||
echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \
|
||||
. $(QEMU_MINVENV_DIR)/bin/activate; \
|
||||
|
@ -14,7 +14,6 @@ classifiers =
|
||||
Natural Language :: English
|
||||
Operating System :: OS Independent
|
||||
Programming Language :: Python :: 3 :: Only
|
||||
Programming Language :: Python :: 3.6
|
||||
Programming Language :: Python :: 3.7
|
||||
Programming Language :: Python :: 3.8
|
||||
Programming Language :: Python :: 3.9
|
||||
@ -23,7 +22,7 @@ classifiers =
|
||||
Typing :: Typed
|
||||
|
||||
[options]
|
||||
python_requires = >= 3.6
|
||||
python_requires = >= 3.7
|
||||
packages =
|
||||
qemu.qmp
|
||||
qemu.machine
|
||||
@ -77,7 +76,7 @@ exclude = __pycache__,
|
||||
|
||||
[mypy]
|
||||
strict = True
|
||||
python_version = 3.6
|
||||
python_version = 3.7
|
||||
warn_unused_configs = True
|
||||
namespace_packages = True
|
||||
warn_unused_ignores = False
|
||||
@ -199,7 +198,7 @@ multi_line_output=3
|
||||
# of python available on your system to run this test.
|
||||
|
||||
[tox:tox]
|
||||
envlist = py36, py37, py38, py39, py310, py311
|
||||
envlist = py37, py38, py39, py310, py311
|
||||
skip_missing_interpreters = true
|
||||
|
||||
[testenv]
|
||||
|
@ -1,5 +1,5 @@
|
||||
# This file lists the ***oldest possible dependencies*** needed to run
|
||||
# "make check" successfully under ***Python 3.6***. It is used primarily
|
||||
# "make check" successfully under ***Python 3.7***. It is used primarily
|
||||
# by GitLab CI to ensure that our stated minimum versions in setup.cfg
|
||||
# are truthful and regularly validated.
|
||||
#
|
||||
|
@ -1,7 +1,7 @@
|
||||
[mypy]
|
||||
strict = True
|
||||
disallow_untyped_calls = False
|
||||
python_version = 3.6
|
||||
python_version = 3.7
|
||||
|
||||
[mypy-qapi.schema]
|
||||
disallow_untyped_defs = False
|
||||
|
Loading…
Reference in New Issue
Block a user