소스 검색

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>
(cherry picked from commit d64db833d6e3cbe9ea5f36342480f920f3675cea)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Thomas Huth 3 달 전
부모
커밋
3d5b2f81fb
7개의 변경된 파일17개의 추가작업 그리고 19개의 파일을 삭제
  1. 7 7
      configure
  2. 1 1
      docs/about/build-platforms.rst
  3. 4 4
      python/Makefile
  4. 3 4
      python/setup.cfg
  5. 1 1
      python/tests/minreqs.txt
  6. 1 1
      scripts/qapi/mypy.ini
  7. 0 1
      tests/docker/dockerfiles/python.docker

+ 7 - 7
configure

@@ -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 \
-                          python3.10 python3.9 python3.8; do
+    for binary in python3 python python3.13 python3.12 python3.11 \
+                          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

+ 1 - 1
docs/about/build-platforms.rst

@@ -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

+ 4 - 4
python/Makefile

@@ -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 "    Hint (Fedora): 'sudo dnf install python3.8'"
+	@echo "    Requires: Python 3.9"
+	@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;			\

+ 3 - 4
python/setup.cfg

@@ -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]

+ 1 - 1
python/tests/minreqs.txt

@@ -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.
 #
 #

+ 1 - 1
scripts/qapi/mypy.ini

@@ -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

+ 0 - 1
tests/docker/dockerfiles/python.docker

@@ -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