John Snow <[email protected]> writes: > With the qemu.qmp and qemu.machine dependencies now installed by default > at configure time and additional dependencies required by functional > testing installed on demand, we do not need the explicit "check-venv" target. > > ...However, to facilitate running VM tests without running configure, we > move some of the former logic into tests/vm/Makefile.include to create a > new venv (vm-venv) on-demand when running VM tests from the source tree. > > Signed-off-by: John Snow <[email protected]> > --- > tests/Makefile.include | 22 ++-------------------- > tests/vm/Makefile.include | 18 ++++++++++++++---- > 2 files changed, 16 insertions(+), 24 deletions(-) > > diff --git a/tests/Makefile.include b/tests/Makefile.include > index f28c9e329aa..2a203e23718 100644 > --- a/tests/Makefile.include > +++ b/tests/Makefile.include > @@ -21,7 +21,6 @@ ifneq ($(filter $(all-check-targets), check-softfloat),) > endif > @echo > @echo " $(MAKE) check-report.junit.xml Generates an aggregated XML > test report" > - @echo " $(MAKE) check-venv Creates a Python venv for > tests" > @echo " $(MAKE) check-clean Clean the tests and related > data" > @echo > @echo "The following are useful for CI builds" > @@ -92,33 +91,16 @@ clean-tcg: $(CLEAN_TCG_TARGET_RULES) > .PHONY: distclean-tcg > distclean-tcg: $(DISTCLEAN_TCG_TARGET_RULES) > > -# Python venv for running tests > - > -.PHONY: check-venv > - > # Build up our target list from the filtered list of ninja targets > TARGETS=$(patsubst libqemu-%.a, %, $(filter libqemu-%.a, $(ninja-targets))) > > -TESTS_VENV_TOKEN=$(BUILD_DIR)/pyvenv/tests.group > - > -quiet-venv-pip = $(quiet-@)$(call quiet-command-run, \ > - $(PYTHON) -m pip -q --disable-pip-version-check $1, \ > - "VENVPIP","$1") > - > -$(TESTS_VENV_TOKEN): $(SRC_PATH)/pythondeps.toml > - $(call quiet-venv-pip,install -e "$(SRC_PATH)/python/") > - $(MKVENV_ENSUREGROUP) $< tooling functests > - $(call quiet-command, touch $@) > - > -check-venv: $(TESTS_VENV_TOKEN) > - > FUNCTIONAL_TARGETS=$(patsubst %-softmmu,check-functional-%, $(filter > %-softmmu,$(TARGETS))) > .PHONY: $(FUNCTIONAL_TARGETS) > -$(FUNCTIONAL_TARGETS): check-venv > +$(FUNCTIONAL_TARGETS): > @$(MAKE) SPEED=thorough $(subst -functional,-func,$@) > > .PHONY: check-functional > -check-functional: check-venv > +check-functional: > @$(NINJA) precache-functional > @$(PYTHON) $(SRC_PATH)/scripts/clean_functional_cache.py > @QEMU_TEST_NO_DOWNLOAD=1 $(MAKE) SPEED=thorough check-func > check-func-quick > diff --git a/tests/vm/Makefile.include b/tests/vm/Makefile.include > index 14188bba1c6..217bc706c20 100644 > --- a/tests/vm/Makefile.include > +++ b/tests/vm/Makefile.include > @@ -2,13 +2,23 @@ > > # Hack to allow running in an unconfigured build tree > ifeq ($(realpath $(SRC_PATH)),$(realpath .)) > -VM_PYTHON = PYTHONPATH=$(SRC_PATH)/python /usr/bin/env python3 > -VM_VENV = > +VM_PYTHON = $(SRC_PATH)/vm-venv/bin/python3 > +VM_VENV = vm-venv > else > VM_PYTHON = $(PYTHON) > -VM_VENV = check-venv > +VM_VENV = > endif > > +VM_VENV_TOKEN=$(SRC_PATH)/vm-venv/tooling.group > $(SRC_PATH)/vm-venv/functests.group
Which group should the following be fixed in? make vm-build-openbsd V=1 leads too: DEBUG:root:ssh_cmd: ssh -t -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=1 -p 34187 -i /home/alex/lsrc/qemu.git/vm-test-0fzv014h.tmp/id_rsa -o IdentitiesOnly=yes -o SendEnv=https_proxy -o SendEnv=http_proxy -o SendEnv=ftp_proxy -o SendEnv=no_proxy [email protected] set -e; rm -rf /home/qemu/qemu-test.* cd $(mktemp -d /home/qemu/qemu-test.XXXXXX); mkdir src build; cd src; tar -xf /dev/rsd1c; cd ../build; ../src/configure --cc=cc --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib ; gmake --output-sync -j16 all check V=1; Warning: Permanently added '[127.0.0.1]:34187' (ED25519) to the list of known hosts. python determined to be '/usr/local/bin/python3' python version: Python 3.12.11 mkvenv: Creating non-isolated virtual environment at 'pyvenv' mkvenv: checking for meson>=1.5.0 mkvenv: checking for pycotap>=1.1.0 mkvenv: checking for qemu.qmp>=0.0.5 mkvenv: installing meson==1.10.0, pycotap==1.3.1, qemu.qmp==0.0.5 mkvenv: installing /home/qemu/qemu-test.lk7TCA/src/python ERROR: Exception: Traceback (most recent call last): File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/cli/base_command.py", line 106, in _run_wrapper status = _inner_run() ^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/cli/base_command.py", line 97, in _inner_run return self.run(options, args) ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/cli/req_command.py", line 67, in wrapper return func(self, options, args) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/commands/install.py", line 386, in run requirement_set = resolver.resolve( ^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 76, in resolve collected = self.factory.collect_root_requirements(root_reqs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 545, in collect_root_requirements reqs = list( ^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 501, in _make_requirements_from_install_req cand = self._make_base_candidate_from_link( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 212, in _make_base_candidate_from_link self._editable_candidate_cache[link] = EditableCandidate( ^^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 329, in __init__ super().__init__( File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 159, in __init__ self.dist = self._prepare() ^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 236, in _prepare dist = self._prepare_distribution() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 339, in _prepare_distribution return self._factory.preparer.prepare_editable_requirement(self._ireq) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/operations/prepare.py", line 698, in prepare_editable_requirement dist = _get_prepared_distribution( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/operations/prepare.py", line 72, in _get_prepared_distribution abstract_dist.prepare_distribution_metadata( File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py", line 69, in prepare_distribution_metadata self.req.prepare_metadata() File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/req/req_install.py", line 567, in prepare_metadata and self.supports_pyproject_editable ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/functools.py", line 998, in __get__ val = self.func(instance) ^^^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_internal/req/req_install.py", line 258, in supports_pyproject_editable return "build_editable" in self.pep517_backend._supported_features() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 180, in _supported_features return self._call_hook("_supported_features", {}) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/build/pyvenv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 402, in _call_hook raise BackendUnavailable( pip._vendor.pyproject_hooks._impl.BackendUnavailable: Cannot import 'setuptools.build_meta' mkvenv did not complete successfully: Traceback (most recent call last): File "/home/qemu/qemu-test.lk7TCA/src/python/scripts/mkvenv.py", line 965, in main ensure_group( File "/home/qemu/qemu-test.lk7TCA/src/python/scripts/mkvenv.py", line 859, in ensure_group result = _do_ensure(to_install, online, wheels_dir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/qemu/qemu-test.lk7TCA/src/python/scripts/mkvenv.py", line 801, in _do_ensure pip_install( File "/home/qemu/qemu-test.lk7TCA/src/python/scripts/mkvenv.py", line 689, in pip_install subprocess.run( File "/usr/local/lib/python3.12/subprocess.py", line 571, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['/home/qemu/qemu-test.lk7TCA/build/pyvenv/bin/python3', '-m', 'pip', 'install', '--disable-pip-version-check', '-q', '--no-index', '--find-links', '/home/qemu/qemu-test.lk7TCA/src/python/wheels', '--no-build-isolation', '-e', '/home/qemu/qemu-test.lk7TCA/src/python']' returned non-zero exit status 2. Connection to 127.0.0.1 closed. DEBUG:qemu.machine.machine:Shutting down VM appliance; timeout=90 DEBUG:qemu.machine.machine:Attempting graceful termination DEBUG:qemu.machine.machine:Closing console socket DEBUG:qemu.machine.machine:Politely asking QEMU to terminate DEBUG:qemu.qmp.protocol.7f9dfba48ec0:--> { "execute": "quit" } DEBUG:qemu.qmp.protocol.7f9dfba48ec0:<-- { "timestamp": { "seconds": 1770671483, "microseconds": 668804 }, "event": "NIC_RX_FILTER_CHANGED", "data": { "path": "/machine/peripheral-anon/device[0]/virtio-backend" } } DEBUG:qemu.qmp.protocol.7f9dfba48ec0:<-- { "timestamp": { "seconds": 1770671497, "microseconds": 530684 }, "event": "SHUTDOWN", "data": { "guest": false, "reason": "host-qmp-quit" } } DEBUG:qemu.qmp.protocol.7f9dfba48ec0:<-- { "return": {} } INFO:qemu.qmp.protocol.7f9dfba48ec0:Task.Reader: EOFError DEBUG:qemu.qmp.protocol.7f9dfba48ec0:Task.Reader: failure: | Traceback (most recent call last): | File "/home/alex/lsrc/qemu.git/vm-venv/lib/python3.13/site-packages/qemu/qmp/protocol.py", line 914, in _bh_loop_forever | await async_fn() | File "/home/alex/lsrc/qemu.git/vm-venv/lib/python3.13/site-packages/qemu/qmp/protocol.py", line 952, in _bh_recv_message | msg = await self._recv() | ^^^^^^^^^^^^^^^^^^ | File "/home/alex/lsrc/qemu.git/vm-venv/lib/python3.13/site-packages/qemu/qmp/protocol.py", line 1053, in _recv | message = await self._do_recv() | ^^^^^^^^^^^^^^^^^^^^^ | File "/home/alex/lsrc/qemu.git/vm-venv/lib/python3.13/site-packages/qemu/qmp/qmp_client.py", line 459, in _do_recv | msg_bytes = await self._readline() | ^^^^^^^^^^^^^^^^^^^^^^ | File "/home/alex/lsrc/qemu.git/vm-venv/lib/python3.13/site-packages/qemu/qmp/protocol.py", line 1021, in _readline | raise EOFError | EOFError DEBUG:qemu.qmp.protocol.7f9dfba48ec0:Transitioning from 'Runstate.RUNNING' to 'Runstate.DISCONNECTING'. DEBUG:qemu.qmp.protocol.7f9dfba48ec0:Scheduling disconnect. DEBUG:qemu.qmp.protocol.7f9dfba48ec0:Task.Reader: exiting. DEBUG:qemu.qmp.protocol.7f9dfba48ec0:Cancelling writer task. DEBUG:qemu.qmp.protocol.7f9dfba48ec0:Waiting for tasks to complete ... DEBUG:qemu.qmp.protocol.7f9dfba48ec0:disconnect() called. DEBUG:qemu.qmp.protocol.7f9dfba48ec0:Task.Writer: cancelled. DEBUG:qemu.qmp.protocol.7f9dfba48ec0:Task.Writer: exiting. DEBUG:qemu.qmp.protocol.7f9dfba48ec0:Closing StreamWriter. DEBUG:qemu.qmp.protocol.7f9dfba48ec0:Waiting for StreamWriter to close ... DEBUG:qemu.qmp.protocol.7f9dfba48ec0:StreamWriter closed. DEBUG:qemu.qmp.protocol.7f9dfba48ec0:Disconnected. DEBUG:qemu.qmp.protocol.7f9dfba48ec0:QMP Disconnected. DEBUG:qemu.qmp.protocol.7f9dfba48ec0:Transitioning from 'Runstate.DISCONNECTING' to 'Runstate.IDLE'. DEBUG:qemu.machine.machine:Waiting (timeout=90) for QEMU process (pid=2646179) to terminate DEBUG:qemu.machine.machine:Cleaning up after VM process make: *** [tests/vm/Makefile.include:121: vm-build-openbsd] Error 3 Hmm maybe that failure is in the build itself... > + > +$(VM_VENV_TOKEN): $(SRC_PATH)/pythondeps.toml > + /usr/bin/env python3 $(SRC_PATH)/python/scripts/mkvenv.py > create vm-venv > + $(SRC_PATH)/vm-venv/bin/python3 > $(SRC_PATH)/python/scripts/mkvenv.py ensuregroup --online > $(SRC_PATH)/pythondeps.toml tooling functests > + > +.PHONY: vm-venv > +vm-venv: $(VM_VENV_TOKEN) > +# end hackery > + > .PHONY: vm-build-all vm-clean-all > > EFI_AARCH64 = $(wildcard $(BUILD_DIR)/pc-bios/edk2-aarch64-code.fd) > @@ -102,7 +112,7 @@ $(IMAGES_DIR)/%.img: $(SRC_PATH)/tests/vm/% \ > $(if $(LOG_CONSOLE),--log-console) \ > --source-path $(SRC_PATH) \ > --image "$@" \ > - $(if $(filter-out check-venv, $?), --force) \ > + --force \ > --build-image $@, \ > " VM-IMAGE $*") -- Alex Bennée Virtualisation Tech Lead @ Linaro
