Browse Source

tests: replace check-venv with vm-venv target

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.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20260218213416.674483-17-jsnow@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
master
John Snow 1 month ago
parent
commit
5abfe61b40
  1. 22
      tests/Makefile.include
  2. 20
      tests/vm/Makefile.include

22
tests/Makefile.include

@ -22,7 +22,6 @@ ifneq ($(filter $(all-check-targets), check-softfloat),)
endif endif
@echo @echo
@echo " $(MAKE) check-report.junit.xml Generates an aggregated XML test report" @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 " $(MAKE) check-clean Clean the tests and related data"
@echo @echo
@echo "The following are useful for CI builds" @echo "The following are useful for CI builds"
@ -93,33 +92,16 @@ clean-tcg: $(CLEAN_TCG_TARGET_RULES)
.PHONY: distclean-tcg .PHONY: distclean-tcg
distclean-tcg: $(DISTCLEAN_TCG_TARGET_RULES) 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 # Build up our target list from the filtered list of ninja targets
TARGETS=$(patsubst libqemu-%.a, %, $(filter libqemu-%.a, $(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))) FUNCTIONAL_TARGETS=$(patsubst %-softmmu,check-functional-%, $(filter %-softmmu,$(TARGETS)))
.PHONY: $(FUNCTIONAL_TARGETS) .PHONY: $(FUNCTIONAL_TARGETS)
$(FUNCTIONAL_TARGETS): check-venv $(FUNCTIONAL_TARGETS):
@$(MAKE) SPEED=thorough $(subst -functional,-func,$@) @$(MAKE) SPEED=thorough $(subst -functional,-func,$@)
.PHONY: check-functional .PHONY: check-functional
check-functional: check-venv check-functional:
@$(NINJA) precache-functional @$(NINJA) precache-functional
@$(PYTHON) $(SRC_PATH)/scripts/clean_functional_cache.py @$(PYTHON) $(SRC_PATH)/scripts/clean_functional_cache.py
@QEMU_TEST_NO_DOWNLOAD=1 $(MAKE) SPEED=thorough check-func check-func-quick @QEMU_TEST_NO_DOWNLOAD=1 $(MAKE) SPEED=thorough check-func check-func-quick

20
tests/vm/Makefile.include

@ -2,13 +2,25 @@
# Hack to allow running in an unconfigured build tree # Hack to allow running in an unconfigured build tree
ifeq ($(realpath $(SRC_PATH)),$(realpath .)) ifeq ($(realpath $(SRC_PATH)),$(realpath .))
VM_PYTHON = PYTHONPATH=$(SRC_PATH)/python /usr/bin/env python3 VM_PYTHON = $(SRC_PATH)/vm-venv/bin/python3
VM_VENV = VM_VENV = vm-venv
else else
VM_PYTHON = $(PYTHON) VM_PYTHON = $(PYTHON)
VM_VENV = check-venv VM_VENV =
endif 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 .PHONY: vm-build-all vm-clean-all
EFI_AARCH64 = $(wildcard $(BUILD_DIR)/pc-bios/edk2-aarch64-code.fd) EFI_AARCH64 = $(wildcard $(BUILD_DIR)/pc-bios/edk2-aarch64-code.fd)
@ -102,7 +114,7 @@ $(IMAGES_DIR)/%.img: $(SRC_PATH)/tests/vm/% \
$(if $(LOG_CONSOLE),--log-console) \ $(if $(LOG_CONSOLE),--log-console) \
--source-path $(SRC_PATH) \ --source-path $(SRC_PATH) \
--image "$@" \ --image "$@" \
$(if $(filter-out check-venv, $?), --force) \ --force \
--build-image $@, \ --build-image $@, \
" VM-IMAGE $*") " VM-IMAGE $*")

Loading…
Cancel
Save