[PATCH v3 11/15] python: add 'make check-dev' invocation

John Snow posted 15 patches 4 years, 7 months ago
Maintainers: "Philippe Mathieu-Daudé" <f4bug@amsat.org>, Eduardo Habkost <ehabkost@redhat.com>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Willian Rampazzo <willianr@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>, John Snow <jsnow@redhat.com>, Thomas Huth <thuth@redhat.com>, Cleber Rosa <crosa@redhat.com>
[PATCH v3 11/15] python: add 'make check-dev' invocation
Posted by John Snow 4 years, 7 months ago
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-dev: 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, 33 insertions(+), 2 deletions(-)

diff --git a/python/Makefile b/python/Makefile
index d34c4e35d9..8f8e1999c0 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -1,3 +1,5 @@
+QEMU_VENV_DIR=.dev-venv
+
 .PHONY: help
 help:
 	@echo "python packaging help:"
@@ -14,6 +16,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-dev:"
+	@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 ""
@@ -22,6 +29,9 @@ help:
 	@echo "make pipenv"
 	@echo "    Creates pipenv's virtual environment (.venv)"
 	@echo ""
+	@echo "make dev-venv"
+	@echo "    Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))"
+	@echo ""
 	@echo "make clean:      remove package build output."
 	@echo ""
 	@echo "make distclean:  remove venv files, qemu package forwarder,"
@@ -38,9 +48,30 @@ pipenv: .venv
 check-pipenv: pipenv
 	@pipenv run make check
 
+.PHONY: dev-venv
+dev-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)
+
+.PHONY: check-dev
+check-dev: dev-venv
+	@(							\
+		echo "ACTIVATE $(QEMU_VENV_DIR)";		\
+		. $(QEMU_VENV_DIR)/bin/activate;		\
+		make check;					\
+	)
+
 .PHONY: develop
 develop:
-	pip3 install -e .[devel]
+	pip3 install --disable-pip-version-check -e .[devel]
 
 .PHONY: check
 check:
@@ -56,4 +87,4 @@ clean:
 
 .PHONY: distclean
 distclean: clean
-	rm -rf qemu.egg-info/ .venv/ .tox/ dist/
+	rm -rf qemu.egg-info/ .venv/ .tox/ $(QEMU_VENV_DIR) dist/
-- 
2.31.1


Re: [PATCH v3 11/15] python: add 'make check-dev' invocation
Posted by Willian Rampazzo 4 years, 7 months ago
On Tue, Jun 29, 2021 at 6:43 PM John Snow <jsnow@redhat.com> wrote:
>
> 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-dev: 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, 33 insertions(+), 2 deletions(-)
>

Reviewed-by: Willian Rampazzo <willianr@redhat.com>


Re: [PATCH v3 11/15] python: add 'make check-dev' invocation
Posted by John Snow 4 years, 7 months ago
On Wed, Jun 30, 2021 at 10:41 AM Willian Rampazzo <wrampazz@redhat.com>
wrote:

