[PATCH] docs/conf.py: Remove usage of distutils

Thomas Huth posted 1 patch 8 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240304093618.24131-1-thuth@redhat.com
Maintainers: Peter Maydell <peter.maydell@linaro.org>
There is a newer version of this series
docs/conf.py | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
[PATCH] docs/conf.py: Remove usage of distutils
Posted by Thomas Huth 8 months, 3 weeks ago
The macOS jobs in our CI recently started failing, complaining that
the distutils module is not available anymore. And indeed, according to
https://peps.python.org/pep-0632/ it's been deprecated since a while
and now likely got removed in recent Python versions.

Fortunately, we only use it for a version check via LooseVersion here
which we don't really need anymore: All distros ship newer versions of
Sphinx now (see https://repology.org/project/python:sphinx/versions -
the oldest one is 0.6.6 on CentOS 6!), so we can simply drop the version
check now.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 docs/conf.py | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/docs/conf.py b/docs/conf.py
index e84a95e71c..1b2afa241c 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -29,7 +29,6 @@
 import os
 import sys
 import sphinx
-from distutils.version import LooseVersion
 from sphinx.errors import ConfigError
 
 # The per-manual conf.py will set qemu_docdir for a single-manual build;
@@ -165,11 +164,10 @@
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
 # documentation.
-if LooseVersion(sphinx_rtd_theme.__version__) >= LooseVersion("0.4.3"):
-    html_theme_options = {
-        "style_nav_header_background": "#802400",
-        "navigation_with_keys": True,
-    }
+html_theme_options = {
+    "style_nav_header_background": "#802400",
+    "navigation_with_keys": True,
+}
 
 html_logo = os.path.join(qemu_docdir, "../ui/icons/qemu_128x128.png")
 
-- 
2.44.0
Re: [PATCH] docs/conf.py: Remove usage of distutils
Posted by Michael Tokarev 8 months, 3 weeks ago
04.03.2024 12:36, Thomas Huth wrote:
> The macOS jobs in our CI recently started failing, complaining that
> the distutils module is not available anymore. And indeed, according to
> https://peps.python.org/pep-0632/ it's been deprecated since a while
> and now likely got removed in recent Python versions.
> 
> Fortunately, we only use it for a version check via LooseVersion here
> which we don't really need anymore: All distros ship newer versions of
> Sphinx now (see https://repology.org/project/python:sphinx/versions -
> the oldest one is 0.6.6 on CentOS 6!), so we can simply drop the version
> check now.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>

Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>

Thanks!

/mjt

> ---
>   docs/conf.py | 10 ++++------
>   1 file changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/docs/conf.py b/docs/conf.py
> index e84a95e71c..1b2afa241c 100644
> --- a/docs/conf.py
> +++ b/docs/conf.py
> @@ -29,7 +29,6 @@
>   import os
>   import sys
>   import sphinx
> -from distutils.version import LooseVersion
>   from sphinx.errors import ConfigError
>   
>   # The per-manual conf.py will set qemu_docdir for a single-manual build;
> @@ -165,11 +164,10 @@
>   # Theme options are theme-specific and customize the look and feel of a theme
>   # further.  For a list of options available for each theme, see the
>   # documentation.
> -if LooseVersion(sphinx_rtd_theme.__version__) >= LooseVersion("0.4.3"):
> -    html_theme_options = {
> -        "style_nav_header_background": "#802400",
> -        "navigation_with_keys": True,
> -    }
> +html_theme_options = {
> +    "style_nav_header_background": "#802400",
> +    "navigation_with_keys": True,
> +}
>   
>   html_logo = os.path.join(qemu_docdir, "../ui/icons/qemu_128x128.png")
>
Re: [PATCH] docs/conf.py: Remove usage of distutils
Posted by Peter Maydell 8 months, 3 weeks ago
On Mon, 4 Mar 2024 at 09:36, Thomas Huth <thuth@redhat.com> wrote:
>
> The macOS jobs in our CI recently started failing, complaining that
> the distutils module is not available anymore. And indeed, according to
> https://peps.python.org/pep-0632/ it's been deprecated since a while
> and now likely got removed in recent Python versions.
>
> Fortunately, we only use it for a version check via LooseVersion here
> which we don't really need anymore: All distros ship newer versions of
> Sphinx now (see https://repology.org/project/python:sphinx/versions -
> the oldest one is 0.6.6 on CentOS 6!), so we can simply drop the version
> check now.

