[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 04/10] configure: protect against escaping venv when running
From: |
Daniel P . Berrangé |
Subject: |
Re: [PATCH 04/10] configure: protect against escaping venv when running Meson |
Date: |
Wed, 22 Feb 2023 15:04:48 +0000 |
User-agent: |
Mutt/2.2.9 (2022-11-12) |
On Wed, Feb 22, 2023 at 03:37:46PM +0100, Paolo Bonzini wrote:
> If neither --python nor --meson are specified, Meson's generated
> build.ninja will invoke Python script using the interpreter *that Meson
> itself is running under*; not the one identified by configure.
>
> This is only an issue if Meson's Python interpreter is not "the first
> one in the path", which is the one that is used if --python is not
> specified. A common case where this happen is when the "python3" binary
> comes from a virtual environment but Meson is not installed (with pip)
> in the virtual environment. In this case (presumably) whoever set up
> the venv wanted to use the venv's Python interpreter to build QEMU,
> while Meson might use a different one, for example an enterprise
> distro's older runtime.
>
> So, detect whether a virtual environment is setup, and if the virtual
> environment does not have Meson, use the meson submodule. Meson will
> then run under the virtual environment's Python interpreter.
I fear this could be somewhat confusing to contributors. If I have
meson in my $PATH, at a sufficient version, it would be surprising
to find QEMU had been using a different version instead.
I can understand wanting to make it "just work", but should we
perhaps issue a warning from configure when we're intentionally
ignoring an otherwise valid meson installation ?
>
> Reported-by: John Snow <jsnow@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> configure | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index 00415f0b48d7..4d66a958023e 100755
> --- a/configure
> +++ b/configure
> @@ -1047,8 +1047,18 @@ fi
> # Suppress writing compiled files
> python="$python -B"
>
> +has_meson() {
> + if test "${VIRTUAL_ENV:+set}" = set; then
> + # Ensure that Meson and Python come from the same virtual environment
> + test -x "${VIRTUAL_ENV}/bin/meson" &&
> + test "$(command -v meson)" -ef "${VIRTUAL_ENV}/bin/meson"
> + else
> + has meson
> + fi
> +}
> +
> if test -z "$meson"; then
> - if test "$explicit_python" = no && has meson && version_ge "$(meson
> --version)" 0.61.5; then
> + if test "$explicit_python" = no && has_meson && version_ge "$(meson
> --version)" 0.61.5; then
> meson=meson
> elif test "$git_submodules_action" != 'ignore' ; then
> meson=git
> --
> 2.39.1
>
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
- [PATCH v4 0/9] improvement to Python detection, preparation for dropping 3.6, Paolo Bonzini, 2023/02/22
- [PATCH 01/10] python: support pylint 2.16, Paolo Bonzini, 2023/02/22
- [PATCH 05/10] configure: Look for auxiliary Python installations, Paolo Bonzini, 2023/02/22
- [PATCH 02/10] python: drop pipenv, Paolo Bonzini, 2023/02/22
- [PATCH 03/10] meson: prefer 'sphinx-build' to 'sphinx-build-3', Paolo Bonzini, 2023/02/22
- [PATCH 04/10] configure: protect against escaping venv when running Meson, Paolo Bonzini, 2023/02/22
- Re: [PATCH 04/10] configure: protect against escaping venv when running Meson,
Daniel P . Berrangé <=
- [PATCH 08/10] ci, docker: update CentOS and OpenSUSE Python to non-EOL versions, Paolo Bonzini, 2023/02/22
- [PATCH 07/10] docs/devel: update and clarify lcitool instructions, Paolo Bonzini, 2023/02/22
- [PATCH 06/10] lcitool: update submodule, Paolo Bonzini, 2023/02/22
- [PATCH 09/10] Python: Drop support for Python 3.6, Paolo Bonzini, 2023/02/22