> On Tue, Jun 29, 2021 at 6:43 PM John Snow <jsnow@redhat.com> wrote:
> >
> > 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-dev: 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, 33 insertions(+), 2 deletions(-)
> >
>
> Reviewed-by: Willian Rampazzo <willianr@redhat.com>
>
>
Thanks. I am squashing in a hotfix here to add .dev-venv to .gitignore,
too. Not worth an entire respin for that.
(Assuming that's gonna be A-OK with both of you.)
Re: [PATCH v3 11/15] python: add 'make check-dev' invocation
Posted by Wainer dos Santos Moschetta 4 years, 7 months ago
On 6/30/21 11:58 AM, John Snow wrote:
>
>
> On Wed, Jun 30, 2021 at 10:41 AM Willian Rampazzo <wrampazz@redhat.com 
> <mailto:wrampazz@redhat.com>> wrote:
>
>     On Tue, Jun 29, 2021 at 6:43 PM John Snow <jsnow@redhat.com
>     <mailto:jsnow@redhat.com>> wrote:
>     >
>     > 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-dev: 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
>     <mailto:jsnow@redhat.com>>
>     > ---
>     >  python/Makefile | 35 +++++++++++++++++++++++++++++++++--
>     >  1 file changed, 33 insertions(+), 2 deletions(-)
>     >
>
>     Reviewed-by: Willian Rampazzo <willianr@redhat.com
>     <mailto:willianr@redhat.com>>
>
>
> Thanks. I am squashing in a hotfix here to add .dev-venv to 
> .gitignore, too. Not worth an entire respin for that.
> (Assuming that's gonna be A-OK with both of you.)

Acked-by: Wainer dos Santos Moschetta <wainersm@redhat.com>

Re: [PATCH v3 11/15] python: add 'make check-dev' invocation
Posted by Willian Rampazzo 4 years, 7 months ago
On Wed, Jun 30, 2021 at 11:58 AM John Snow <jsnow@redhat.com> wrote:
>
>
>
> On Wed, Jun 30, 2021 at 10:41 AM Willian Rampazzo <wrampazz@redhat.com> wrote:
>>
>> On Tue, Jun 29, 2021 at 6:43 PM John Snow <jsnow@redhat.com> wrote:
>> >
>> > 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-dev: 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, 33 insertions(+), 2 deletions(-)
>> >
>>
>> Reviewed-by: Willian Rampazzo <willianr@redhat.com>
>>
>
> Thanks. I am squashing in a hotfix here to add .dev-venv to .gitignore, too. Not worth an entire respin for that.
> (Assuming that's gonna be A-OK with both of you.)
>

Acked-by: Willian Rampazzo <willianr@redhat.com>


Re: [PATCH v3 11/15] python: add 'make check-dev' invocation
Posted by Wainer dos Santos Moschetta 4 years, 7 months ago
On 6/29/21 6:43 PM, John Snow wrote:
> 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-dev: 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, 33 insertions(+), 2 deletions(-)

Tested-by: Wainer dos Santos Moschetta <wainersm@redhat.com>

Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>

It was tested as I mentioned on patch 10.

>
> diff --git a/python/Makefile b/python/Makefile
> index d34c4e35d9..8f8e1999c0 100644
> --- a/python/Makefile
> +++ b/python/Makefile
> @@ -1,3 +1,5 @@
> +QEMU_VENV_DIR=.dev-venv
> +
>   .PHONY: help
>   help:
>   	@echo "python packaging help:"
> @@ -14,6 +16,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-dev:"
> +	@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 ""
> @@ -22,6 +29,9 @@ help:
>   	@echo "make pipenv"
>   	@echo "    Creates pipenv's virtual environment (.venv)"
>   	@echo ""
> +	@echo "make dev-venv"
> +	@echo "    Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))"
> +	@echo ""
>   	@echo "make clean:      remove package build output."
>   	@echo ""
>   	@echo "make distclean:  remove venv files, qemu package forwarder,"
> @@ -38,9 +48,30 @@ pipenv: .venv
>   check-pipenv: pipenv
>   	@pipenv run make check
>   
> +.PHONY: dev-venv
> +dev-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)
> +
> +.PHONY: check-dev
> +check-dev: dev-venv
> +	@(							\
> +		echo "ACTIVATE $(QEMU_VENV_DIR)";		\
> +		. $(QEMU_VENV_DIR)/bin/activate;		\
> +		make check;					\
> +	)
> +
>   .PHONY: develop
>   develop:
> -	pip3 install -e .[devel]
> +	pip3 install --disable-pip-version-check -e .[devel]
>   
>   .PHONY: check
>   check:
> @@ -56,4 +87,4 @@ clean:
>   
>   .PHONY: distclean
>   distclean: clean
> -	rm -rf qemu.egg-info/ .venv/ .tox/ dist/
> +	rm -rf qemu.egg-info/ .venv/ .tox/ $(QEMU_VENV_DIR) dist/