qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Thomas Huth" <thuth@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
	"Willian Rampazzo" <willianr@redhat.com>,
	"Cleber Rosa" <crosa@redhat.com>, "John Snow" <jsnow@redhat.com>
Subject: [PATCH 08/11] python: add 'make check-venv' invocation
Date: Fri, 25 Jun 2021 11:45:37 -0400	[thread overview]
Message-ID: <20210625154540.783306-9-jsnow@redhat.com> (raw)
In-Reply-To: <20210625154540.783306-1-jsnow@redhat.com>

This is a *third* way to run the Python tests. Unlike the first two
(check-pipenv, check-tox), this version does not require any specific
interpreter version -- making it a lot easier to tell people to run it
as a quick smoketest prior to submission to GitLab CI.

Summary:

  Checked via GitLab CI:
    - check-pipenv: tests our oldest python & dependencies
    - check-tox: tests newest dependencies on all non-EOL python versions
  Executed only incidentally:
    - check-venv: tests newest dependencies on whichever python version

('make check' does not set up any environment at all, it just runs the
tests in your current environment. All four invocations perform the
exact same tests, just in different execution environments.)

Signed-off-by: John Snow <jsnow@redhat.com>
---
 python/Makefile | 35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/python/Makefile b/python/Makefile
index 5cb8378b81..76bb24e671 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -1,4 +1,6 @@
-.PHONY: help pipenv check-pipenv check clean distclean develop
+.PHONY: help pipenv venv check-venv check-pipenv check clean distclean develop
+
+QEMU_VENV_DIR=~/.cache/qemu-pyvenv
 
 help:
 	@echo "python packaging help:"
@@ -15,6 +17,11 @@ help:
 	@echo "    Requires: Python 3.6-3.10 and tox."
 	@echo "    Hint (Fedora): 'sudo dnf install python3-tox python3.10'"
 	@echo ""
+	@echo "make check-venv:"
+	@echo "    Run tests in a venv against your default python3 version."
+	@echo "    These tests use the newest dependencies."
+	@echo "    Requires: Python 3.x"
+	@echo ""
 	@echo "make develop:    Install deps for 'make check', and"
 	@echo "                 the qemu libs in editable/development mode."
 	@echo ""
@@ -23,6 +30,9 @@ help:
 	@echo "make pipenv"
 	@echo "    Creates pipenv's virtual environment (.venv)"
 	@echo ""
+	@echo "make venv"
+	@echo "    Creates a simple venv for check-venv. ($(QEMU_VENV_DIR))"
+	@echo ""
 	@echo "make clean:      remove package build output."
 	@echo ""
 	@echo "make distclean:  remove venv files, qemu package forwarder,"
@@ -37,8 +47,27 @@ pipenv: .venv
 check-pipenv: pipenv
 	@pipenv run make check
 
+venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate
+$(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg
+	@echo "VENV $(QEMU_VENV_DIR)"
+	@python3 -m venv $(QEMU_VENV_DIR)
+	@(							\
+		echo "ACTIVATE $(QEMU_VENV_DIR)";		\
+		. $(QEMU_VENV_DIR)/bin/activate;		\
+		echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)";	\
+		make develop 1>/dev/null;			\
+	)
+	@touch $(QEMU_VENV_DIR)
+
+check-venv: venv
+	@(							\
+		echo "ACTIVATE $(QEMU_VENV_DIR)";		\
+		. $(QEMU_VENV_DIR)/bin/activate;		\
+		make check;					\
+	)
+
 develop:
-	pip3 install -e .[devel]
+	pip3 install --disable-pip-version-check -e .[devel]
 
 check:
 	@avocado --config avocado.cfg run tests/
@@ -50,4 +79,4 @@ clean:
 	python3 setup.py clean --all
 
 distclean: clean
-	rm -rf qemu.egg-info/ .venv/ .tox/ dist/
+	rm -rf qemu.egg-info/ .venv/ .tox/ $(QEMU_VENV_DIR) dist/
-- 
2.31.1



  parent reply	other threads:[~2021-06-25 15:54 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-25 15:45 [PATCH 00/11] Python: packaging cleanups John Snow
2021-06-25 15:45 ` [PATCH 01/11] python: expose typing information via PEP 561 John Snow
2021-06-25 18:16   ` Willian Rampazzo
2021-06-28 20:11   ` Wainer dos Santos Moschetta
2021-06-28 20:28     ` John Snow
2021-06-25 15:45 ` [PATCH 02/11] python: Remove global pylint suppressions John Snow
2021-06-25 18:18   ` Willian Rampazzo
2021-06-28 20:14   ` Wainer dos Santos Moschetta
2021-06-25 15:45 ` [PATCH 03/11] python: Re-lock pipenv at *oldest* supported versions John Snow
2021-06-25 18:28   ` Willian Rampazzo
2021-06-28 20:30   ` Wainer dos Santos Moschetta
2021-06-28 20:38     ` John Snow
2021-06-29 16:44       ` Wainer dos Santos Moschetta
2021-06-25 15:45 ` [PATCH 04/11] python: README.rst touchups John Snow
2021-06-25 18:23   ` Willian Rampazzo
2021-06-25 18:26     ` John Snow
2021-06-28 20:35   ` Wainer dos Santos Moschetta
2021-06-25 15:45 ` [PATCH 05/11] python: Add no-install usage instructions John Snow
2021-06-25 18:25   ` Willian Rampazzo
2021-06-28 20:56   ` Wainer dos Santos Moschetta
2021-06-25 15:45 ` [PATCH 06/11] python: rename 'venv-check' target to 'check-pipenv' John Snow
2021-06-25 18:27   ` Willian Rampazzo
2021-06-28 21:09   ` Wainer dos Santos Moschetta
2021-06-25 15:45 ` [PATCH 07/11] python: update help text for check-tox John Snow
2021-06-25 18:29   ` Willian Rampazzo
2021-06-28 21:16   ` Wainer dos Santos Moschetta
2021-06-29 15:40     ` John Snow
2021-06-29 16:45       ` Wainer dos Santos Moschetta
2021-06-25 15:45 ` John Snow [this message]
2021-06-25 18:36   ` [PATCH 08/11] python: add 'make check-venv' invocation Willian Rampazzo
2021-06-25 18:38     ` John Snow
2021-06-25 19:01       ` Willian Rampazzo
2021-06-25 19:12         ` John Snow
2021-06-28 21:40   ` Wainer dos Santos Moschetta
2021-06-29 15:45     ` John Snow
2021-06-25 15:45 ` [PATCH 09/11] python: Update help text on 'make check', 'make develop' John Snow
2021-06-25 18:37   ` Willian Rampazzo
2021-06-28 21:41   ` Wainer dos Santos Moschetta
2021-06-25 15:45 ` [PATCH 10/11] python: Update help text on 'make clean', 'make distclean' John Snow
2021-06-25 18:37   ` Willian Rampazzo
2021-06-28 21:44   ` Wainer dos Santos Moschetta
2021-06-25 15:45 ` [PATCH 11/11] python: remove auto-generated pyproject.toml file John Snow
2021-06-25 18:40   ` Willian Rampazzo
2021-06-28 21:48   ` Wainer dos Santos Moschetta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210625154540.783306-9-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=f4bug@amsat.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    --cc=wainersm@redhat.com \
    --cc=willianr@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).