First of all: Ping! Please-Review: Daniel P. Berrangé <[email protected]> Please-Review: Paolo Bonzini <[email protected]> Please-Review: Alex Bennée <[email protected]>
It would be nice to get this series staged right as the tree opens so that I can address any build issues it creates in a timely manner during the next window. Second, [below, in-line] ... On Fri, Dec 5, 2025 at 1:01 AM John Snow <[email protected]> wrote: > > Hello! > > This series drops the in-tree version of our python-qemu-qmp package > ("qemu.qmp") in favor of the version hosted on PyPI, whose repository is > located at https://gitlab.com/qemu-project/python-qemu-qmp. > > GitLab CI: https://gitlab.com/jsnow/qemu/-/pipelines/2197613036 > (FreeBSD isn't my fault...!) > > The major effects of this patch series are: > > 1. qemu.qmp will be installed from PyPI or vendored packages instead of > being utilized directly from the qemu.git tree. > 2. There are no new python dependencies checked or installed during > configure. All test dependencies are installed post-hoc on an > as-needed basis. > 3. "make check-venv" is no longer required to be run manually before any > test that is integrated with meson; this includes "make check" and > "make check-functional". > 4. "make check-venv" no longer installs functional test dependencies: it > installs only the core suite of python test dependencies. > 5. "make check-venv" is now required as a pre-requisite for running > device-crash-test and manually executed iotests. > 6. Unfortunately, python3-wheel and python3-setuptools are now required > on the host system if tests are to be executed and >= Python 3.13 is > used. > 7. An awful lot of deleted lines of code, and a lot fewer headaches > managing two nearly-identical copies of this source code. O:-) > > Patches 1-5 are build system focused; they set up new pythondeps.toml, > mkvenv, and meson systems in preparation for relying on an external > qemu.qmp library, but does not yet make the switch. > > Patches 6-9 are testing and CI focused; they add necessary preparation > steps to keep tests running happily once the in-tree qemu.qmp library is > removed. > > Patches 10-15 are build system focused again; they implement the actual > switchover to the external qemu.qmp library. > > v3: > > - Fixed FreeBSD vm test > - Fixed Cirrus macOS test (Needed setuptools as a dep, "file:///" had > one too many forward slashes, which works fine for older > pip/setuptools, but was incompatibly fixed recently.) > - Fixed an issue that prevented installing the local python packages in > an offline, isolated build environment (need --no-isolated-build and > pip environment variable flags) > - Added the python3-wheel and python3-setuptools build dependencies to > lcitool, owing to the above issues > - Ensured that the $download flag (for PyPI access) from configure is > carried over into pytest/meson.build invocations. This defaults to > "enabled", so test dependencies should not have any issue being > fetched on most developer workstations and build environments. > - Fixed several bugs in the mkvenv.py local package installation mechanism. > - Flags and workarounds added for installing local packages offline now > apply *only* to local package installations, and not "normal" > depspecs. > - Reordered patches into more logical "phases" for easier review (I > hope...?) > > Known issues: "make check-build" still installs all of the test > dependencies to the pyvenv. I'm not sure if this is desired or not, but > I ran into problems preventing it from doing this without breaking a ton > of CI tests. I'll continue to investigate this, but wanted to send this > v3 out. I sussed it out. I *can* remove the pyvenv targets from "check-build", and the reason CI tests fail when I do this is because the build templates use NINJA=":", so running "make check" suppresses the meson dependencies. It can be rectified by setting eight of the twelve total occurrences of "make check-build" in our CI files to also run "make check-venv". It's not clear if we want this or not. It depends on what "check-build" semantically means. On the one hand, it doesn't do any prefetch for the functional tests, so you could make the argument that environment setup is similar. On the other hand, I think it's used almost exclusively by and for the CI test suite, in which case it running the environment setup is likely a pretty helpful/useful thing. It's something Thomas pointed out, but I don't feel like I have a strong opinion on it currently. --js > > v2: > > - move "make check-venv" earlier in GitLab CI/CD pipeline, to avoid > re-running configure > - Fix functional tests not using PyPI to fetch pygdbmi package > - Remove pre-requisites which are now merged > > --js > > John Snow (15): > python/mkvenv: create timestamp file for each group "ensured" > python/mkvenv: bump 'qemu.qmp' dependency for testdeps > python/mkvenv: add 'checktests' and 'functests' dependency groups > python/mkvenv: add mechanism to install local package(s) > meson, mkvenv: add checktests and functests custom targets > tests: Use configured python to run GitLab iotests > tests: run "make check-venv" before running iotests > tests: ensure "make check-venv" is run for crash tests > tests/lcitool: add python3 wheel and setuptools deps for qemu > python: add vendored qemu.qmp package > meson, mkvenv: make iotests depend on checktests group > meson, mkvenv: make functional tests depend on functests group > meson, mkvenv: add qemu.git/python/qemu package to pythondeps.toml > tests: replace old "check-venv" target with meson target > python: delete qemu.qmp > > meson.build | 1 + > .gitlab-ci.d/buildtest.yml | 11 +- > .gitlab-ci.d/cirrus/freebsd-14.vars | 2 +- > .gitlab-ci.d/cirrus/macos-14.vars | 2 +- > python/qemu/qmp/__init__.py | 60 - > python/qemu/qmp/error.py | 53 - > python/qemu/qmp/events.py | 751 ----------- > python/qemu/qmp/legacy.py | 339 ----- > python/qemu/qmp/message.py | 217 ---- > python/qemu/qmp/models.py | 146 --- > python/qemu/qmp/protocol.py | 1101 ----------------- > python/qemu/qmp/py.typed | 0 > python/qemu/qmp/qmp_client.py | 732 ----------- > python/qemu/qmp/qmp_shell.py | 689 ----------- > python/qemu/qmp/qmp_tui.py | 665 ---------- > python/qemu/qmp/util.py | 150 --- > python/qemu/utils/qom_fuse.py | 1 - > python/scripts/mkvenv.py | 44 +- > python/scripts/vendor.py | 2 + > python/setup.cfg | 31 +- > python/tests/minreqs.txt | 8 +- > python/tests/protocol.py | 596 --------- > python/wheels/qemu_qmp-0.0.5-py3-none-any.whl | Bin 0 -> 72263 bytes > pythondeps.toml | 13 +- > pyvenv/meson.build | 40 + > tests/Makefile.include | 25 +- > tests/docker/dockerfiles/alpine.docker | 2 + > tests/docker/dockerfiles/centos9.docker | 2 + > tests/functional/meson.build | 7 +- > tests/lcitool/projects/qemu.yml | 2 + > tests/qemu-iotests/meson.build | 2 +- > tests/vm/generated/freebsd.json | 2 + > 32 files changed, 126 insertions(+), 5570 deletions(-) > delete mode 100644 python/qemu/qmp/__init__.py > delete mode 100644 python/qemu/qmp/error.py > delete mode 100644 python/qemu/qmp/events.py > delete mode 100644 python/qemu/qmp/legacy.py > delete mode 100644 python/qemu/qmp/message.py > delete mode 100644 python/qemu/qmp/models.py > delete mode 100644 python/qemu/qmp/protocol.py > delete mode 100644 python/qemu/qmp/py.typed > delete mode 100644 python/qemu/qmp/qmp_client.py > delete mode 100644 python/qemu/qmp/qmp_shell.py > delete mode 100644 python/qemu/qmp/qmp_tui.py > delete mode 100644 python/qemu/qmp/util.py > delete mode 100644 python/tests/protocol.py > create mode 100644 python/wheels/qemu_qmp-0.0.5-py3-none-any.whl > create mode 100644 pyvenv/meson.build > > -- > 2.51.1 > >
