qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Minimum sphinx version?


From: John Snow
Subject: Minimum sphinx version?
Date: Mon, 30 Sep 2024 13:16:42 -0400

Hi, following up from my KVM forum talk ( https://www.youtube.com/watch?v=GGbz3WwvqLw ) I wanted to ask about what version of Sphinx we could use as a minimum version to help ease the burden of modernizing our QMP docs without a long backwards compatibility tail (and hundreds of lines of compatibility goop to make it happen.)

First, some necessary background on the current state of our Python environment and build system:

Paolo and I worked on a Python virtual environment tied to the QEMU build system (python/scripts/mkvenv.py) which performs various setup actions necessary to instantiate python *stuff* to ensure the build works and is always using the correct, configured Python interpreter.

Currently, configure will invoke mkvenv in such a fashion that it prefers any local packages you have installed: notably, meson, sphinx, and sphinx-rtd-theme if you already have them installed from your distro's repository will be used *if they use the version of python you specified to configure* (or they match the version that configure guessed if you didn't specify one.)

For meson, if you don't meet the minimum version, we will install a version for you from our vendored whl files in the repository/tarball.

For sphinx, if you don't meet the minimum version and you have specified --enable-docs, we'll install a version from the internet, from PyPI. If you did not specify --enable-docs, we disable docs.

We did it this way because:
- It's *really fast* if you already have the dependencies you need
- meson is easy to vendor as a .whl because it's pure python, has *zero* dependencies, and it's absolutely required for the build.
- docs are not *required* to build QEMU
- We went out of our way to ensure that QEMU could be built in an offline, isolated environment on all of our supported platforms.

That being said:

The current reality is that Sphinx 3.4.3 is our minimum because RHEL 9 offers that as the distro package and I have not dared bump our version beyond that for fear of disrupting our ability to build docs on RHEL 9 without internet.

What I'd like to ask is: How adamant are we that we can build docs on older platforms? Do we consider it part of our platform promise? Can we bump Sphinx to a slightly newer version at the expense of offline doc builds for RHEL 9?

To reiterate: interactive developer builds from git or source tarballs would continue to work (and be able to build docs just fine) so long as --enable-docs is passed, but will require an internet connection to set up the python environment with a new-enough sphinx. RHEL 9 rpm builds of bleeding edge QEMU may be cut off from building docs in isolated RPMBUILD environments unless that repository backports a newer sphinx that can be identified as a dependency in the specfile.

How much of a problem do we consider that to be?

CCing the usual suspects.

--js


reply via email to

[Prev in Thread] Current Thread [Next in Thread]