aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Matt Kwong <mattkwong@google.com>2018-05-04 12:00:25 -0700
committerGravatar Matt Kwong <mattkwong@google.com>2018-05-04 16:16:29 -0700
commitfcd04ec121664de621ceb874c44eab5fbdc6bbd7 (patch)
tree2bf84940cd17ecf4aa31b63744ace38da1f90b5c
parentd5f659a2d265931f86aef3c92ad7a977c3bae8a5 (diff)
Remove the fallback when creating Python virtual env
See https://github.com/grpc/grpc/issues/15253 for more context. The original behavior when running Python tests is to try to create a virtual env with the specifed Python version. If there is an issue with that, fallback to the system's default Python version. This leads to misleading test results, so removing the fallback and failing the test when virtual env fails to instantiate the specified Python version is the new behavior.
-rw-r--r--templates/tools/dockerfile/test/python_jessie_x64/Dockerfile.template4
-rw-r--r--tools/dockerfile/test/python_jessie_x64/Dockerfile4
-rwxr-xr-xtools/run_tests/helper_scripts/build_python.sh15
3 files changed, 11 insertions, 12 deletions
diff --git a/templates/tools/dockerfile/test/python_jessie_x64/Dockerfile.template b/templates/tools/dockerfile/test/python_jessie_x64/Dockerfile.template
index dba6a227f2..e73b839a28 100644
--- a/templates/tools/dockerfile/test/python_jessie_x64/Dockerfile.template
+++ b/templates/tools/dockerfile/test/python_jessie_x64/Dockerfile.template
@@ -19,6 +19,10 @@
<%include file="../../apt_get_basic.include"/>
<%include file="../../gcp_api_libraries.include"/>
<%include file="../../python_deps.include"/>
+ # Install pip and virtualenv for Python 3.4
+ RUN curl https://bootstrap.pypa.io/get-pip.py | python3.4
+ RUN python3.4 -m pip install virtualenv
+
<%include file="../../run_tests_addons.include"/>
# Define the default command.
CMD ["bash"]
diff --git a/tools/dockerfile/test/python_jessie_x64/Dockerfile b/tools/dockerfile/test/python_jessie_x64/Dockerfile
index 41b670c06c..bd9d55ed8a 100644
--- a/tools/dockerfile/test/python_jessie_x64/Dockerfile
+++ b/tools/dockerfile/test/python_jessie_x64/Dockerfile
@@ -68,6 +68,10 @@ RUN pip install --upgrade pip==10.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.2.post1 six==1.10.0 twisted==17.5.0
+# Install pip and virtualenv for Python 3.4
+RUN curl https://bootstrap.pypa.io/get-pip.py | python3.4
+RUN python3.4 -m pip install virtualenv
+
# Prepare ccache
RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
RUN ln -s /usr/bin/ccache /usr/local/bin/g++
diff --git a/tools/run_tests/helper_scripts/build_python.sh b/tools/run_tests/helper_scripts/build_python.sh
index b0a6f0f4d4..cdcb2aa116 100755
--- a/tools/run_tests/helper_scripts/build_python.sh
+++ b/tools/run_tests/helper_scripts/build_python.sh
@@ -112,10 +112,6 @@ export CFLAGS="-I$ROOT/include -std=gnu99 -fno-wrapv $CFLAGS"
export GRPC_PYTHON_BUILD_WITH_CYTHON=1
export LANG=en_US.UTF-8
-# Default python on the host to fall back to when instantiating e.g. the
-# virtualenv.
-HOST_PYTHON=${HOST_PYTHON:-python}
-
# If ccache is available on Linux, use it.
if [ "$(is_linux)" ]; then
# We're not on Darwin (Mac OS X)
@@ -132,14 +128,9 @@ fi
# Perform build operations #
############################
-# Instantiate the virtualenv, preferring to do so from the relevant python
-# version. Even if these commands fail (e.g. on Windows due to name conflicts)
-# it's possible that the virtualenv is still usable and we trust the tester to
-# be able to 'figure it out' instead of us e.g. doing potentially expensive and
-# unnecessary error recovery by `rm -rf`ing the virtualenv.
-($PYTHON -m virtualenv "$VENV" ||
- $HOST_PYTHON -m virtualenv -p "$PYTHON" "$VENV" ||
- true)
+# Instantiate the virtualenv from the Python version passed in.
+$PYTHON -m pip install virtualenv
+$PYTHON -m virtualenv "$VENV"
VENV_PYTHON=$(script_realpath "$VENV/$VENV_RELATIVE_PYTHON")
# See https://github.com/grpc/grpc/issues/14815 for more context. We cannot rely