[PATCH] Drop support for Python 3.8

Thomas Huth posted 1 patch 6 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20250425120710.879518-1-thuth@redhat.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>, Thomas Huth <thuth@redhat.com>, John Snow <jsnow@redhat.com>, Cleber Rosa <crosa@redhat.com>, Markus Armbruster <armbru@redhat.com>, Michael Roth <michael.roth@amd.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>
docs/about/build-platforms.rst         |  2 +-
configure                              | 14 +++++++-------
python/Makefile                        |  8 ++++----
python/setup.cfg                       |  7 +++----
python/tests/minreqs.txt               |  2 +-
scripts/qapi/mypy.ini                  |  2 +-
tests/docker/dockerfiles/python.docker |  1 -
7 files changed, 17 insertions(+), 19 deletions(-)
[PATCH] Drop support for Python 3.8
Posted by Thomas Huth 6 months, 3 weeks ago
From: Thomas Huth <thuth@redhat.com>

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.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 This is an alternative suggestion to:
 https://lore.kernel.org/qemu-devel/20250422125626.72907-1-thuth@redhat.com/

 docs/about/build-platforms.rst         |  2 +-
 configure                              | 14 +++++++-------
 python/Makefile                        |  8 ++++----
 python/setup.cfg                       |  7 +++----
 python/tests/minreqs.txt               |  2 +-
 scripts/qapi/mypy.ini                  |  2 +-
 tests/docker/dockerfiles/python.docker |  1 -
 7 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst
index 52521552c8a..c3651871d20 100644
--- a/docs/about/build-platforms.rst
+++ b/docs/about/build-platforms.rst
@@ -101,7 +101,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.8.
+  As of QEMU |version|, the minimum supported version of Python is 3.9.
 
 Python build dependencies
   Some of QEMU's build dependencies are written in Python.  Usually these
diff --git a/configure b/configure
index 000309cf610..40705afdf57 100755
--- a/configure
+++ b/configure
@@ -540,17 +540,17 @@ if test -n "$linux_arch" && ! test -d "$source_path/linux-headers/asm-$linux_arc
 fi
 
 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)
-    "$1" -c 'import sys; sys.exit(sys.version_info < (3,8))'
+    "$1" -c 'import sys; sys.exit(sys.version_info < (3,9))'
 }
 
 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.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
             python=$(command -v "$binary")
             if check_py_version "$python"; then
@@ -933,7 +933,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.8 is required." \
+        error_exit "Cannot use '$first_python', Python >= 3.9 is required." \
             "Use --python=/path/to/python to specify a supported Python."
     else
         error_exit "Python not found. Use --python=/path/to/python"
@@ -941,11 +941,11 @@ then
 fi
 
 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." \
              "Maybe try:" \
              "  openSUSE Leap 15.3+: zypper install python39" \
-             "  CentOS 8: dnf install python38"
+             "  CentOS: dnf install python3.12"
 fi
 
 # Resolve PATH
diff --git a/python/Makefile b/python/Makefile
index 1fa4ba2498e..764b79ccb23 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -9,13 +9,13 @@ help:
 	@echo "make check-minreqs:"
 	@echo "    Run tests in the minreqs virtual environment."
 	@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 "make check-tox:"
 	@echo "    Run tests against multiple python versions."
 	@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 "    The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra"
 	@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
 $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: setup.cfg tests/minreqs.txt
 	@echo "VENV $(QEMU_MINVENV_DIR)"
-	@python3.8 -m venv $(QEMU_MINVENV_DIR)
+	@python3.9 -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 cf5af7e6641..c48dff280a3 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.8
     Programming Language :: Python :: 3.9
     Programming Language :: Python :: 3.10
     Programming Language :: Python :: 3.11
@@ -23,7 +22,7 @@ classifiers =
     Typing :: Typed
 
 [options]
-python_requires = >= 3.8
+python_requires = >= 3.9
 packages =
     qemu.qmp
     qemu.machine
@@ -78,7 +77,7 @@ exclude = __pycache__,
 
 [mypy]
 strict = True
-python_version = 3.8
+python_version = 3.9
 warn_unused_configs = True
 namespace_packages = True
 warn_unused_ignores = False
@@ -186,7 +185,7 @@ multi_line_output=3
 # of python available on your system to run this test.
 
 [tox:tox]
-envlist = py38, py39, py310, py311, py312, py313
+envlist = py39, py310, py311, py312, py313
 skip_missing_interpreters = true
 
 [testenv]
diff --git a/python/tests/minreqs.txt b/python/tests/minreqs.txt
index a3f423efd84..6445407ba87 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.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
 # are truthful and regularly validated.
 #
