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:
parent
2274817f6c
commit
81e2b198a8
34
configure
vendored
34
configure
vendored
@ -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")
|
||||||
|
Loading…
Reference in New Issue
Block a user