From 56ad4d964af22cc090f5a039f22c2313dca5fc3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Gu=C3=A9rin?= Date: Mon, 6 Feb 2023 21:21:59 +0100 Subject: [PATCH] Support python 3.11 on aarch64 (#32270) * Support python 3.11 on aarch64 Fixes https://github.com/grpc/grpc/issues/30927 * Change base tag to something more specific * Update current version --------- Co-authored-by: Richard Belleville --- ...python_manylinux2014_aarch64.current_version | 2 +- .../Dockerfile | 17 ++++------------- tools/run_tests/artifacts/artifact_targets.py | 5 ++++- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/tools/dockerfile/grpc_artifact_python_manylinux2014_aarch64.current_version b/tools/dockerfile/grpc_artifact_python_manylinux2014_aarch64.current_version index eb794ee58b5..0e79fda49d6 100644 --- a/tools/dockerfile/grpc_artifact_python_manylinux2014_aarch64.current_version +++ b/tools/dockerfile/grpc_artifact_python_manylinux2014_aarch64.current_version @@ -1 +1 @@ -us-docker.pkg.dev/grpc-testing/testing-images-public/grpc_artifact_python_manylinux2014_aarch64:664dcb74d271052b45a3f6b0bacc8fb215f294f1@sha256:35470bd34b7ad6c05c397495c4d537400f78c82256d7c7e79b25d9f5ab651c8c \ No newline at end of file +us-docker.pkg.dev/grpc-testing/testing-images-public/grpc_artifact_python_manylinux2014_aarch64:8f31a9a0d9098577fa01bacbfc2940e7894fa0bd@sha256:9ea49947ec64337cdd40086912b59ace394179f87cf42531a077c5e5b86c1fe0 \ No newline at end of file diff --git a/tools/dockerfile/grpc_artifact_python_manylinux2014_aarch64/Dockerfile b/tools/dockerfile/grpc_artifact_python_manylinux2014_aarch64/Dockerfile index d249c03c38d..f1648cd1bf8 100644 --- a/tools/dockerfile/grpc_artifact_python_manylinux2014_aarch64/Dockerfile +++ b/tools/dockerfile/grpc_artifact_python_manylinux2014_aarch64/Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM dockcross/manylinux2014-aarch64:20210826-19322ba +FROM dockcross/manylinux2014-aarch64:20230202-a61e35f # manylinux_2_17 is the preferred alias of manylinux2014 ENV AUDITWHEEL_PLAT manylinux_2_17_$AUDITWHEEL_ARCH @@ -24,13 +24,14 @@ RUN /opt/python/cp37-cp37m/bin/pip install --upgrade cython RUN /opt/python/cp38-cp38/bin/pip install --upgrade cython RUN /opt/python/cp39-cp39/bin/pip install --upgrade cython RUN /opt/python/cp310-cp310/bin/pip install --upgrade cython +RUN /opt/python/cp311-cp311/bin/pip install --upgrade cython #================= # Install ccache # Install ccache from source since ccache 3.x packaged with most linux distributions # does not support Redis backend for caching. -RUN unset CMAKE_TOOLCHAIN_FILE && unset AS AR CC CPP CXX LD \ +RUN unset CMAKE_TOOLCHAIN_FILE && unset AS AR CC CPP CXX LD STRIP OBJCOPY \ && curl -sSL -o ccache.tar.gz https://github.com/ccache/ccache/releases/download/v4.5.1/ccache-4.5.1.tar.gz \ && tar -zxf ccache.tar.gz \ && cd ccache-4.5.1 \ @@ -40,14 +41,4 @@ RUN unset CMAKE_TOOLCHAIN_FILE && unset AS AR CC CPP CXX LD \ && cd ../.. \ && rm -rf ccache-4.5.1 ccache.tar.gz -# the dockcross docker image sets variables like CC, CXX etc. -# to point to the crosscompilation toolchain, but doesn't set corresponding -# variables for the "strip" and "objcopy" tools. -# see https://github.com/dockcross/dockcross/blob/4349cb4999401cbf22a90f46f5052d29be240e50/manylinux2014-aarch64/Dockerfile.in#L23 -ENV STRIP=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-strip \ - OBJCOPY=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-objcopy - -# The dockcross base of this image sets CC and CXX to absolute paths, which makes it impossible to redirect their invocations -# to ccache via a symlink. Use relative paths instead. -ENV CC ${CROSS_TRIPLE}-gcc -ENV CXX ${CROSS_TRIPLE}-g++ +RUN git config --global --add safe.directory /var/local/jenkins/grpc diff --git a/tools/run_tests/artifacts/artifact_targets.py b/tools/run_tests/artifacts/artifact_targets.py index a9108ff8580..15db34a2d5d 100644 --- a/tools/run_tests/artifacts/artifact_targets.py +++ b/tools/run_tests/artifacts/artifact_targets.py @@ -161,6 +161,9 @@ class PythonArtifact: environ['GRPC_SKIP_PIP_CYTHON_UPGRADE'] = 'TRUE' if self.arch == 'aarch64': environ['GRPC_SKIP_TWINE_CHECK'] = 'TRUE' + # As we won't strip the binary with auditwheel (see below), strip + # it at link time. + environ['LDFLAGS'] = '-s' else: # only run auditwheel if we're not crosscompiling environ['GRPC_RUN_AUDITWHEEL_REPAIR'] = 'TRUE' @@ -366,7 +369,7 @@ def targets(): PythonArtifact('manylinux2014', 'aarch64', 'cp38-cp38', presubmit=True), PythonArtifact('manylinux2014', 'aarch64', 'cp39-cp39'), PythonArtifact('manylinux2014', 'aarch64', 'cp310-cp310'), - # TODO(https://github.com/grpc/grpc/issues/30927): Support aarch64 with 3.11. Blocked on dockcross support. + PythonArtifact('manylinux2014', 'aarch64', 'cp311-cp311'), PythonArtifact('linux_extra', 'armv7', 'cp37-cp37m', presubmit=True), PythonArtifact('linux_extra', 'armv7', 'cp38-cp38'), PythonArtifact('linux_extra', 'armv7', 'cp39-cp39'),