From: Paolo Bonzini <pbonzini@redhat.com>
To: John Snow <jsnow@redhat.com>, qemu-devel@nongnu.org
Cc: qemu-block@nongnu.org, "Cleber Rosa" <crosa@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Hanna Reitz" <hreitz@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Daniel Berrange" <berrange@redhat.com>,
"Kevin Wolf" <kwolf@redhat.com>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
"Beraldo Leal" <bleal@redhat.com>
Subject: Re: [RFC PATCH 0/9] tests: run python tests under the build/tests/venv environment
Date: Fri, 13 May 2022 12:20:59 +0200 [thread overview]
Message-ID: <0248b5df-dbc6-48bf-b5c8-e5c73decc1c1@redhat.com> (raw)
In-Reply-To: <20220513000609.197906-1-jsnow@redhat.com>
On 5/13/22 02:06, John Snow wrote:
> The only downside I am really frowning at is that I will have to
> replicate some "update the venv if it's outdated" logic that is usually
> handled by the Make system in the venv bootstrapper. Still, I think it's
> probably the only way to hit all of the requirements here without trying
> to concoct a fairly complex Makefile.
>
> any thoughts? If not, I'll just move on to trying to hack up that
> version next instead.
I would not even bother with keeping the venv up to date. Just initialize
it in configure, this is exactly what configure remains useful for in the
Meson-based world:
- add configure options --enable-python-qemu={enabled,system,internal,pip,
auto}/--disable-python-qemu (auto means system>internal>pip>disabled; enabled means
system>internal>pip>error) and matching CONFIG_PYTHON_QEMU=y to
config-host.mak
- use CONFIG_PYTHON_QEMU to enable/disable iotests in tests/qemu-iotests/meson.build
- add a configure option --enable-avocado=
{system,pip,auto,enabled}/--disable-avocado and matching
CONFIG_AVOCADO=y to config-host.mak
- use it to enable/disable acceptance tests in tests/Makefile.include
- build the venv in configure and use the options to pick the right pip install
commands, like
has_python_module() {
$python -c "import $1" > /dev/null 2>&1
}
# do_pip VENV-PATH VAR PACKAGE [PATH] -- PIP-OPTIONS
do_pip() {
local num_args source
num_args=5
test $4 = '--' && num_args=4
eval source=\$$2
# Try to resolve the package using a system install
case $source in
enabled|auto|system)
if has_python_module $3; then
source=system
elif test $source = system; then
error_exit "Python package $3 not installed"
fi
esac
# See if a bundled copy is present
case $source in
enabled|auto|internal)
if test $num_args = 5 && test -f $4/setup.cfg; then
source=internal
elif test $source = internal; then
error_exit "Sources for Python package $3 not found in the QEMU source tree"
fi
esac
# Install the bundled copy or let pip download the package
case $source in
internal)
# The Pip error message should be clear enough
(cd $1 && . bin/activate && pip install "$@") || exit 1
;;
enabled|auto|pip)
shift $num_args
if (cd $1 && . bin/activate && pip install "$@"); then
source=pip
elif test $source = auto; then
source=disabled
else
# The Pip error message should be clear enough
exit 1
fi
;;
esac
eval $2=\$source
}
rm -rf venv/
$python -m venv venv/
do_pip venv/ enable_python_qemu qemu.qmp python/qemu -- qemu.qmp
do_pip venv/ enable_avocado avocado -- -r tests/requirements.txt
next prev parent reply other threads:[~2022-05-13 10:23 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-13 0:06 [RFC PATCH 0/9] tests: run python tests under the build/tests/venv environment John Snow
2022-05-13 0:06 ` [RFC PATCH 1/9] python: update for mypy 0.950 John Snow
2022-05-13 8:42 ` Paolo Bonzini
2022-05-13 14:09 ` John Snow
2022-05-13 0:06 ` [RFC PATCH 2/9] tests: add "TESTS_PYTHON" variable to Makefile John Snow
2022-05-13 8:23 ` Paolo Bonzini
2022-05-13 0:06 ` [RFC PATCH 3/9] tests: install "qemu" namespace package into venv John Snow
2022-05-13 8:26 ` Paolo Bonzini
2022-05-13 14:01 ` John Snow
2022-05-13 0:06 ` [RFC PATCH 4/9] tests: silence pip upgrade warnings during venv creation John Snow
2022-05-13 8:27 ` Paolo Bonzini
2022-05-13 14:02 ` John Snow
2022-05-13 0:06 ` [RFC PATCH 5/9] tests: use tests/venv to run basevm.py-based scripts John Snow
2022-05-13 8:33 ` Paolo Bonzini
2022-05-13 0:06 ` [RFC PATCH 6/9] tests: add check-venv as a dependency of check and check-block John Snow
2022-05-13 8:41 ` Paolo Bonzini
2022-05-13 14:12 ` John Snow
2022-05-13 15:34 ` Paolo Bonzini
2022-05-13 16:08 ` John Snow
2022-05-13 0:06 ` [RFC PATCH 7/9] tests: add check-venv to build-tcg-disabled CI recipe John Snow
2022-05-13 8:41 ` Paolo Bonzini
2022-05-13 0:06 ` [RFC PATCH 8/9] iotests: fix source directory location John Snow
2022-05-13 8:35 ` Paolo Bonzini
2022-05-13 0:06 ` [RFC PATCH 9/9] iotests: use tests/venv for running tests John Snow
2022-05-13 8:38 ` Paolo Bonzini
2022-05-13 14:38 ` John Snow
2022-05-13 15:33 ` Paolo Bonzini
2022-05-13 16:00 ` John Snow
2022-05-14 15:55 ` John Snow
2022-05-16 7:41 ` Paolo Bonzini
2022-05-17 23:51 ` John Snow
2022-05-18 10:38 ` Paolo Bonzini
2022-05-13 8:35 ` [RFC PATCH 0/9] tests: run python tests under the build/tests/venv environment Daniel P. Berrangé
2022-05-13 9:45 ` Paolo Bonzini
2022-05-13 10:29 ` Daniel P. Berrangé
2022-05-13 15:55 ` John Snow
2022-05-13 16:07 ` Daniel P. Berrangé
2022-05-13 16:49 ` Paolo Bonzini
2022-05-13 19:09 ` John Snow
2022-05-13 12:57 ` Kevin Wolf
2022-05-13 15:25 ` John Snow
2022-05-13 10:20 ` Paolo Bonzini [this message]
2022-05-13 15:39 ` John Snow
2022-05-13 16:07 ` Paolo Bonzini
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=0248b5df-dbc6-48bf-b5c8-e5c73decc1c1@redhat.com \
--to=pbonzini@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=berrange@redhat.com \
--cc=bleal@redhat.com \
--cc=crosa@redhat.com \
--cc=f4bug@amsat.org \
--cc=hreitz@redhat.com \
--cc=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
--cc=wainersm@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.