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 + +$(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 $*") -- 2.52.0
