On 6/11/18 14:10, Peter Maydell wrote:
On 31 October 2018 at 00:31, Eduardo Habkost <ehabk...@redhat.com> wrote:
From: Cleber Rosa <cr...@redhat.com>
A number of QEMU tests are written in Python, and may benefit
from an untainted Python venv.
By using make rules, tests that depend on specific Python libs
can set that rule as a requirement, along with rules that require
the presence or installation of specific libraries.
The tests/requirements.txt is supposed to contain the Python
requirements that should be added to the venv created by check-venv.
Signed-off-by: Cleber Rosa <cr...@redhat.com>
Tested-by: Philippe Mathieu-Daudé <phi...@redhat.com>
Acked-by: Stefan Hajnoczi <stefa...@redhat.com>
Acked-by: Wainer dos Santos Moschetta <waine...@redhat.com>
Reviewed-by: Caio Carrara <ccarr...@redhat.com>
Message-Id: <20181018153134.8493-2-cr...@redhat.com>
Signed-off-by: Eduardo Habkost <ehabk...@redhat.com>
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -12,6 +12,7 @@ check-help:
@echo " $(MAKE) check-block Run block tests"
@echo " $(MAKE) check-tcg Run TCG tests"
@echo " $(MAKE) check-report.html Generates an HTML test report"
+ @echo " $(MAKE) check-venv Creates a Python venv for tests"
@echo " $(MAKE) check-clean Clean the tests"
@echo
@echo "Please note that HTML reports do not regenerate if the unit
tests"
@@ -899,6 +900,30 @@ check-decodetree:
./check.sh "$(PYTHON)" "$(SRC_PATH)/scripts/decodetree.py", \
TEST, decodetree.py)
+# Python venv for running tests
+
+.PHONY: check-venv
+
+TESTS_VENV_DIR=$(BUILD_DIR)/tests/venv
+TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt
+
+$(shell $(PYTHON) -c 'import sys; assert sys.version_info >= (3,0)' >/dev/null
2>&1)
+ifeq ($(.SHELLSTATUS),0)
+$(TESTS_VENV_DIR): $(TESTS_VENV_REQ)
+ $(call quiet-command, \
+ $(PYTHON) -m venv --system-site-packages $@, \
+ VENV, $@)
+ $(call quiet-command, \
+ $(TESTS_VENV_DIR)/bin/python -m pip -q install -r
$(TESTS_VENV_REQ), \
+ PIP, $(TESTS_VENV_REQ))
+ $(call quiet-command, touch $@)
+else
+$(TESTS_VENV_DIR):
+ $(error "venv directory for tests requires Python 3")
+endif
+
+check-venv: $(TESTS_VENV_DIR)
Hi -- this seems to be causing one of the travis configs to fail:
https://travis-ci.org/qemu/qemu/jobs/451311466
The config includes "--python=/usr/bin/python3", but the build
fails with
CHK version_gen.h
/home/travis/build/qemu/qemu/tests/Makefile.include:928: *** "venv
directory for tests requires Python 3". Stop.
Would you mind having a look at what's happening there ?
I tested the failure using 'make check-venv PYTHON=python2' and the
success using 'make check-venv PYTHON=python3' but didn't think of the
default...
The quicker fix is to force PYTHON in .travis.yml, I'll prepare a patch.
thanks
-- PMM