On 2025/05/08 3:23, John Snow wrote:


On Wed, May 7, 2025 at 1:22 AM Markus Armbruster <arm...@redhat.com <mailto:arm...@redhat.com>> wrote:

    John Snow <js...@redhat.com <mailto:js...@redhat.com>> writes:

     > On Mon, May 5, 2025 at 8:19 AM Akihiko Odaki
    <akihiko.od...@daynix.com <mailto:akihiko.od...@daynix.com>>
     > wrote:
     >
     >> sphinx 5.3.0 fails with Python 3.13.1:
     >>
     >> ../docs/meson.build:37: WARNING:
     >> /home/me/qemu/build/pyvenv/bin/sphinx-build:
     >> Extension error:
     >> Could not import extension sphinx.builders.epub3 (exception: No
    module
     >> named 'imghdr')
     >>
     >> ../docs/meson.build:39:6: ERROR: Problem encountered: Install a
    Python 3
     >> version of python-sphinx and the readthedoc theme
     >>
     >> Bump sphinx to 8.2.3 and also sphinx_rtd_theme as required for
    the new
     >> sphinx version.
     >>
     >> Signed-off-by: Akihiko Odaki <akihiko.od...@daynix.com
    <mailto:akihiko.od...@daynix.com>>

    [...]

     > Can we set our suggested version to 6.2.0 instead? This version
    removed
     > reliance on 'imghdr' but merely requires Python 3.8+ which is our
    current
     > stated minimum.
     >
     > If Thomas upgrades our minimum Python to 3.9, then we could use
    something
     > as new as 7.2.0 which requires 3.9+.

    Thomas did: commit d64db833d6.


OK, that being said, let's try setting both the preferred and minimum versions to *7.2.0*. We could theoretically aim higher, but let's start conservatively for now and see what, if anything, breaks before we get more adventurous.

7.2.0 as minimum and 7.2.6 as preferred perhaps? Patch releases fix regressions so the latest of 7.2.x may have the minimal risk.


I think 7.2 is new enough that I can remove the vast majority of the compatibility crud in docs/sphinx/compat.py and it will make my life a lot easier, without being so new as to require a bleeding edge version of Python that may not be available on older platforms we still support for package building.

I think it's not a huge deal to support Sphinx 7.x and 8.x for now. I am just reluctant to suggest that we should have a pinned (very modern) Sphinx version for doc building, because I do not know what the impact of that would be on downstream builds that offer documentation from SRPM (Red Hat, etc) which may not be able to procure a bleeding-edge Sphinx from PyPI from an isolated build environment.


     > I'd say 8.0.0 is too new (requires 3.10+) and conflicts with our
    stated
     > minimums.

    Requiring more recent versions of dependencies for optional parts of the
    build can be okay, but the degradation must be graceful.

    This makes sense only when the more recent dependencies save us enough
    trouble to justify inconveniencing users stuck on older dependencies as
    well as the additional build system complexity.

    I have no opinion on whether that's the case here.  If you think it is,
    make your argument :)

    "Graceful" means that if we require Sphinx 8, which requires Python
    3.10, the build must still succeed when we have only Python 3.9 (our
    stated minimum), but we don't build documentation then.  If the user
    demands documentation with configure --enable-docs, the build fails.

    [...]



Reply via email to