]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/3rdparty/googletest/ci/linux-presubmit.sh
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / third_party / prometheus-cpp / 3rdparty / googletest / ci / linux-presubmit.sh
1 #!/bin/bash
2 #
3 # Copyright 2020, Google Inc.
4 # All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions are
8 # met:
9 #
10 # * Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 # * Redistributions in binary form must reproduce the above
13 # copyright notice, this list of conditions and the following disclaimer
14 # in the documentation and/or other materials provided with the
15 # distribution.
16 # * Neither the name of Google Inc. nor the names of its
17 # contributors may be used to endorse or promote products derived from
18 # this software without specific prior written permission.
19 #
20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
32 set -euox pipefail
33
34 readonly LINUX_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20210525"
35 readonly LINUX_GCC_FLOOR_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-floor:20201015"
36
37 if [[ -z ${GTEST_ROOT:-} ]]; then
38 GTEST_ROOT="$(realpath $(dirname ${0})/..)"
39 fi
40
41 if [[ -z ${STD:-} ]]; then
42 STD="c++11 c++14 c++17 c++20"
43 fi
44
45 # Test the CMake build
46 for cc in /usr/local/bin/gcc /opt/llvm/clang/bin/clang; do
47 for cmake_off_on in OFF ON; do
48 time docker run \
49 --volume="${GTEST_ROOT}:/src:ro" \
50 --tmpfs="/build:exec" \
51 --workdir="/build" \
52 --rm \
53 --env="CC=${cc}" \
54 --env="CXX_FLAGS=\"-Werror -Wdeprecated\"" \
55 ${LINUX_LATEST_CONTAINER} \
56 /bin/bash -c "
57 cmake /src \
58 -DCMAKE_CXX_STANDARD=11 \
59 -Dgtest_build_samples=ON \
60 -Dgtest_build_tests=ON \
61 -Dgmock_build_tests=ON \
62 -Dcxx_no_exception=${cmake_off_on} \
63 -Dcxx_no_rtti=${cmake_off_on} && \
64 make -j$(nproc) && \
65 ctest -j$(nproc) --output-on-failure"
66 done
67 done
68
69 # Do one test with an older version of GCC
70 time docker run \
71 --volume="${GTEST_ROOT}:/src:ro" \
72 --workdir="/src" \
73 --rm \
74 --env="CC=/usr/local/bin/gcc" \
75 ${LINUX_GCC_FLOOR_CONTAINER} \
76 /usr/local/bin/bazel test ... \
77 --copt="-Wall" \
78 --copt="-Werror" \
79 --copt="-Wno-error=pragmas" \
80 --keep_going \
81 --show_timestamps \
82 --test_output=errors
83
84 # Test GCC
85 for std in ${STD}; do
86 for absl in 0 1; do
87 time docker run \
88 --volume="${GTEST_ROOT}:/src:ro" \
89 --workdir="/src" \
90 --rm \
91 --env="CC=/usr/local/bin/gcc" \
92 --env="BAZEL_CXXOPTS=-std=${std}" \
93 ${LINUX_LATEST_CONTAINER} \
94 /usr/local/bin/bazel test ... \
95 --copt="-Wall" \
96 --copt="-Werror" \
97 --define="absl=${absl}" \
98 --distdir="/bazel-distdir" \
99 --keep_going \
100 --show_timestamps \
101 --test_output=errors
102 done
103 done
104
105 # Test Clang
106 for std in ${STD}; do
107 for absl in 0 1; do
108 time docker run \
109 --volume="${GTEST_ROOT}:/src:ro" \
110 --workdir="/src" \
111 --rm \
112 --env="CC=/opt/llvm/clang/bin/clang" \
113 --env="BAZEL_CXXOPTS=-std=${std}" \
114 ${LINUX_LATEST_CONTAINER} \
115 /usr/local/bin/bazel test ... \
116 --copt="--gcc-toolchain=/usr/local" \
117 --copt="-Wall" \
118 --copt="-Werror" \
119 --define="absl=${absl}" \
120 --distdir="/bazel-distdir" \
121 --keep_going \
122 --linkopt="--gcc-toolchain=/usr/local" \
123 --show_timestamps \
124 --test_output=errors
125 done
126 done