[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 41/68] Python: Drop support for Python 3.6
From: |
Paolo Bonzini |
Subject: |
[PULL 41/68] Python: Drop support for Python 3.6 |
Date: |
Wed, 17 May 2023 19:44:53 +0200 |
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>
---
configure | 10 +++++-----
docs/about/build-platforms.rst | 2 +-
python/Makefile | 10 +++++-----
python/setup.cfg | 7 +++----
python/tests/minreqs.txt | 2 +-
scripts/qapi/mypy.ini | 2 +-
6 files changed, 16 insertions(+), 17 deletions(-)
diff --git a/configure b/configure
index b92da9e6605b..22e31a46d115 100755
--- a/configure
+++ b/configure
@@ -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
diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst
index 89cae5a6bb98..0e2cb9e770d5 100644
--- a/docs/about/build-platforms.rst
+++ b/docs/about/build-platforms.rst
@@ -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
diff --git a/python/Makefile b/python/Makefile
index 47560657d27e..7c70dcc8d144 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -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; \
diff --git a/python/setup.cfg b/python/setup.cfg
index fc3fae5b1076..55c0993e70b3 100644
--- a/python/setup.cfg
+++ b/python/setup.cfg
@@ -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]
diff --git a/python/tests/minreqs.txt b/python/tests/minreqs.txt
index 7ecf5e7fe483..10b181d43a6b 100644
--- a/python/tests/minreqs.txt
+++ b/python/tests/minreqs.txt
@@ -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.
#
diff --git a/scripts/qapi/mypy.ini b/scripts/qapi/mypy.ini
index 662535642974..3463307ddc72 100644
--- a/scripts/qapi/mypy.ini
+++ b/scripts/qapi/mypy.ini
@@ -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
--
2.40.1
- [PULL 20/68] python: add mkvenv.py, (continued)
- [PULL 20/68] python: add mkvenv.py, Paolo Bonzini, 2023/05/17
- [PULL 28/68] mkvenv: work around broken pip installations on Debian 10, Paolo Bonzini, 2023/05/17
- [PULL 19/68] python: update pylint configuration, Paolo Bonzini, 2023/05/17
- [PULL 23/68] mkvenv: add ensure subcommand, Paolo Bonzini, 2023/05/17
- [PULL 21/68] mkvenv: add better error message for broken or missing ensurepip, Paolo Bonzini, 2023/05/17
- [PULL 24/68] mkvenv: add --diagnose option to explain "ensure" failures, Paolo Bonzini, 2023/05/17
- [PULL 22/68] mkvenv: add nested venv workaround, Paolo Bonzini, 2023/05/17
- [PULL 29/68] tests/docker: add python3-venv dependency, Paolo Bonzini, 2023/05/17
- [PULL 34/68] python/wheels: add vendored meson package, Paolo Bonzini, 2023/05/17
- [PULL 37/68] tests: Use configure-provided pyvenv for tests, Paolo Bonzini, 2023/05/17
- [PULL 41/68] Python: Drop support for Python 3.6,
Paolo Bonzini <=
- [PULL 45/68] meson: regenerate meson-buildoptions.sh, Paolo Bonzini, 2023/05/17
- [PULL 26/68] mkvenv: use pip's vendored distlib as a fallback, Paolo Bonzini, 2023/05/17
- [PULL 30/68] tests/vm: Configure netbsd to use Python 3.10, Paolo Bonzini, 2023/05/17
- [PULL 32/68] python: add vendor.py utility, Paolo Bonzini, 2023/05/17
- [PULL 33/68] configure: create a python venv unconditionally, Paolo Bonzini, 2023/05/17
- [PULL 38/68] configure: move --enable-docs and --disable-docs back to configure, Paolo Bonzini, 2023/05/17
- [PULL 36/68] qemu.git: drop meson git submodule, Paolo Bonzini, 2023/05/17
- [PULL 40/68] configure: add --enable-pypi and --disable-pypi, Paolo Bonzini, 2023/05/17
- [PULL 42/68] configure: Add courtesy hint to Python version failure message, Paolo Bonzini, 2023/05/17
- [PULL 43/68] mkvenv: mark command as required, Paolo Bonzini, 2023/05/17