This code isn't checking the Sphinx version (we do that via the
setting of needs_sphinx, current minimum 1.6), but the
sphinx-rtd-theme version, which is independent of Sphinx's
version numbering scheme.

I get timeouts trying to connect to repology.org, so can't check:
do distros all ship new enough versions of sphinx-rtd-theme yet?

> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  docs/conf.py | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/docs/conf.py b/docs/conf.py
> index e84a95e71c..1b2afa241c 100644
> --- a/docs/conf.py
> +++ b/docs/conf.py
> @@ -29,7 +29,6 @@
>  import os
>  import sys
>  import sphinx
> -from distutils.version import LooseVersion
>  from sphinx.errors import ConfigError
>
>  # The per-manual conf.py will set qemu_docdir for a single-manual build;
> @@ -165,11 +164,10 @@
>  # Theme options are theme-specific and customize the look and feel of a theme
>  # further.  For a list of options available for each theme, see the
>  # documentation.
> -if LooseVersion(sphinx_rtd_theme.__version__) >= LooseVersion("0.4.3"):
> -    html_theme_options = {
> -        "style_nav_header_background": "#802400",
> -        "navigation_with_keys": True,
> -    }
> +html_theme_options = {
> +    "style_nav_header_background": "#802400",
> +    "navigation_with_keys": True,
> +}
>
>  html_logo = os.path.join(qemu_docdir, "../ui/icons/qemu_128x128.png")

thanks
-- PMM
Re: [PATCH] docs/conf.py: Remove usage of distutils
Posted by Thomas Huth 8 months, 3 weeks ago
On 04/03/2024 11.56, Peter Maydell wrote:
> On Mon, 4 Mar 2024 at 09:36, Thomas Huth <thuth@redhat.com> wrote:
>>
>> The macOS jobs in our CI recently started failing, complaining that
>> the distutils module is not available anymore. And indeed, according to
>> https://peps.python.org/pep-0632/ it's been deprecated since a while
>> and now likely got removed in recent Python versions.
>>
>> Fortunately, we only use it for a version check via LooseVersion here
>> which we don't really need anymore: All distros ship newer versions of
>> Sphinx now (see https://repology.org/project/python:sphinx/versions -
>> the oldest one is 0.6.6 on CentOS 6!), so we can simply drop the version
>> check now.
> 
> This code isn't checking the Sphinx version (we do that via the
> setting of needs_sphinx, current minimum 1.6), but the
> sphinx-rtd-theme version, which is independent of Sphinx's
> version numbering scheme.

Oops, sorry for mixing that up!

> I get timeouts trying to connect to repology.org, so can't check:
> do distros all ship new enough versions of sphinx-rtd-theme yet?

Using my shell script to query repology, I get:

centos_stream_8: 0.3.1
centos_stream_9: 0.5.1
fedora_37: 1.0.0
fedora_38: 1.1.1
fedora_39: 1.2.2
fedora_rawhide: 2.0.0
freebsd: 1.0.0
haikuports_master: 1.2.1
openbsd: 1.2.2
opensuse_leap_15_5: 0.5.1
pkgsrc_current: 2.0.0

debian_11: 0.5.1
debian_12: 1.2.0
debian_13: 2.0.0
ubuntu_20_04: 0.4.3
ubuntu_22_04: 1.0.0
ubuntu_23_04: 1.2.0
ubuntu_23_10: 1.3.0
ubuntu_24_04: 2.0.0

So CentOS Stream 8 is too old ... but didn't we stop supporting the distro 
Sphinx there anyway since we switched to the python venv stuff last year?

  Thomas
