diff --git a/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile b/tools/dockerfile/grpc_artifact_python_manylinux1_x64/Dockerfile similarity index 100% rename from tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile rename to tools/dockerfile/grpc_artifact_python_manylinux1_x64/Dockerfile diff --git a/tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile b/tools/dockerfile/grpc_artifact_python_manylinux1_x86/Dockerfile similarity index 100% rename from tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile rename to tools/dockerfile/grpc_artifact_python_manylinux1_x86/Dockerfile diff --git a/tools/dockerfile/grpc_artifact_python_manylinux2010_x64/Dockerfile b/tools/dockerfile/grpc_artifact_python_manylinux2010_x64/Dockerfile new file mode 100644 index 00000000000..37e2da568ae --- /dev/null +++ b/tools/dockerfile/grpc_artifact_python_manylinux2010_x64/Dockerfile @@ -0,0 +1,38 @@ +# Copyright 2019 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. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Docker file for building gRPC manylinux Python artifacts. + +FROM quay.io/pypa/manylinux2010_x86_64 + +# Update the package manager +RUN yum update -y +RUN yum install -y curl-devel expat-devel gettext-devel linux-headers openssl-devel zlib-devel gcc + +################################### +# Install Python build requirements +RUN /opt/python/cp27-cp27m/bin/pip install cython +RUN /opt/python/cp27-cp27mu/bin/pip install cython +RUN /opt/python/cp34-cp34m/bin/pip install cython +RUN /opt/python/cp35-cp35m/bin/pip install cython +RUN /opt/python/cp36-cp36m/bin/pip install cython +RUN /opt/python/cp37-cp37m/bin/pip install cython + +#################################################### +# Install auditwheel with fix for namespace packages +RUN git clone https://github.com/pypa/auditwheel /usr/local/src/auditwheel +RUN cd /usr/local/src/auditwheel && git checkout 2.1 +RUN /opt/python/cp36-cp36m/bin/pip install /usr/local/src/auditwheel +RUN rm /usr/local/bin/auditwheel +RUN cd /usr/local/bin && ln -s /opt/python/cp36-cp36m/bin/auditwheel diff --git a/tools/dockerfile/grpc_artifact_python_manylinux2010_x86/Dockerfile b/tools/dockerfile/grpc_artifact_python_manylinux2010_x86/Dockerfile new file mode 100644 index 00000000000..a4acb30d09d --- /dev/null +++ b/tools/dockerfile/grpc_artifact_python_manylinux2010_x86/Dockerfile @@ -0,0 +1,38 @@ +# Copyright 2019 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. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Docker file for building gRPC manylinux Python artifacts. + +FROM quay.io/pypa/manylinux2010_i686 + +# Update the package manager +RUN yum update -y +RUN yum install -y curl-devel expat-devel gettext-devel linux-headers openssl-devel zlib-devel gcc + +################################### +# Install Python build requirements +RUN /opt/python/cp27-cp27m/bin/pip install cython +RUN /opt/python/cp27-cp27mu/bin/pip install cython +RUN /opt/python/cp34-cp34m/bin/pip install cython +RUN /opt/python/cp35-cp35m/bin/pip install cython +RUN /opt/python/cp36-cp36m/bin/pip install cython +RUN /opt/python/cp37-cp37m/bin/pip install cython + +#################################################### +# Install auditwheel with fix for namespace packages +RUN git clone https://github.com/pypa/auditwheel /usr/local/src/auditwheel +RUN cd /usr/local/src/auditwheel && git checkout 2.1 +RUN /opt/python/cp36-cp36m/bin/pip install /usr/local/src/auditwheel +RUN rm /usr/local/bin/auditwheel +RUN cd /usr/local/bin && ln -s /opt/python/cp36-cp36m/bin/auditwheel diff --git a/tools/run_tests/artifacts/artifact_targets.py b/tools/run_tests/artifacts/artifact_targets.py index aa1d0c3bf22..e251e29dbf7 100644 --- a/tools/run_tests/artifacts/artifact_targets.py +++ b/tools/run_tests/artifacts/artifact_targets.py @@ -135,7 +135,7 @@ class PythonArtifact: timeout_seconds=60 * 60 * 5, docker_base_image='quay.io/grpc/raspbian_{}'.format(self.arch), extra_docker_args=extra_args) - elif self.platform == 'linux': + elif 'manylinux' in self.platform: if self.arch == 'x86': environ['SETARCH_CMD'] = 'linux32' # Inside the manylinux container, the python installations are located in @@ -150,10 +150,11 @@ class PythonArtifact: environ['CFLAGS'] = '-DGPR_MANYLINUX1=1' environ['GRPC_BUILD_GRPCIO_TOOLS_DEPENDENTS'] = 'TRUE' environ['GRPC_BUILD_MANYLINUX_WHEEL'] = 'TRUE' + return create_docker_jobspec( self.name, - 'tools/dockerfile/grpc_artifact_python_manylinux_%s' % - self.arch, + 'tools/dockerfile/grpc_artifact_python_%s_%s' % (self.platform, + self.arch), 'tools/run_tests/artifacts/build_artifact_python.sh', environ=environ, timeout_seconds=60 * 60, @@ -360,12 +361,18 @@ def targets(): CSharpExtArtifact('linux', 'android', arch_abi='armeabi-v7a'), CSharpExtArtifact('linux', 'android', arch_abi='x86'), CSharpExtArtifact('macos', 'ios'), - PythonArtifact('linux', 'x86', 'cp27-cp27m'), - PythonArtifact('linux', 'x86', 'cp27-cp27mu'), - PythonArtifact('linux', 'x86', 'cp34-cp34m'), - PythonArtifact('linux', 'x86', 'cp35-cp35m'), - PythonArtifact('linux', 'x86', 'cp36-cp36m'), - PythonArtifact('linux', 'x86', 'cp37-cp37m'), + PythonArtifact('manylinux1', 'x86', 'cp27-cp27m'), + PythonArtifact('manylinux1', 'x86', 'cp27-cp27mu'), + PythonArtifact('manylinux1', 'x86', 'cp34-cp34m'), + PythonArtifact('manylinux1', 'x86', 'cp35-cp35m'), + PythonArtifact('manylinux1', 'x86', 'cp36-cp36m'), + PythonArtifact('manylinux1', 'x86', 'cp37-cp37m'), + PythonArtifact('manylinux2010', 'x86', 'cp27-cp27m'), + PythonArtifact('manylinux2010', 'x86', 'cp27-cp27mu'), + PythonArtifact('manylinux2010', 'x86', 'cp34-cp34m'), + PythonArtifact('manylinux2010', 'x86', 'cp35-cp35m'), + PythonArtifact('manylinux2010', 'x86', 'cp36-cp36m'), + PythonArtifact('manylinux2010', 'x86', 'cp37-cp37m'), PythonArtifact('linux_extra', 'armv7', '2.7'), PythonArtifact('linux_extra', 'armv7', '3.4'), PythonArtifact('linux_extra', 'armv7', '3.5'), @@ -374,12 +381,18 @@ def targets(): PythonArtifact('linux_extra', 'armv6', '3.4'), PythonArtifact('linux_extra', 'armv6', '3.5'), PythonArtifact('linux_extra', 'armv6', '3.6'), - PythonArtifact('linux', 'x64', 'cp27-cp27m'), - PythonArtifact('linux', 'x64', 'cp27-cp27mu'), - PythonArtifact('linux', 'x64', 'cp34-cp34m'), - PythonArtifact('linux', 'x64', 'cp35-cp35m'), - PythonArtifact('linux', 'x64', 'cp36-cp36m'), - PythonArtifact('linux', 'x64', 'cp37-cp37m'), + PythonArtifact('manylinux1', 'x64', 'cp27-cp27m'), + PythonArtifact('manylinux1', 'x64', 'cp27-cp27mu'), + PythonArtifact('manylinux1', 'x64', 'cp34-cp34m'), + PythonArtifact('manylinux1', 'x64', 'cp35-cp35m'), + PythonArtifact('manylinux1', 'x64', 'cp36-cp36m'), + PythonArtifact('manylinux1', 'x64', 'cp37-cp37m'), + PythonArtifact('manylinux2010', 'x64', 'cp27-cp27m'), + PythonArtifact('manylinux2010', 'x64', 'cp27-cp27mu'), + PythonArtifact('manylinux2010', 'x64', 'cp34-cp34m'), + PythonArtifact('manylinux2010', 'x64', 'cp35-cp35m'), + PythonArtifact('manylinux2010', 'x64', 'cp36-cp36m'), + PythonArtifact('manylinux2010', 'x64', 'cp37-cp37m'), PythonArtifact('macos', 'x64', 'python2.7'), PythonArtifact('macos', 'x64', 'python3.4'), PythonArtifact('macos', 'x64', 'python3.5'),