configure: create a python venv unconditionally

This patch changes the configure script so that it always creates and
uses a python virtual environment unconditionally.

Meson bootstrapping is temporarily altered to force the use of meson
from git or vendored source (as packaged in our source tarballs). A
subsequent commit restores the use of distribution-vendored Meson.

Signed-off-by: John Snow <jsnow@redhat.com>
Message-Id: <20230511035435.734312-16-jsnow@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
John Snow 2023-05-10 23:54:23 -04:00 committed by Paolo Bonzini
parent 2274817f6c
commit 81e2b198a8

34
configure vendored
View File

@ -625,7 +625,6 @@ check_py_version() {
python= python=
first_python= first_python=
if test -z "${PYTHON}"; then if test -z "${PYTHON}"; then
explicit_python=no
# A bare 'python' is traditionally python 2.x, but some distros # A bare 'python' is traditionally python 2.x, but some distros
# have it as python 3.x, so check in both places. # have it as python 3.x, so check in both places.
for binary in python3 python python3.11 python3.10 python3.9 python3.8 python3.7 python3.6; do for binary in python3 python python3.11 python3.10 python3.9 python3.8 python3.7 python3.6; do
@ -644,7 +643,6 @@ else
# Same as above, but only check the environment variable. # Same as above, but only check the environment variable.
has "${PYTHON}" || error_exit "The PYTHON environment variable does not point to an executable" has "${PYTHON}" || error_exit "The PYTHON environment variable does not point to an executable"
python=$(command -v "$PYTHON") python=$(command -v "$PYTHON")
explicit_python=yes
if check_py_version "$python"; then if check_py_version "$python"; then
# This one is good. # This one is good.
first_python= first_python=
@ -729,7 +727,7 @@ for opt do
;; ;;
--install=*) --install=*)
;; ;;
--python=*) python="$optarg" ; explicit_python=yes --python=*) python="$optarg"
;; ;;
--skip-meson) skip_meson=yes --skip-meson) skip_meson=yes
;; ;;
@ -1090,8 +1088,34 @@ if ! check_py_version "$python"; then
"Use --python=/path/to/python to specify a supported Python." "Use --python=/path/to/python to specify a supported Python."
fi fi
# Resolve PATH + suppress writing compiled files # Resolve PATH
python="$(command -v "$python") -B" python="$(command -v "$python")"
explicit_python=yes
# Create a Python virtual environment using our configured python.
# The stdout of this script will be the location of a symlink that
# points to the configured Python.
# Entry point scripts for pip, meson, and sphinx are generated if those
# packages are present.
# Defaults assumed for now:
# - venv is cleared if it exists already;
# - venv is allowed to use system packages;
# - all setup is performed **offline**;
# - No packages are installed by default;
# - pip is not installed into the venv when possible,
# but ensurepip is called as a fallback when necessary.
echo "python determined to be '$python'"
echo "python version: $($python --version)"
python="$($python -B "${source_path}/python/scripts/mkvenv.py" create pyvenv)"
if test "$?" -ne 0 ; then
error_exit "python venv creation failed"
fi
# Suppress writing compiled files
python="$python -B"
has_meson() { has_meson() {
local python_dir=$(dirname "$python") local python_dir=$(dirname "$python")