From 528775db084d5561f6bb4bc4c4fa69bd629dfa02 Mon Sep 17 00:00:00 2001 From: Matt Kwong Date: Mon, 21 May 2018 14:55:40 -0700 Subject: [PATCH] Add Jessie Dockerfile using RBE's base --- .../test/cxx_jessie_x64/Dockerfile.template | 2 +- .../Dockerfile.template | 31 +++++++ .../dockerfile/test/cxx_jessie_x64/Dockerfile | 2 +- .../test/cxx_sanitizers_jessie_x64/Dockerfile | 80 +++++++++++++++++++ tools/run_tests/run_tests.py | 13 ++- tools/run_tests/run_tests_matrix.py | 8 +- 6 files changed, 129 insertions(+), 7 deletions(-) create mode 100644 templates/tools/dockerfile/test/cxx_sanitizers_jessie_x64/Dockerfile.template create mode 100644 tools/dockerfile/test/cxx_sanitizers_jessie_x64/Dockerfile diff --git a/templates/tools/dockerfile/test/cxx_jessie_x64/Dockerfile.template b/templates/tools/dockerfile/test/cxx_jessie_x64/Dockerfile.template index 9d559dfafad..81272319083 100644 --- a/templates/tools/dockerfile/test/cxx_jessie_x64/Dockerfile.template +++ b/templates/tools/dockerfile/test/cxx_jessie_x64/Dockerfile.template @@ -29,4 +29,4 @@ RUN apt-get update && apt-get -y install gcc-4.8 gcc-4.8-multilib g++-4.8 g++-4.8-multilib && apt-get clean # Define the default command. - CMD ["bash"] + CMD ["bash"] \ No newline at end of file diff --git a/templates/tools/dockerfile/test/cxx_sanitizers_jessie_x64/Dockerfile.template b/templates/tools/dockerfile/test/cxx_sanitizers_jessie_x64/Dockerfile.template new file mode 100644 index 00000000000..6070330e919 --- /dev/null +++ b/templates/tools/dockerfile/test/cxx_sanitizers_jessie_x64/Dockerfile.template @@ -0,0 +1,31 @@ +%YAML 1.2 +--- | + # Copyright 2018 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. + + # This is the base Docker image we use for running tests on RBE + FROM gcr.io/cloud-marketplace/google/rbe-debian8@sha256:1ede2a929b44d629ec5abe86eee6d7ffea1d5a4d247489a8867d46cfde3e38bd + + <%include file="../../apt_get_basic.include"/> + <%include file="../../gcp_api_libraries.include"/> + <%include file="../../python_deps.include"/> + #================= + # C++ dependencies (purposely excluding Clang because it's part of the base image) + RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev && apt-get clean + + # Link llvm-symbolizer to where our test scripts expect to find it + RUN ln -s /usr/local/bin/llvm-symbolizer /usr/bin/llvm-symbolizer + + # Define the default command. + CMD ["bash"] diff --git a/tools/dockerfile/test/cxx_jessie_x64/Dockerfile b/tools/dockerfile/test/cxx_jessie_x64/Dockerfile index 4dda0f0b9e3..8a20d92d97e 100644 --- a/tools/dockerfile/test/cxx_jessie_x64/Dockerfile +++ b/tools/dockerfile/test/cxx_jessie_x64/Dockerfile @@ -121,4 +121,4 @@ RUN cd /tmp && wget http://dist.libuv.org/dist/v1.9.1/libuv-v1.9.1.tar.gz RUN apt-get update && apt-get -y install gcc-4.8 gcc-4.8-multilib g++-4.8 g++-4.8-multilib && apt-get clean # Define the default command. -CMD ["bash"] +CMD ["bash"] \ No newline at end of file diff --git a/tools/dockerfile/test/cxx_sanitizers_jessie_x64/Dockerfile b/tools/dockerfile/test/cxx_sanitizers_jessie_x64/Dockerfile new file mode 100644 index 00000000000..f60f67665dc --- /dev/null +++ b/tools/dockerfile/test/cxx_sanitizers_jessie_x64/Dockerfile @@ -0,0 +1,80 @@ +# Copyright 2018 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. + +# This is the base Docker image we use for running tests on RBE +FROM gcr.io/cloud-marketplace/google/rbe-debian8@sha256:1ede2a929b44d629ec5abe86eee6d7ffea1d5a4d247489a8867d46cfde3e38bd + +# 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 + +# Google Cloud platform API libraries +RUN apt-get update && apt-get install -y python-pip && apt-get clean +RUN pip install --upgrade google-api-python-client + +#==================== +# 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 + +#================= +# C++ dependencies (purposely excluding Clang because it's part of the base image) +RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev && apt-get clean + +# Link llvm-symbolizer to where our test scripts expect to find it +RUN ln -s /usr/local/bin/llvm-symbolizer /usr/bin/llvm-symbolizer + +# Define the default command. +CMD ["bash"] diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 5aabf9c161b..ca229b2b833 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -531,6 +531,11 @@ class CLanguage(object): elif compiler == 'clang3.7': return ('ubuntu1604', self._clang_make_options(version_suffix='-3.7')) + elif compiler == 'clang7.0': + # clang++-7.0 alias doesn't exist and there are no other clang versions + # installed. + return ('sanitizers_jessie', + self._clang_make_options()) else: raise Exception('Compiler %s not supported.' % compiler) @@ -1343,10 +1348,10 @@ argp.add_argument( '--compiler', choices=[ 'default', 'gcc4.4', 'gcc4.6', 'gcc4.8', 'gcc4.9', 'gcc5.3', 'gcc7.2', - 'gcc_musl', 'clang3.4', 'clang3.5', 'clang3.6', 'clang3.7', 'python2.7', - 'python3.4', 'python3.5', 'python3.6', 'pypy', 'pypy3', 'python_alpine', - 'all_the_cpythons', 'electron1.3', 'electron1.6', 'coreclr', 'cmake', - 'cmake_vs2015', 'cmake_vs2017' + 'gcc_musl', 'clang3.4', 'clang3.5', 'clang3.6', 'clang3.7', 'clang7.0', + 'python2.7', 'python3.4', 'python3.5', 'python3.6', 'pypy', 'pypy3', + 'python_alpine', 'all_the_cpythons', 'electron1.3', 'electron1.6', + 'coreclr', 'cmake', 'cmake_vs2015', 'cmake_vs2017' ], default='default', help= diff --git a/tools/run_tests/run_tests_matrix.py b/tools/run_tests/run_tests_matrix.py index 64d80ab721d..0af9e0cbbe1 100755 --- a/tools/run_tests/run_tests_matrix.py +++ b/tools/run_tests/run_tests_matrix.py @@ -245,6 +245,8 @@ def _create_test_jobs(extra_args=[], inner_jobs=_DEFAULT_INNER_JOBS): languages=['c'], configs=['msan', 'asan', 'tsan', 'ubsan'], platforms=['linux'], + arch='x64', + compiler='clang7.0', labels=['sanitizers', 'corelang'], extra_args=extra_args, inner_jobs=inner_jobs, @@ -253,6 +255,8 @@ def _create_test_jobs(extra_args=[], inner_jobs=_DEFAULT_INNER_JOBS): languages=['c++'], configs=['asan'], platforms=['linux'], + arch='x64', + compiler='clang7.0', labels=['sanitizers', 'corelang'], extra_args=extra_args, inner_jobs=inner_jobs, @@ -261,6 +265,8 @@ def _create_test_jobs(extra_args=[], inner_jobs=_DEFAULT_INNER_JOBS): languages=['c++'], configs=['tsan'], platforms=['linux'], + arch='x64', + compiler='clang7.0', labels=['sanitizers', 'corelang'], extra_args=extra_args, inner_jobs=inner_jobs, @@ -286,7 +292,7 @@ def _create_portability_test_jobs(extra_args=[], # portability C and C++ on x64 for compiler in [ 'gcc4.8', 'gcc5.3', 'gcc7.2', 'gcc_musl', 'clang3.5', 'clang3.6', - 'clang3.7' + 'clang3.7', 'clang7.0' ]: test_jobs += _generate_jobs( languages=['c', 'c++'],