diff --git a/scripts/qapi/mypy.ini b/scripts/qapi/mypy.ini
index 8109470a031..c9dbcec2db0 100644
--- a/scripts/qapi/mypy.ini
+++ b/scripts/qapi/mypy.ini
@@ -1,4 +1,4 @@
 [mypy]
 strict = True
 disallow_untyped_calls = False
-python_version = 3.8
+python_version = 3.9
diff --git a/tests/docker/dockerfiles/python.docker b/tests/docker/dockerfiles/python.docker
index 8f0af9ef25f..59e70a02484 100644
--- a/tests/docker/dockerfiles/python.docker
+++ b/tests/docker/dockerfiles/python.docker
@@ -15,7 +15,6 @@ ENV PACKAGES \
     python3.11 \
     python3.12 \
     python3.13 \
-    python3.8 \
     python3.9
 
 RUN dnf install -y $PACKAGES
-- 
2.49.0
Re: [PATCH] Drop support for Python 3.8
Posted by Philippe Mathieu-Daudé 6 months, 3 weeks ago
Hi Thomas,

On 25/4/25 14:07, Thomas Huth wrote:
> From: Thomas Huth <thuth@redhat.com>
> 
> 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.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>   This is an alternative suggestion to:
>   https://lore.kernel.org/qemu-devel/20250422125626.72907-1-thuth@redhat.com/
> 
>   docs/about/build-platforms.rst         |  2 +-
>   configure                              | 14 +++++++-------
>   python/Makefile                        |  8 ++++----
>   python/setup.cfg                       |  7 +++----
>   python/tests/minreqs.txt               |  2 +-
>   scripts/qapi/mypy.ini                  |  2 +-
>   tests/docker/dockerfiles/python.docker |  1 -
>   7 files changed, 17 insertions(+), 19 deletions(-)


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

