Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
jnsnow authored and bonzini committed May 16, 2023
1 parent 288ea03 commit 46cf5ee
Showing 1 changed file with 29 additions and 5 deletions.
34 changes: 29 additions & 5 deletions configure
Expand Up @@ -625,7 +625,6 @@ check_py_version() {
python=
first_python=
if test -z "${PYTHON}"; then
explicit_python=no
# A bare 'python' is traditionally python 2.x, but some distros
# 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
Expand All @@ -644,7 +643,6 @@ else
# Same as above, but only check the environment variable.
has "${PYTHON}" || error_exit "The PYTHON environment variable does not point to an executable"
python=$(command -v "$PYTHON")
explicit_python=yes
if check_py_version "$python"; then
# This one is good.
first_python=
Expand Down Expand Up @@ -729,7 +727,7 @@ for opt do
;;
--install=*)
;;
--python=*) python="$optarg" ; explicit_python=yes
--python=*) python="$optarg"
;;
--skip-meson) skip_meson=yes
;;
Expand Down Expand Up @@ -1090,8 +1088,34 @@ if ! check_py_version "$python"; then
"Use --python=/path/to/python to specify a supported Python."
fi

# Resolve PATH + suppress writing compiled files
python="$(command -v "$python") -B"
# Resolve PATH
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() {
local python_dir=$(dirname "$python")
Expand Down

0 comments on commit 46cf5ee

Please sign in to comment.