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


Reply via email to