diff --git a/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile b/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile index b3c16951229..d0faf057679 100644 --- a/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile +++ b/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile @@ -84,7 +84,7 @@ RUN apt-get update && apt-get install -t jessie-backports -y cmake && apt-get cl # Python AuditWheel dependencies (needed to check manylinux1 compatibility) RUN apt-get install -y python3 python3-pip -RUN pip3 install auditwheel==1.10.0 +RUN pip3 install auditwheel==2.1.1 RUN mkdir /var/local/jenkins diff --git a/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile b/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile index c9054653067..8738137f5b2 100644 --- a/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile +++ b/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile @@ -77,7 +77,7 @@ RUN apt-get update && apt-get install -t jessie-backports -y cmake && apt-get cl # Python AuditWheel dependencies (needed to check manylinux1 compatibility) RUN apt-get install -y python3 python3-pip -RUN pip3 install auditwheel==1.10.0 +RUN pip3 install auditwheel==2.1.1 RUN mkdir /var/local/jenkins diff --git a/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile b/tools/dockerfile/grpc_artifact_python_manylinux1_x64/Dockerfile similarity index 74% rename from tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile rename to tools/dockerfile/grpc_artifact_python_manylinux1_x64/Dockerfile index c36ad6bec58..1ff6aa062a2 100644 --- a/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile +++ b/tools/dockerfile/grpc_artifact_python_manylinux1_x64/Dockerfile @@ -28,11 +28,4 @@ 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 +RUN /opt/python/cp38-cp38/bin/pip install cython diff --git a/tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile b/tools/dockerfile/grpc_artifact_python_manylinux1_x86/Dockerfile similarity index 74% rename from tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile rename to tools/dockerfile/grpc_artifact_python_manylinux1_x86/Dockerfile index a33e0517ae2..18b4cb62927 100644 --- a/tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile +++ b/tools/dockerfile/grpc_artifact_python_manylinux1_x86/Dockerfile @@ -28,12 +28,5 @@ 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 - +RUN /opt/python/cp37-cp37m/bin/pip install cython +RUN /opt/python/cp38-cp38/bin/pip install cython 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..66aefcaac28 --- /dev/null +++ b/tools/dockerfile/grpc_artifact_python_manylinux2010_x64/Dockerfile @@ -0,0 +1,32 @@ +# 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 +RUN /opt/python/cp37-cp37m/bin/pip install cython +RUN /opt/python/cp38-cp38/bin/pip install cython 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..f55a8785182 --- /dev/null +++ b/tools/dockerfile/grpc_artifact_python_manylinux2010_x86/Dockerfile @@ -0,0 +1,32 @@ +# 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 +RUN /opt/python/cp37-cp37m/bin/pip install cython +RUN /opt/python/cp38-cp38/bin/pip install cython diff --git a/tools/run_tests/artifacts/artifact_targets.py b/tools/run_tests/artifacts/artifact_targets.py index aa1d0c3bf22..762c1a32399 100644 --- a/tools/run_tests/artifacts/artifact_targets.py +++ b/tools/run_tests/artifacts/artifact_targets.py @@ -110,6 +110,8 @@ class PythonArtifact: self.arch = arch self.labels = ['artifact', 'python', platform, arch, py_version] self.py_version = py_version + if 'manylinux' in platform: + self.labels.append('linux') def pre_build_jobspecs(self): return [] @@ -135,7 +137,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 +152,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 +363,14 @@ 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'), + # TODO(https://github.com/grpc/grpc/issues/20283) + # Add manylinux2010_x86 targets once this issue is resolved. + 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('linux_extra', 'armv7', '2.7'), PythonArtifact('linux_extra', 'armv7', '3.4'), PythonArtifact('linux_extra', 'armv7', '3.5'), @@ -374,12 +379,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'), diff --git a/tools/run_tests/artifacts/build_artifact_python.sh b/tools/run_tests/artifacts/build_artifact_python.sh index 7393b88a768..1fc7fd67a6f 100755 --- a/tools/run_tests/artifacts/build_artifact_python.sh +++ b/tools/run_tests/artifacts/build_artifact_python.sh @@ -79,12 +79,12 @@ ${SETARCH_CMD} "${PYTHON}" tools/distrib/python/grpcio_tools/setup.py bdist_whee if [ "$GRPC_BUILD_MANYLINUX_WHEEL" != "" ] then for wheel in dist/*.whl; do - "${AUDITWHEEL}" show "$wheel" | tee /dev/stderr | grep \"manylinux1 + "${AUDITWHEEL}" show "$wheel" | tee /dev/stderr | grep -E -w "$AUDITWHEEL_PLAT" "${AUDITWHEEL}" repair "$wheel" -w "$ARTIFACT_DIR" rm "$wheel" done for wheel in tools/distrib/python/grpcio_tools/dist/*.whl; do - "${AUDITWHEEL}" show "$wheel" | tee /dev/stderr | grep \"manylinux1 + "${AUDITWHEEL}" show "$wheel" | tee /dev/stderr | grep -E -w "$AUDITWHEEL_PLAT" "${AUDITWHEEL}" repair "$wheel" -w "$ARTIFACT_DIR" rm "$wheel" done