diff --git a/templates/tools/dockerfile/apt_get_python_27.include b/templates/tools/dockerfile/apt_get_python_27.include new file mode 100644 index 00000000000..c7642d8c79b --- /dev/null +++ b/templates/tools/dockerfile/apt_get_python_27.include @@ -0,0 +1,3 @@ +# Install Python 2.7 +RUN apt-get update && apt-get install -y python2.7 python-all-dev +RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7 \ No newline at end of file diff --git a/templates/tools/dockerfile/debian_testing_repo.include b/templates/tools/dockerfile/debian_testing_repo.include new file mode 100644 index 00000000000..1a5248e2264 --- /dev/null +++ b/templates/tools/dockerfile/debian_testing_repo.include @@ -0,0 +1,3 @@ +# Add Debian 'testing' repository +RUN echo 'deb http://ftp.de.debian.org/debian testing main' >> /etc/apt/sources.list +RUN echo 'APT::Default-Release "stable";' | tee -a /etc/apt/apt.conf.d/00local diff --git a/templates/tools/dockerfile/test/python_pyenv_x64/Dockerfile.template b/templates/tools/dockerfile/test/python_stretch_27_x64/Dockerfile.template similarity index 74% rename from templates/tools/dockerfile/test/python_pyenv_x64/Dockerfile.template rename to templates/tools/dockerfile/test/python_stretch_27_x64/Dockerfile.template index 1e013b742c4..067d68bc37b 100644 --- a/templates/tools/dockerfile/test/python_pyenv_x64/Dockerfile.template +++ b/templates/tools/dockerfile/test/python_stretch_27_x64/Dockerfile.template @@ -1,6 +1,6 @@ %YAML 1.2 --- | - # Copyright 2016 gRPC authors. + # Copyright 2018 The gRPC authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,12 +18,7 @@ <%include file="../../apt_get_basic.include"/> <%include file="../../gcp_api_libraries.include"/> - <%include file="../../python_deps.include"/> - <%include file="../../apt_get_pyenv.include"/> - # Install pip and virtualenv for Python 3.5 - RUN curl https://bootstrap.pypa.io/get-pip.py | python3.5 - RUN python3.5 -m pip install virtualenv - + <%include file="../../apt_get_python_27.include"/> <%include file="../../run_tests_addons.include"/> # Define the default command. CMD ["bash"] diff --git a/templates/tools/dockerfile/test/python_jessie_x64/Dockerfile.template b/templates/tools/dockerfile/test/python_stretch_34_x64/Dockerfile.template similarity index 81% rename from templates/tools/dockerfile/test/python_jessie_x64/Dockerfile.template rename to templates/tools/dockerfile/test/python_stretch_34_x64/Dockerfile.template index e73b839a284..6fe4fc4b679 100644 --- a/templates/tools/dockerfile/test/python_jessie_x64/Dockerfile.template +++ b/templates/tools/dockerfile/test/python_stretch_34_x64/Dockerfile.template @@ -1,6 +1,6 @@ %YAML 1.2 --- | - # Copyright 2015 gRPC authors. + # Copyright 2018 The gRPC authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,14 +14,14 @@ # See the License for the specific language governing permissions and # limitations under the License. - FROM debian:jessie + FROM debian:stretch <%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 + <%include file="../../apt_get_python_27.include"/> + + RUN apt-get update && apt-get install -y python3.4 python3-all-dev 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. diff --git a/templates/tools/dockerfile/test/python_stretch_35_x64/Dockerfile.template b/templates/tools/dockerfile/test/python_stretch_35_x64/Dockerfile.template index 34beaa8a494..e339bb5ced9 100644 --- a/templates/tools/dockerfile/test/python_stretch_35_x64/Dockerfile.template +++ b/templates/tools/dockerfile/test/python_stretch_35_x64/Dockerfile.template @@ -1,6 +1,6 @@ %YAML 1.2 --- | - # Copyright 2018 gRPC authors. + # Copyright 2018 The gRPC authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,10 +18,9 @@ <%include file="../../apt_get_basic.include"/> <%include file="../../gcp_api_libraries.include"/> + <%include file="../../apt_get_python_27.include"/> - RUN apt-get update && apt-get install -y python2.7 python3.5 python-all-dev python3-all-dev - - RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7 + RUN apt-get update && apt-get install -y python3.5 python3-all-dev RUN curl https://bootstrap.pypa.io/get-pip.py | python3.5 <%include file="../../run_tests_addons.include"/> diff --git a/templates/tools/dockerfile/test/python_stretch_36_x64/Dockerfile.template b/templates/tools/dockerfile/test/python_stretch_36_x64/Dockerfile.template index cba11a88fdb..7db3b7609e2 100644 --- a/templates/tools/dockerfile/test/python_stretch_36_x64/Dockerfile.template +++ b/templates/tools/dockerfile/test/python_stretch_36_x64/Dockerfile.template @@ -1,6 +1,6 @@ %YAML 1.2 --- | - # Copyright 2018 gRPC authors. + # Copyright 2018 The gRPC authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,13 +18,10 @@ <%include file="../../apt_get_basic.include"/> <%include file="../../gcp_api_libraries.include"/> - - # Install Python Versions from Debian 'testing' repository - RUN echo 'deb http://ftp.de.debian.org/debian testing main' >> /etc/apt/sources.list - RUN echo 'APT::Default-Release "stable";' | tee -a /etc/apt/apt.conf.d/00local - RUN apt-get update && apt-get -t testing install -y python2.7 python3.6 python-all-dev python3-all-dev + <%include file="../../apt_get_python_27.include"/> + <%include file="../../debian_testing_repo.include"/> - RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7 + RUN apt-get update && apt-get -t testing install -y python3.6 python3-all-dev RUN curl https://bootstrap.pypa.io/get-pip.py | python3.6 <%include file="../../run_tests_addons.include"/> diff --git a/templates/tools/dockerfile/test/python_stretch_37_x64/Dockerfile.template b/templates/tools/dockerfile/test/python_stretch_37_x64/Dockerfile.template index 9ae0ad14bba..7fb27980293 100644 --- a/templates/tools/dockerfile/test/python_stretch_37_x64/Dockerfile.template +++ b/templates/tools/dockerfile/test/python_stretch_37_x64/Dockerfile.template @@ -1,6 +1,6 @@ %YAML 1.2 --- | - # Copyright 2018 gRPC authors. + # Copyright 2018 The gRPC authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,13 +18,10 @@ <%include file="../../apt_get_basic.include"/> <%include file="../../gcp_api_libraries.include"/> - - # Install Python Versions from Debian 'testing' repository - RUN echo 'deb http://ftp.de.debian.org/debian testing main' >> /etc/apt/sources.list - RUN echo 'APT::Default-Release "stable";' | tee -a /etc/apt/apt.conf.d/00local - RUN apt-get update && apt-get -t testing install -y python2.7 python3.7 python-all-dev python3-all-dev + <%include file="../../apt_get_python_27.include"/> + <%include file="../../debian_testing_repo.include"/> - RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7 + RUN apt-get update && apt-get -t testing install -y python3.7 python3-all-dev RUN curl https://bootstrap.pypa.io/get-pip.py | python3.7 <%include file="../../run_tests_addons.include"/> diff --git a/tools/dockerfile/test/python_pyenv_x64/Dockerfile b/tools/dockerfile/test/python_stretch_27_x64/Dockerfile similarity index 52% rename from tools/dockerfile/test/python_pyenv_x64/Dockerfile rename to tools/dockerfile/test/python_stretch_27_x64/Dockerfile index d94ccc8c742..cd7a08ef2e1 100644 --- a/tools/dockerfile/test/python_pyenv_x64/Dockerfile +++ b/tools/dockerfile/test/python_stretch_27_x64/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2016 gRPC authors. +# Copyright 2018 The gRPC authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -53,49 +53,9 @@ RUN apt-get update && apt-get install -y time && apt-get clean RUN apt-get update && apt-get install -y python-pip && apt-get clean RUN pip install --upgrade google-api-python-client oauth2client -#==================== -# Python dependencies - -# Install dependencies - -RUN apt-get update && apt-get install -y \ - python-all-dev \ - python3-all-dev \ - python-pip - -# Install Python packages from PyPI -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 dependencies for pyenv -RUN apt-get update && apt-get install -y \ - libbz2-dev \ - libncurses5-dev \ - libncursesw5-dev \ - libreadline-dev \ - libsqlite3-dev \ - libssl-dev \ - llvm \ - mercurial \ - zlib1g-dev && apt-get clean - -# Install Pyenv and dev Python versions 3.{5,6,7} -RUN curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash -ENV PATH /root/.pyenv/bin:$PATH -RUN eval "$(pyenv init -)" -RUN eval "$(pyenv virtualenv-init -)" -RUN pyenv update -RUN pyenv install 3.5-dev -RUN pyenv install 3.6-dev -RUN pyenv install 3.7-dev -RUN pyenv install pypy-5.3.1 -RUN pyenv local 3.5-dev 3.6-dev 3.7-dev pypy-5.3.1 - -# Install pip and virtualenv for Python 3.5 -RUN curl https://bootstrap.pypa.io/get-pip.py | python3.5 -RUN python3.5 -m pip install virtualenv - +# Install Python 2.7 +RUN apt-get update && apt-get install -y python2.7 python-all-dev +RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7 RUN mkdir /var/local/jenkins diff --git a/tools/dockerfile/test/python_jessie_x64/Dockerfile b/tools/dockerfile/test/python_stretch_34_x64/Dockerfile similarity index 73% rename from tools/dockerfile/test/python_jessie_x64/Dockerfile rename to tools/dockerfile/test/python_stretch_34_x64/Dockerfile index a4c3a9f91e1..ed8fc93bef5 100644 --- a/tools/dockerfile/test/python_jessie_x64/Dockerfile +++ b/tools/dockerfile/test/python_stretch_34_x64/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2015 gRPC authors. +# Copyright 2018 The gRPC authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM debian:jessie +FROM debian:stretch # Install Git and basic packages. RUN apt-get update && apt-get install -y \ @@ -53,24 +53,12 @@ RUN apt-get update && apt-get install -y time && apt-get clean RUN apt-get update && apt-get install -y python-pip && apt-get clean RUN pip install --upgrade google-api-python-client oauth2client -#==================== -# Python dependencies +# Install Python 2.7 +RUN apt-get update && apt-get install -y python2.7 python-all-dev +RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7 -# Install dependencies - -RUN apt-get update && apt-get install -y \ - python-all-dev \ - python3-all-dev \ - python-pip - -# Install Python packages from PyPI -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 apt-get update && apt-get install -y python3.4 python3-all-dev RUN curl https://bootstrap.pypa.io/get-pip.py | python3.4 -RUN python3.4 -m pip install virtualenv RUN mkdir /var/local/jenkins diff --git a/tools/dockerfile/test/python_stretch_35_x64/Dockerfile b/tools/dockerfile/test/python_stretch_35_x64/Dockerfile index fa4d3b820f0..a42e3bf1720 100644 --- a/tools/dockerfile/test/python_stretch_35_x64/Dockerfile +++ b/tools/dockerfile/test/python_stretch_35_x64/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2018 gRPC authors. +# Copyright 2018 The gRPC authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -53,10 +53,11 @@ RUN apt-get update && apt-get install -y time && apt-get clean RUN apt-get update && apt-get install -y python-pip && apt-get clean RUN pip install --upgrade google-api-python-client oauth2client - -RUN apt-get update && apt-get install -y python2.7 python3.5 python-all-dev python3-all-dev - +# Install Python 2.7 +RUN apt-get update && apt-get install -y python2.7 python-all-dev RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7 + +RUN apt-get update && apt-get install -y python3.5 python3-all-dev RUN curl https://bootstrap.pypa.io/get-pip.py | python3.5 diff --git a/tools/dockerfile/test/python_stretch_36_x64/Dockerfile b/tools/dockerfile/test/python_stretch_36_x64/Dockerfile index 988ecd9bf6b..d028af611d4 100644 --- a/tools/dockerfile/test/python_stretch_36_x64/Dockerfile +++ b/tools/dockerfile/test/python_stretch_36_x64/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2018 gRPC authors. +# Copyright 2018 The gRPC authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -53,13 +53,15 @@ RUN apt-get update && apt-get install -y time && apt-get clean RUN apt-get update && apt-get install -y python-pip && apt-get clean RUN pip install --upgrade google-api-python-client oauth2client - -# Install Python Versions from Debian 'testing' repository +# Install Python 2.7 +RUN apt-get update && apt-get install -y python2.7 python-all-dev +RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7 +# Add Debian 'testing' repository RUN echo 'deb http://ftp.de.debian.org/debian testing main' >> /etc/apt/sources.list RUN echo 'APT::Default-Release "stable";' | tee -a /etc/apt/apt.conf.d/00local -RUN apt-get update && apt-get -t testing install -y python2.7 python3.6 python-all-dev python3-all-dev -RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7 + +RUN apt-get update && apt-get -t testing install -y python3.6 python3-all-dev RUN curl https://bootstrap.pypa.io/get-pip.py | python3.6 diff --git a/tools/dockerfile/test/python_stretch_37_x64/Dockerfile b/tools/dockerfile/test/python_stretch_37_x64/Dockerfile index 6da3379ed03..bc8ad1130cd 100644 --- a/tools/dockerfile/test/python_stretch_37_x64/Dockerfile +++ b/tools/dockerfile/test/python_stretch_37_x64/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2018 gRPC authors. +# Copyright 2018 The gRPC authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -53,13 +53,15 @@ RUN apt-get update && apt-get install -y time && apt-get clean RUN apt-get update && apt-get install -y python-pip && apt-get clean RUN pip install --upgrade google-api-python-client oauth2client - -# Install Python Versions from Debian 'testing' repository +# Install Python 2.7 +RUN apt-get update && apt-get install -y python2.7 python-all-dev +RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7 +# Add Debian 'testing' repository RUN echo 'deb http://ftp.de.debian.org/debian testing main' >> /etc/apt/sources.list RUN echo 'APT::Default-Release "stable";' | tee -a /etc/apt/apt.conf.d/00local -RUN apt-get update && apt-get -t testing install -y python2.7 python3.7 python-all-dev python3-all-dev -RUN curl https://bootstrap.pypa.io/get-pip.py | python2.7 + +RUN apt-get update && apt-get -t testing install -y python3.7 python3-all-dev RUN curl https://bootstrap.pypa.io/get-pip.py | python3.7 diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 86a46c10c92..4329557b40d 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -759,16 +759,15 @@ class PythonLanguage(object): self.python_manager_name(), _docker_arch_suffix(self.args.arch)) def python_manager_name(self): - if self.args.compiler == 'python3.5': - return 'stretch_35' - elif self.args.compiler == 'python3.6': - return 'stretch_36' - elif self.args.compiler == 'python3.7': - return 'stretch_37' + if self.args.compiler in [ + 'python2.7', 'python3.4', 'python3.5', 'python3.6', 'python3.7' + ]: + return 'stretch_%s' % re.sub(r'\D*', '', self.args.compiler) elif self.args.compiler == 'python_alpine': return 'alpine' else: - return 'jessie' + raise ValueError("No Docker Python manager available for %s" % + self.args.compiler) def _get_pythons(self, args): if args.arch == 'x86':