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/2272170300

This version reflects Dan's suggestion to always install the in-tree
Python packages by default.

The major effects of this patch series are:

1. qemu.qmp and the python/ directory will be installed to the
   configure-time venv (build/pyvenv) by default.
2. qemu.qmp will be installed from PyPI or vendored packages instead of
   being utilized directly from the qemu.git tree.
3. "make check-venv" is removed as it is no longer needed.
4. functional test dependencies are installed as-needed when running
   those tests.
5. 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.
6. An awful lot of deleted lines of code, and a lot fewer headaches
   managing two nearly-identical copies of this source code. O:-)

v4:

 - Rename "checktests" group to "tooling", install it by default
   alongside meson at configure-time.
 - Remove "check-venv" entirely.
 - Update python/README.rst to reflect the new paradigm
 - Update many scripts that import qemu.qmp to give new errors when they
   are run outside of the configure venv

KNOWN ISSUES IN V4:

 - The last patch is an RFC based on Thomas' observations, I don't have
   a strong opinion on if we want it or not.
 - Removing "make check-venv" causes the VM tests to rebuild more often;
   I was not sure how to replace the old conditional behavior in an
   equivalent manner. Suggestions, anyone...?

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.

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 (17):
  python/mkvenv: create timestamp file for each group "ensured"
  python/mkvenv: bump 'qemu.qmp' dependency for testdeps
  python/mkvenv: add 'tooling' and 'functests' dependency groups
  python/mkvenv: add mechanism to install local package(s)
  meson, mkvenv: add functests custom target
  tests: Use configured python to run GitLab iotests
  tests: use "run" script to execute device-crash-test
  tests/lcitool: add python3 wheel and setuptools deps for qemu
  python: add vendored qemu.qmp package
  meson, mkvenv: make functional tests depend on functests group
  meson, mkvenv: add qemu.git/python/qemu package to pythondeps.toml
  configure: unconditionally install "tooling" group
  tests: remove "make check-venv" target
  scripts: nudge users to use 'run' script for scripts that import
    qemu.qmp
  python: delete qemu.qmp
  python: update README.rst to reflect qemu.qmp's removal
  RFC: exclude pyvenv targets from "make check-build"

 python/README.rst                             |   50 +-
 configure                                     |    2 +-
 meson.build                                   |    1 +
 .gitlab-ci.d/buildtest.yml                    |   26 +-
 .gitlab-ci.d/cirrus/freebsd-14.vars           |    2 +-
 .gitlab-ci.d/cirrus/macos-14.vars             |    2 +-
 .gitlab-ci.d/windows.yml                      |    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                            |   28 +
 scripts/compare-machine-types.py              |    7 +-
 scripts/device-crash-test                     |    5 +-
 scripts/mtest2make.py                         |    4 +-
 scripts/qmp/qemu-ga-client                    |   13 +-
 scripts/qmp/qmp-shell                         |   13 +-
 scripts/qmp/qmp-shell-wrap                    |   13 +-
 scripts/qmp/qom-fuse                          |   13 +-
 scripts/qmp/qom-get                           |   13 +-
 scripts/qmp/qom-list                          |   13 +-
 scripts/qmp/qom-set                           |   13 +-
 scripts/qmp/qom-tree                          |   13 +-
 scripts/qmp_helper.py                         |    9 +-
 scripts/render_block_graph.py                 |   10 +-
 scripts/simplebench/bench_block_job.py        |   10 +-
 tests/Makefile.include                        |   22 +-
 tests/docker/dockerfiles/alpine.docker        |    2 +
 tests/docker/dockerfiles/centos9.docker       |    2 +
 tests/functional/meson.build                  |    5 +-
 tests/lcitool/projects/qemu.yml               |    2 +
 tests/migration-stress/guestperf/engine.py    |   15 +-
 tests/vm/Makefile.include                     |   24 +-
 tests/vm/generated/freebsd.json               |    2 +
 50 files changed, 250 insertions(+), 5684 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.52.0



Reply via email to