From 5690ea0106271526fe9f65cca64c6b3deac9dc72 Mon Sep 17 00:00:00 2001 From: Esun Kim Date: Mon, 27 Sep 2021 10:48:58 -0700 Subject: [PATCH] Added gcc11 and clang12 tests (#27190) --- src/cpp/README.md | 4 +- .../test/cxx_clang_12_x64/Dockerfile.template | 29 ++++++++++ .../test/cxx_clang_4_x64/Dockerfile.template | 29 ++++++++++ .../Dockerfile.template | 8 +-- .../Dockerfile | 42 ++------------- .../test/cxx_clang_4_x64/Dockerfile | 54 +++++++++++++++++++ .../dockerfile/test/cxx_gcc_11_x64/Dockerfile | 54 +++++++++++++++++++ tools/run_tests/run_tests.py | 22 ++++---- tools/run_tests/run_tests_matrix.py | 4 +- 9 files changed, 189 insertions(+), 57 deletions(-) create mode 100644 templates/tools/dockerfile/test/cxx_clang_12_x64/Dockerfile.template create mode 100644 templates/tools/dockerfile/test/cxx_clang_4_x64/Dockerfile.template rename templates/tools/dockerfile/test/{cxx_ubuntu1804_x64 => cxx_gcc_11_x64}/Dockerfile.template (82%) rename tools/dockerfile/test/{cxx_ubuntu1804_x64 => cxx_clang_12_x64}/Dockerfile (73%) create mode 100644 tools/dockerfile/test/cxx_clang_4_x64/Dockerfile create mode 100644 tools/dockerfile/test/cxx_gcc_11_x64/Dockerfile diff --git a/src/cpp/README.md b/src/cpp/README.md index e4bd44918e6..28063ec9705 100755 --- a/src/cpp/README.md +++ b/src/cpp/README.md @@ -19,10 +19,10 @@ We will make our best effort to support them, and we welcome patches for such pl | Operating System | Architectures | Versions | Support Level | |------------------|---------------|----------|---------------| -| Linux - Debian, Ubuntu, CentOS | x86, x64 | clang 3.4+, GCC 4.9+ | Supported | +| Linux - Debian, Ubuntu, CentOS | x86, x64 | clang 4+, GCC 4.9+ | Supported | | Windows 10+ | x86, x64 | Visual Studio 2015+ | Supported | | MacOS | x86, x64 | XCode 7.2+ | Supported | -| Linux - Others | x86, x64 | clang 3.4+, GCC 4.9+ | Best Effort | +| Linux - Others | x86, x64 | clang 4+, GCC 4.9+ | Best Effort | | Linux | ARM | | Best Effort | | iOS | | | Best Effort | | Android | | | Best Effort | diff --git a/templates/tools/dockerfile/test/cxx_clang_12_x64/Dockerfile.template b/templates/tools/dockerfile/test/cxx_clang_12_x64/Dockerfile.template new file mode 100644 index 00000000000..6da7861b986 --- /dev/null +++ b/templates/tools/dockerfile/test/cxx_clang_12_x64/Dockerfile.template @@ -0,0 +1,29 @@ +%YAML 1.2 +--- | + # Copyright 2021 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. + + FROM silkeh/clang:12 + + RUN apt-get update && apt-get install -y build-essential curl git golang time wget zip + <%include file="../../python_deps.include"/> + RUN pip install PyYAML==5.4.1 + RUN apt-get install python-is-python2 + <%include file="../../gcp_api_libraries.include"/> + <%include file="../../cxx_deps.include"/> + <%include file="../../cmake.include"/> + <%include file="../../run_tests_addons.include"/> + + # Define the default command. + CMD ["bash"] diff --git a/templates/tools/dockerfile/test/cxx_clang_4_x64/Dockerfile.template b/templates/tools/dockerfile/test/cxx_clang_4_x64/Dockerfile.template new file mode 100644 index 00000000000..2f1ae7b4df5 --- /dev/null +++ b/templates/tools/dockerfile/test/cxx_clang_4_x64/Dockerfile.template @@ -0,0 +1,29 @@ +%YAML 1.2 +--- | + # Copyright 2021 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. + + FROM silkeh/clang:4 + + RUN apt-get update && apt-get install -y build-essential curl git golang time wget zip + <%include file="../../python_deps.include"/> + RUN pip install PyYAML==5.4.1 + RUN apt-get install python-is-python2 + <%include file="../../gcp_api_libraries.include"/> + <%include file="../../cxx_deps.include"/> + <%include file="../../cmake.include"/> + <%include file="../../run_tests_addons.include"/> + + # Define the default command. + CMD ["bash"] diff --git a/templates/tools/dockerfile/test/cxx_ubuntu1804_x64/Dockerfile.template b/templates/tools/dockerfile/test/cxx_gcc_11_x64/Dockerfile.template similarity index 82% rename from templates/tools/dockerfile/test/cxx_ubuntu1804_x64/Dockerfile.template rename to templates/tools/dockerfile/test/cxx_gcc_11_x64/Dockerfile.template index 1f8d3bd190d..b81bdc685af 100644 --- a/templates/tools/dockerfile/test/cxx_ubuntu1804_x64/Dockerfile.template +++ b/templates/tools/dockerfile/test/cxx_gcc_11_x64/Dockerfile.template @@ -1,6 +1,6 @@ %YAML 1.2 --- | - # Copyright 2015 gRPC authors. + # Copyright 2021 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,10 +14,12 @@ # See the License for the specific language governing permissions and # limitations under the License. - FROM ubuntu:18.04 + FROM gcc:11 - <%include file="../../apt_get_basic.include"/> + RUN apt-get update && apt-get install -y curl git golang time wget zip <%include file="../../python_deps.include"/> + RUN pip install PyYAML==5.4.1 + RUN apt-get install python-is-python2 <%include file="../../gcp_api_libraries.include"/> <%include file="../../cxx_deps.include"/> <%include file="../../cmake.include"/> diff --git a/tools/dockerfile/test/cxx_ubuntu1804_x64/Dockerfile b/tools/dockerfile/test/cxx_clang_12_x64/Dockerfile similarity index 73% rename from tools/dockerfile/test/cxx_ubuntu1804_x64/Dockerfile rename to tools/dockerfile/test/cxx_clang_12_x64/Dockerfile index 820122441b0..426f464cc8c 100644 --- a/tools/dockerfile/test/cxx_ubuntu1804_x64/Dockerfile +++ b/tools/dockerfile/test/cxx_clang_12_x64/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2015 gRPC authors. +# Copyright 2021 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,43 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ubuntu:18.04 - -# Install Git and basic packages. -RUN apt-get update && apt-get install -y \ - autoconf \ - autotools-dev \ - build-essential \ - bzip2 \ - ccache \ - curl \ - dnsutils \ - gcc \ - gcc-multilib \ - git \ - golang \ - gyp \ - lcov \ - libc6 \ - libc6-dbg \ - libc6-dev \ - libgtest-dev \ - libtool \ - make \ - perl \ - strace \ - python-dev \ - python-setuptools \ - python-yaml \ - telnet \ - unzip \ - wget \ - zip && apt-get clean - -#================ -# Build profiling -RUN apt-get update && apt-get install -y time && apt-get clean +FROM silkeh/clang:12 +RUN apt-get update && apt-get install -y build-essential curl git golang time wget zip #==================== # Python dependencies @@ -65,6 +31,8 @@ RUN pip install --upgrade pip==19.3.1 RUN pip install virtualenv==16.7.9 RUN pip install futures==3.1.1 enum34==1.1.10 protobuf==3.5.2.post1 six==1.16.0 twisted==19.10.0 +RUN pip install PyYAML==5.4.1 +RUN apt-get install python-is-python2 # Google Cloud platform API libraries RUN pip install --upgrade google-auth==1.24.0 google-api-python-client==1.12.8 oauth2client==4.1.0 diff --git a/tools/dockerfile/test/cxx_clang_4_x64/Dockerfile b/tools/dockerfile/test/cxx_clang_4_x64/Dockerfile new file mode 100644 index 00000000000..95d4aeddbc6 --- /dev/null +++ b/tools/dockerfile/test/cxx_clang_4_x64/Dockerfile @@ -0,0 +1,54 @@ +# Copyright 2021 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. + +FROM silkeh/clang:4 + +RUN apt-get update && apt-get install -y build-essential curl git golang time wget zip +#==================== +# Python dependencies + +# Install dependencies + +RUN apt-get update && apt-get install -y \ + python-all-dev \ + python3-all-dev \ + python-setuptools + +# Install Python packages from PyPI +RUN curl https://bootstrap.pypa.io/pip/2.7/get-pip.py | python2.7 +RUN pip install --upgrade pip==19.3.1 +RUN pip install virtualenv==16.7.9 +RUN pip install futures==3.1.1 enum34==1.1.10 protobuf==3.5.2.post1 six==1.16.0 twisted==19.10.0 + +RUN pip install PyYAML==5.4.1 +RUN apt-get install python-is-python2 +# Google Cloud platform API libraries +RUN pip install --upgrade google-auth==1.24.0 google-api-python-client==1.12.8 oauth2client==4.1.0 + +#================= +# C++ dependencies +RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean + +#================= +# Install cmake +# Note that this step should be only used for distributions that have new enough cmake to satisfy gRPC's cmake version requirement. + +RUN apt-get update && apt-get install -y cmake && apt-get clean + + +RUN mkdir /var/local/jenkins + + +# Define the default command. +CMD ["bash"] diff --git a/tools/dockerfile/test/cxx_gcc_11_x64/Dockerfile b/tools/dockerfile/test/cxx_gcc_11_x64/Dockerfile new file mode 100644 index 00000000000..9437ca3cf42 --- /dev/null +++ b/tools/dockerfile/test/cxx_gcc_11_x64/Dockerfile @@ -0,0 +1,54 @@ +# Copyright 2021 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. + +FROM gcc:11 + +RUN apt-get update && apt-get install -y curl git golang time wget zip +#==================== +# Python dependencies + +# Install dependencies + +RUN apt-get update && apt-get install -y \ + python-all-dev \ + python3-all-dev \ + python-setuptools + +# Install Python packages from PyPI +RUN curl https://bootstrap.pypa.io/pip/2.7/get-pip.py | python2.7 +RUN pip install --upgrade pip==19.3.1 +RUN pip install virtualenv==16.7.9 +RUN pip install futures==3.1.1 enum34==1.1.10 protobuf==3.5.2.post1 six==1.16.0 twisted==19.10.0 + +RUN pip install PyYAML==5.4.1 +RUN apt-get install python-is-python2 +# Google Cloud platform API libraries +RUN pip install --upgrade google-auth==1.24.0 google-api-python-client==1.12.8 oauth2client==4.1.0 + +#================= +# C++ dependencies +RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean + +#================= +# Install cmake +# Note that this step should be only used for distributions that have new enough cmake to satisfy gRPC's cmake version requirement. + +RUN apt-get update && apt-get install -y cmake && apt-get clean + + +RUN mkdir /var/local/jenkins + + +# Define the default command. +CMD ["bash"] diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 88f5259530d..a944bef7370 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -464,24 +464,20 @@ class CLanguage(object): return ('jessie', []) elif compiler == 'gcc5.3': return ('ubuntu1604', []) - elif compiler == 'gcc7.4': - return ('ubuntu1804', []) elif compiler == 'gcc8.3': return ('buster', []) elif compiler == 'gcc8.3_openssl102': return ('buster_openssl102', [ "-DgRPC_SSL_PROVIDER=package", ]) + elif compiler == 'gcc11': + return ('gcc_11', []) elif compiler == 'gcc_musl': return ('alpine', []) - elif compiler == 'clang4.0': - return ('ubuntu1604', - self._clang_cmake_configure_extra_args( - version_suffix='-4.0')) - elif compiler == 'clang5.0': - return ('ubuntu1604', - self._clang_cmake_configure_extra_args( - version_suffix='-5.0')) + elif compiler == 'clang4': + return ('clang_4', self._clang_cmake_configure_extra_args()) + elif compiler == 'clang12': + return ('clang_12', self._clang_cmake_configure_extra_args()) else: raise Exception('Compiler %s not supported.' % compiler) @@ -1417,12 +1413,12 @@ argp.add_argument( 'default', 'gcc4.9', 'gcc5.3', - 'gcc7.4', 'gcc8.3', 'gcc8.3_openssl102', + 'gcc11', 'gcc_musl', - 'clang4.0', - 'clang5.0', + 'clang4', + 'clang12', 'python2.7', 'python3.5', 'python3.6', diff --git a/tools/run_tests/run_tests_matrix.py b/tools/run_tests/run_tests_matrix.py index 7e3d96c102a..50e92d29aa8 100755 --- a/tools/run_tests/run_tests_matrix.py +++ b/tools/run_tests/run_tests_matrix.py @@ -266,8 +266,8 @@ def _create_portability_test_jobs(extra_args=[], # portability C and C++ on x64 for compiler in [ - 'gcc4.9', 'gcc5.3', 'gcc7.4', 'gcc8.3', 'gcc8.3_openssl102', - 'gcc_musl', 'clang4.0', 'clang5.0' + 'gcc4.9', 'gcc5.3', 'gcc8.3', 'gcc8.3_openssl102', 'gcc11', + 'gcc_musl', 'clang4', 'clang12' ]: test_jobs += _generate_jobs(languages=['c', 'c++'], configs=['dbg'],