Re: [PATCH] docs/conf.py: Remove usage of distutils
Posted by Peter Maydell 8 months, 3 weeks ago
On Mon, 4 Mar 2024 at 11:10, Thomas Huth <thuth@redhat.com> wrote:
> Using my shell script to query repology, I get:
>
> centos_stream_8: 0.3.1
> centos_stream_9: 0.5.1
> fedora_37: 1.0.0
> fedora_38: 1.1.1
> fedora_39: 1.2.2
> fedora_rawhide: 2.0.0
> freebsd: 1.0.0
> haikuports_master: 1.2.1
> openbsd: 1.2.2
> opensuse_leap_15_5: 0.5.1
> pkgsrc_current: 2.0.0
>
> debian_11: 0.5.1
> debian_12: 1.2.0
> debian_13: 2.0.0
> ubuntu_20_04: 0.4.3
> ubuntu_22_04: 1.0.0
> ubuntu_23_04: 1.2.0
> ubuntu_23_10: 1.3.0
> ubuntu_24_04: 2.0.0
>
> So CentOS Stream 8 is too old ... but didn't we stop supporting the distro
> Sphinx there anyway since we switched to the python venv stuff last year?

Not sure, but that does ring a faint bell.

As our other option, what's the approved Python way
of comparing versions these days?

-- PMM
Re: [PATCH] docs/conf.py: Remove usage of distutils
Posted by Thomas Huth 8 months, 3 weeks ago
On 04/03/2024 12.18, Peter Maydell wrote:
> On Mon, 4 Mar 2024 at 11:10, Thomas Huth <thuth@redhat.com> wrote:
>> Using my shell script to query repology, I get:
>>
>> centos_stream_8: 0.3.1
>> centos_stream_9: 0.5.1
>> fedora_37: 1.0.0
>> fedora_38: 1.1.1
>> fedora_39: 1.2.2
>> fedora_rawhide: 2.0.0
>> freebsd: 1.0.0
>> haikuports_master: 1.2.1
>> openbsd: 1.2.2
>> opensuse_leap_15_5: 0.5.1
>> pkgsrc_current: 2.0.0
>>
>> debian_11: 0.5.1
>> debian_12: 1.2.0
>> debian_13: 2.0.0
>> ubuntu_20_04: 0.4.3
>> ubuntu_22_04: 1.0.0
>> ubuntu_23_04: 1.2.0
>> ubuntu_23_10: 1.3.0
>> ubuntu_24_04: 2.0.0
>>
>> So CentOS Stream 8 is too old ... but didn't we stop supporting the distro
>> Sphinx there anyway since we switched to the python venv stuff last year?
> 
> Not sure, but that does ring a faint bell.

I'm pretty sure: I was still using RHEL 8 on my laptop 'til last year, and 
the distro Sphinx stopped working at one point in time, since it was based 
on the default python there which is python 3.6 - and we stopped supporting 
that python version in upstream. So you have to use Sphinx from the venv on 
RHEL 8 / CentOS 8, and that seems to enforce a newer version of 
sphinx_rtd_theme if I get that right from docs/requirements.txt and 
pythondeps.toml.

  Thomas
Re: [PATCH] docs/conf.py: Remove usage of distutils
Posted by Daniel P. Berrangé 8 months, 3 weeks ago
On Mon, Mar 04, 2024 at 10:36:18AM +0100, Thomas Huth wrote:
> The macOS jobs in our CI recently started failing, complaining that
> the distutils module is not available anymore. And indeed, according to
> https://peps.python.org/pep-0632/ it's been deprecated since a while
> and now likely got removed in recent Python versions.
> 
> Fortunately, we only use it for a version check via LooseVersion here
> which we don't really need anymore: All distros ship newer versions of
> Sphinx now (see https://repology.org/project/python:sphinx/versions -
> the oldest one is 0.6.6 on CentOS 6!), so we can simply drop the version
> check now.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  docs/conf.py | 10 ++++------
>  1 file changed, 4 insertions(+), 6 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 :|