The 3.13 test was missing in commit 45b14be9b63 ("python: enable testing
for 3.13"). Preferably adding in a preliminary commit, otherwise mention
in this patch description:

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>


> +                          python3.10 python3.9 ; do
>           if has "$binary"; then
>               python=$(command -v "$binary")
>               if check_py_version "$python"; then

Re: [PATCH] Drop support for Python 3.8
Posted by Markus Armbruster 6 months, 3 weeks ago
Philippe Mathieu-Daudé <philmd@linaro.org> writes:

> Hi Thomas,
>
> On 25/4/25 14:07, Thomas Huth wrote:
>> From: Thomas Huth <thuth@redhat.com>
>> 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.
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>>   This is an alternative suggestion to:
>>   https://lore.kernel.org/qemu-devel/20250422125626.72907-1-thuth@redhat.com/
>>   docs/about/build-platforms.rst         |  2 +-
>>   configure                              | 14 +++++++-------
>>   python/Makefile                        |  8 ++++----
>>   python/setup.cfg                       |  7 +++----
>>   python/tests/minreqs.txt               |  2 +-
>>   scripts/qapi/mypy.ini                  |  2 +-
>>   tests/docker/dockerfiles/python.docker |  1 -
>>   7 files changed, 17 insertions(+), 19 deletions(-)
>
>
>>   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.12 python3.11 \
>> -                          python3.10 python3.9 python3.8; do
>> +    for binary in python3 python python3.13 python3.12 python3.11 \
>
> The 3.13 test was missing in commit 45b14be9b63 ("python: enable testing
> for 3.13"). Preferably adding in a preliminary commit, otherwise mention
> in this patch description:
>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

Yes.  The patch looks good to me otherwise.  But John knows a lot more
about this stuff than I do; would be good to get his blessing.

>> +                          python3.10 python3.9 ; do
>>           if has "$binary"; then
>>               python=$(command -v "$binary")
>>               if check_py_version "$python"; then
Re: [PATCH] Drop support for Python 3.8
Posted by Thomas Huth 6 months, 2 weeks ago
  Hi!

On 25/04/2025 17.13, Markus Armbruster wrote:
> Philippe Mathieu-Daudé <philmd@linaro.org> writes:
>> On 25/4/25 14:07, Thomas Huth wrote:
>>> From: Thomas Huth <thuth@redhat.com>
>>> 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.
...
>>>    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.12 python3.11 \
>>> -                          python3.10 python3.9 python3.8; do
>>> +    for binary in python3 python python3.13 python3.12 python3.11 \
>>
>> The 3.13 test was missing in commit 45b14be9b63 ("python: enable testing
>> for 3.13"). Preferably adding in a preliminary commit, otherwise mention
>> in this patch description

Yes, I'll add a sentence to the patch description!

>> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

Thanks!

> Yes.  The patch looks good to me otherwise.  But John knows a lot more
> about this stuff than I do; would be good to get his blessing.

Seems like John is currently away from keyboard / busy with other stuff? I 
think we should go ahead and include this patch to get the CI green again, 
so I'll add it to my next pull request. If there is still anything that 
needs to be done on top, it can be done in another patch later.

  Thomas


Re: [PATCH] Drop support for Python 3.8
Posted by Markus Armbruster 6 months, 2 weeks ago
Thomas Huth <thuth@redhat.com> writes:

>  Hi!
>
> On 25/04/2025 17.13, Markus Armbruster wrote:
>> Philippe Mathieu-Daudé <philmd@linaro.org> writes:
>>> On 25/4/25 14:07, Thomas Huth wrote:
>>>> From: Thomas Huth <thuth@redhat.com>
>>>> 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.
> ...
>>>>    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.12 python3.11 \
>>>> -                          python3.10 python3.9 python3.8; do
>>>> +    for binary in python3 python python3.13 python3.12 python3.11 \
>>>
>>> The 3.13 test was missing in commit 45b14be9b63 ("python: enable testing
>>> for 3.13"). Preferably adding in a preliminary commit, otherwise mention
>>> in this patch description
>
> Yes, I'll add a sentence to the patch description!
>
>>> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>
> Thanks!
>
>> Yes.  The patch looks good to me otherwise.  But John knows a lot more
>> about this stuff than I do; would be good to get his blessing.
>
> Seems like John is currently away from keyboard / busy with other stuff? I think we should go ahead and include this patch to get the CI green again, so I'll add it to my next pull request. If there is still anything that needs to be done on top, it can be done in another patch later.

Makes sense.  I assume you'll amend the commit message to address
Philippe's review.
Re: [PATCH] Drop support for Python 3.8
Posted by John Snow 6 months, 1 week ago
On Wed, Apr 30, 2025 at 6:45 AM Markus Armbruster <armbru@redhat.com> wrote:

> Thomas Huth <thuth@redhat.com> writes:
>
> >  Hi!
> >
> > On 25/04/2025 17.13, Markus Armbruster wrote:
> >> Philippe Mathieu-Daudé <philmd@linaro.org> writes:
> >>> On 25/4/25 14:07, Thomas Huth wrote:
> >>>> From: Thomas Huth <thuth@redhat.com>
> >>>> 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.
> > ...
> >>>>    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.12 python3.11 \
> >>>> -                          python3.10 python3.9 python3.8; do
> >>>> +    for binary in python3 python python3.13 python3.12 python3.11 \
> >>>
> >>> The 3.13 test was missing in commit 45b14be9b63 ("python: enable
> testing
> >>> for 3.13"). Preferably adding in a preliminary commit, otherwise
> mention
> >>> in this patch description
> >
> > Yes, I'll add a sentence to the patch description!
> >
> >>> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> >
> > Thanks!
> >
> >> Yes.  The patch looks good to me otherwise.  But John knows a lot more
> >> about this stuff than I do; would be good to get his blessing.
> >
> > Seems like John is currently away from keyboard / busy with other stuff?
> I think we should go ahead and include this patch to get the CI green
> again, so I'll add it to my next pull request. If there is still anything
> that needs to be done on top, it can be done in another patch later.
>
> Makes sense.  I assume you'll amend the commit message to address
> Philippe's review.


Sorry, I was chasing the tail end of Sphinx fixes and fixing up the
standalone Python library which had quite a few problems with its CI, and I
figured I would then backport all of the various problems I encountered to
our CI here; I see you've already been tackling it while I was looking
away... sorry!

(Markus tried to warn me ...)

See also:
https://gitlab.com/qemu-project/python-qemu-qmp/-/merge_requests/34
https://gitlab.com/qemu-project/python-qemu-qmp/-/merge_requests/35
https://gitlab.com/gitlab-org/gitlab/-/issues/539290

If there are no objections to moving to 3.9 as the minimum, I certainly
don't mind. Go right ahead and I'll clean up afterwards as part of my
"delint qapi" series in which I'd like to fix quite a few other things that
are currently wonky. In fact, moving to 3.9 as a minimum might make all of
that much easier for me and allow deeper cleanings.

--js
Re: [PATCH] Drop support for Python 3.8
Posted by Daniel P. Berrangé 6 months, 3 weeks ago
On Fri, Apr 25, 2025 at 02:07:10PM +0200, Thomas Huth wrote:
> From: Thomas Huth <thuth@redhat.com>
> 
> 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.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  This is an alternative suggestion to:
>  https://lore.kernel.org/qemu-devel/20250422125626.72907-1-thuth@redhat.com/
> 
>  docs/about/build-platforms.rst         |  2 +-
>  configure                              | 14 +++++++-------
>  python/Makefile                        |  8 ++++----
>  python/setup.cfg                       |  7 +++----
>  python/tests/minreqs.txt               |  2 +-
>  scripts/qapi/mypy.ini                  |  2 +-
>  tests/docker/dockerfiles/python.docker |  1 -
>  7 files changed, 17 insertions(+), 19 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|