On Tue, Jan 6, 2026 at 7:11 AM Daniel P. Berrangé <[email protected]> wrote: > > On Fri, Dec 05, 2025 at 01:00:45AM -0500, John Snow wrote: > > 'checktests' contains depedencies *required* to run "make check", and as > > such, we promise that these dependencies can be sourced from the user's > > distribution repository or from vendored packages so that "make check" > > can be executed offline in an isolated build environment. > > > > In contrast, pygdbmi is only needed for functional tests and not tests > > in general; we do not make the same offline/isolated guarantees for > > functional tests, and this dependency group is allowed to fetch > > dependencies from PyPI at runtime. > > > > For the time being, Amend the "check-venv" target to install both > > dependency groups, to avoid a duplicate dependency between them. > > We now have the 'run' script concept merged, so we can do > "./run ..." and it'll "do the right thing" executing with > the python venv in $PYTHONPATH, and locally built binaries > in $PATH, etc. > > What I think is missing is to ensure that qemu.qmp is *always* > available in the venv.
Always-always, or should the run script do a just-in-time install when invoked? (Reading ahead: You mean always-always.) I recall we had competing ideas for the runscript, you didn't see mine, and yours got merged. Fine by me, but I forget the details. Where is your script...? (I forget where the hell I was with all of this, my best recollection is that there is some fine-tuning to do with what dependencies get installed with which targets and when. I suppose I'll try to hammer out this specific issue as it's the most recent one in my inbox, then I will refresh and resend my series and see where we land.) > > The split of python deps between vendored and non-vendored > pieces makes sense, but the association of 'qemu.qmp' with > tests is overlooking that qemu.qmp is used for more than > just the tests - it is also a dep of qmp-shell which is a > developer tool. Given this I think tieing install of qemu.qmp > to 'make check' (via 'make check-venv') is a mistake. Instead > we should unconditionally install it when configure is run. Ah, okay. I think my only concern about doing this was that it was potentially slow and I was trying to be very aggressive about not installing anything that was not strictly necessary for the build. I do agree it's for more than 'tests', though - as you point out, it's for developer tooling too. I'm not against always installing it, I think, but I have some lingering half-remembered reasons that made me think we didn't want that. I don't remember why. If there's no opposition to it, I guess I can just do that and see what happens... > > We have precedent for that in --enable-rust unconditionally > installing all vendored Rust crates. Since we vendor qemu.qmp > there's no download penalty, and timing the venv creation > shows it takes about 1 second which is insignificant in the > context of everything else configure does. > > Anyway, if we move the 'checktests' group install to configure, > then combined with the new 'run' script we would eliminate the > main behaviour regression from removing qemu.qmp from git. Alright. > > > Leaving the 'functests' group to be lazy installed is OK, since > as a developer if you're running a functional test directly, > that is pretty likely to be after you already had run the > 'make check-functional' command and saw a failure. IOW the > venv will be populated with the needed deps. mmmmm, OK. Let me catch up on some of my other emails and see what the other lingering complaints I can find are, and I will make a pass at a version that just installs qemu.qmp unconditionally. Feel free to yell at me on IRC with any lingering concerns you can think of to help me get back up to speed after my marathon break... --js > > > > > Signed-off-by: John Snow <[email protected]> > > --- > > pythondeps.toml | 10 +++++++++- > > tests/Makefile.include | 2 +- > > 2 files changed, 10 insertions(+), 2 deletions(-) > > > > diff --git a/pythondeps.toml b/pythondeps.toml > > index 1657953ff65..14ceb4e7787 100644 > > --- a/pythondeps.toml > > +++ b/pythondeps.toml > > @@ -31,6 +31,14 @@ meson = { accepted = ">=1.9.0", installed = "1.9.0", > > canary = "meson" } > > sphinx = { accepted = ">=3.4.3", installed = "6.2.1", canary = > > "sphinx-build" } > > sphinx_rtd_theme = { accepted = ">=0.5", installed = "1.2.2" } > > > > -[testdeps] > > +# This test group is for dependencies required to run "make check" > > +# successfully, and should only include depedencies that can be > > +# guaranteed via configure from system packages, or python packages we > > +# vendor. > > +[checktests] > > "qemu.qmp" = { accepted = ">=0.0.5", installed = "0.0.5" } > > + > > +# This test group is for functional tests, and can include dependencies > > +# fetched from PyPI. > > +[functests] > > pygdbmi = { accepted = ">=0.11.0.0", installed = "0.11.0.0" } > > diff --git a/tests/Makefile.include b/tests/Makefile.include > > index d4dfbf3716d..40b114bd158 100644 > > --- a/tests/Makefile.include > > +++ b/tests/Makefile.include > > @@ -98,7 +98,7 @@ quiet-venv-pip = $(quiet-@)$(call quiet-command-run, \ > > > > $(TESTS_VENV_TOKEN): $(SRC_PATH)/pythondeps.toml > > $(call quiet-venv-pip,install -e "$(SRC_PATH)/python/") > > - $(MKVENV_ENSUREGROUP) $< testdeps > > + $(MKVENV_ENSUREGROUP) $< checktests functests > > $(call quiet-command, touch $@) > > > > check-venv: $(TESTS_VENV_TOKEN) > > -- > > 2.51.1 > > > > 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 :| >
