Drop support for Python 3.8

Python 3.8 went "end of life" in October 2024 and Fedora 42 dropped
this version already, so the "python" CI job is currently failing.
Thus it's time to drop support for this Python version in QEMU, too.

While we're at it, also look for "python3.13" in the configure script.

Message-ID: <20250425120710.879518-1-thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Thomas Huth 2025-04-25 14:07:10 +02:00
parent 6b1c744ec0
commit d64db833d6
7 changed files with 17 additions and 19 deletions

14
configure vendored
View file

@ -540,17 +540,17 @@ if test -n "$linux_arch" && ! test -d "$source_path/linux-headers/asm-$linux_arc
fi fi
check_py_version() { check_py_version() {
# We require python >= 3.8. # We require python >= 3.9.
# NB: a True python conditional creates a non-zero return code (Failure) # NB: a True python conditional creates a non-zero return code (Failure)
"$1" -c 'import sys; sys.exit(sys.version_info < (3,8))' "$1" -c 'import sys; sys.exit(sys.version_info < (3,9))'
} }
first_python= first_python=
if test -z "${PYTHON}"; then if test -z "${PYTHON}"; then
# A bare 'python' is traditionally python 2.x, but some distros # A bare 'python' is traditionally python 2.x, but some distros
# have it as python 3.x, so check in both places. # have it as python 3.x, so check in both places.
for binary in python3 python python3.12 python3.11 \ for binary in python3 python python3.13 python3.12 python3.11 \
python3.10 python3.9 python3.8; do python3.10 python3.9 ; do
if has "$binary"; then if has "$binary"; then
python=$(command -v "$binary") python=$(command -v "$binary")
if check_py_version "$python"; then if check_py_version "$python"; then
@ -933,7 +933,7 @@ then
# If first_python is set, there was a binary somewhere even though # If first_python is set, there was a binary somewhere even though
# it was not suitable. Use it for the error message. # it was not suitable. Use it for the error message.
if test -n "$first_python"; then if test -n "$first_python"; then
error_exit "Cannot use '$first_python', Python >= 3.8 is required." \ error_exit "Cannot use '$first_python', Python >= 3.9 is required." \
"Use --python=/path/to/python to specify a supported Python." "Use --python=/path/to/python to specify a supported Python."
else else
error_exit "Python not found. Use --python=/path/to/python" error_exit "Python not found. Use --python=/path/to/python"
@ -941,11 +941,11 @@ then
fi fi
if ! check_py_version "$python"; then if ! check_py_version "$python"; then
error_exit "Cannot use '$python', Python >= 3.8 is required." \ error_exit "Cannot use '$python', Python >= 3.9 is required." \
"Use --python=/path/to/python to specify a supported Python." \ "Use --python=/path/to/python to specify a supported Python." \
"Maybe try:" \ "Maybe try:" \
" openSUSE Leap 15.3+: zypper install python39" \ " openSUSE Leap 15.3+: zypper install python39" \
" CentOS 8: dnf install python38" " CentOS: dnf install python3.12"
fi fi
# Resolve PATH # Resolve PATH

View file

@ -101,7 +101,7 @@ Python runtime
option of the ``configure`` script to point QEMU to a supported option of the ``configure`` script to point QEMU to a supported
version of the Python runtime. version of the Python runtime.
As of QEMU |version|, the minimum supported version of Python is 3.8. As of QEMU |version|, the minimum supported version of Python is 3.9.
Python build dependencies Python build dependencies
Some of QEMU's build dependencies are written in Python. Usually these Some of QEMU's build dependencies are written in Python. Usually these

View file

@ -9,13 +9,13 @@ help:
@echo "make check-minreqs:" @echo "make check-minreqs:"
@echo " Run tests in the minreqs virtual environment." @echo " Run tests in the minreqs virtual environment."
@echo " These tests use the oldest dependencies." @echo " These tests use the oldest dependencies."
@echo " Requires: Python 3.8" @echo " Requires: Python 3.9"
@echo " Hint (Fedora): 'sudo dnf install python3.8'" @echo " Hint (Fedora): 'sudo dnf install python3.9'"
@echo "" @echo ""
@echo "make check-tox:" @echo "make check-tox:"
@echo " Run tests against multiple python versions." @echo " Run tests against multiple python versions."
@echo " These tests use the newest dependencies." @echo " These tests use the newest dependencies."
@echo " Requires: Python 3.8 - 3.11, and tox." @echo " Requires: Python 3.9 - 3.11, and tox."
@echo " Hint (Fedora): 'sudo dnf install python3-tox python3.11'" @echo " Hint (Fedora): 'sudo dnf install python3-tox python3.11'"
@echo " The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra" @echo " The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra"
@echo " arguments to tox". @echo " arguments to tox".
@ -59,7 +59,7 @@ PIP_INSTALL = pip install --disable-pip-version-check
min-venv: $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate min-venv: $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate
$(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: setup.cfg tests/minreqs.txt $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: setup.cfg tests/minreqs.txt
@echo "VENV $(QEMU_MINVENV_DIR)" @echo "VENV $(QEMU_MINVENV_DIR)"
@python3.8 -m venv $(QEMU_MINVENV_DIR) @python3.9 -m venv $(QEMU_MINVENV_DIR)
@( \ @( \
echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \ echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \
. $(QEMU_MINVENV_DIR)/bin/activate; \ . $(QEMU_MINVENV_DIR)/bin/activate; \

View file

@ -14,7 +14,6 @@ classifiers =
Natural Language :: English Natural Language :: English
Operating System :: OS Independent Operating System :: OS Independent
Programming Language :: Python :: 3 :: Only Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10 Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11 Programming Language :: Python :: 3.11
@ -23,7 +22,7 @@ classifiers =
Typing :: Typed Typing :: Typed
[options] [options]
python_requires = >= 3.8 python_requires = >= 3.9
packages = packages =
qemu.qmp qemu.qmp
qemu.machine qemu.machine
@ -78,7 +77,7 @@ exclude = __pycache__,
[mypy] [mypy]
strict = True strict = True
python_version = 3.8 python_version = 3.9
warn_unused_configs = True warn_unused_configs = True
namespace_packages = True namespace_packages = True
warn_unused_ignores = False warn_unused_ignores = False
@ -186,7 +185,7 @@ multi_line_output=3
# of python available on your system to run this test. # of python available on your system to run this test.
[tox:tox] [tox:tox]
envlist = py38, py39, py310, py311, py312, py313 envlist = py39, py310, py311, py312, py313
skip_missing_interpreters = true skip_missing_interpreters = true
[testenv] [testenv]

View file

@ -1,5 +1,5 @@
# This file lists the ***oldest possible dependencies*** needed to run # This file lists the ***oldest possible dependencies*** needed to run
# "make check" successfully under ***Python 3.8***. It is used primarily # "make check" successfully under ***Python 3.9***. It is used primarily
# by GitLab CI to ensure that our stated minimum versions in setup.cfg # by GitLab CI to ensure that our stated minimum versions in setup.cfg
# are truthful and regularly validated. # are truthful and regularly validated.
# #

View file

@ -1,4 +1,4 @@
[mypy] [mypy]
strict = True strict = True
disallow_untyped_calls = False disallow_untyped_calls = False
python_version = 3.8 python_version = 3.9

View file

@ -15,7 +15,6 @@ ENV PACKAGES \
python3.11 \ python3.11 \
python3.12 \ python3.12 \
python3.13 \ python3.13 \
python3.8 \
python3.9 python3.9
RUN dnf install -y $PACKAGES RUN dnf install -y $PACKAGES