Skip to content

Commit

Permalink
build: update LLVM to 14.0.0 (envoyproxy#21135)
Browse files Browse the repository at this point in the history
Risk Level: Low
Testing: CI
Docs Changes: Added
Release Notes: Added
Platform Specific Features:

Signed-off-by: Keith Smiley <keithbsmiley@gmail.com>
Signed-off-by: Lizan Zhou <lizan@tetrate.io>
  • Loading branch information
lizan authored May 6, 2022
1 parent ccea1c0 commit 21a0fd6
Show file tree
Hide file tree
Showing 15 changed files with 45 additions and 36 deletions.
8 changes: 4 additions & 4 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -208,9 +208,9 @@ build:rbe-toolchain-asan --linkopt -fuse-ld=lld
build:rbe-toolchain-asan --action_env=ENVOY_UBSAN_VPTR=1
build:rbe-toolchain-asan --copt=-fsanitize=vptr,function
build:rbe-toolchain-asan --linkopt=-fsanitize=vptr,function
build:rbe-toolchain-asan --linkopt=-L/opt/llvm/lib/clang/12.0.1/lib/linux
build:rbe-toolchain-asan --linkopt=-l:libclang_rt.ubsan_standalone-x86_64.a
build:rbe-toolchain-asan --linkopt=-l:libclang_rt.ubsan_standalone_cxx-x86_64.a
build:rbe-toolchain-asan --linkopt='-L/opt/llvm/lib/clang/14.0.0/lib/x86_64-unknown-linux-gnu'
build:rbe-toolchain-asan --linkopt=-l:libclang_rt.ubsan_standalone.a
build:rbe-toolchain-asan --linkopt=-l:libclang_rt.ubsan_standalone_cxx.a

build:rbe-toolchain-msan --linkopt=-L/opt/libcxx_msan/lib
build:rbe-toolchain-msan --linkopt=-Wl,-rpath,/opt/libcxx_msan/lib
Expand Down Expand Up @@ -284,7 +284,7 @@ build:remote-clang-cl --config=rbe-toolchain-clang-cl

# Docker sandbox
# NOTE: Update this from https://github.com/envoyproxy/envoy-build-tools/blob/main/toolchains/rbe_toolchains_config.bzl#L8
build:docker-sandbox --experimental_docker_image=envoyproxy/envoy-build-ubuntu:a37d5f539f04b44e284953b4a075826ead117279
build:docker-sandbox --experimental_docker_image=envoyproxy/envoy-build-ubuntu:6fff5a6c67db843ddabde4533e24cab6122c7011
build:docker-sandbox --spawn_strategy=docker
build:docker-sandbox --strategy=Javac=docker
build:docker-sandbox --strategy=Closure=docker
Expand Down
2 changes: 1 addition & 1 deletion .bazelversion
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6.0.0-pre.20220414.2
6.0.0-pre.20220421.3
2 changes: 1 addition & 1 deletion .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM gcr.io/envoy-ci/envoy-build:a37d5f539f04b44e284953b4a075826ead117279
FROM gcr.io/envoy-ci/envoy-build:6fff5a6c67db843ddabde4533e24cab6122c7011

ARG USERNAME=vscode
ARG USER_UID=501
Expand Down
6 changes: 3 additions & 3 deletions bazel/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -349,8 +349,8 @@ for more details.
## Supported compiler versions
We now require Clang >= 5.0 due to known issues with std::string thread safety and C++14 support. GCC >= 7 is also
known to work. Currently the CI is running with Clang 10.
We now require Clang >= 9 due to C++17 support and tcmalloc requirement. GCC >= 9 is also known to work.
Currently the CI is running with Clang 14.
## Clang STL debug symbols
Expand Down Expand Up @@ -921,7 +921,7 @@ Note that if you run the `check_spelling.py` script you will need to have `aspel
Edit the paths shown here to reflect the installation locations on your system:

```shell
export CLANG_FORMAT="$HOME/ext/clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04/bin/clang-format"
export CLANG_FORMAT="$HOME/ext/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang-format"
export BUILDIFIER_BIN="/usr/bin/buildifier"
```

Expand Down
2 changes: 1 addition & 1 deletion bazel/foreign_cc/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ envoy_cmake(
# Workaround for the -DDEBUG flag added in fastbuild on macOS,
# which conflicts with DEBUG macro used in LLVM.
"CFLAGS": "-UDEBUG",
"CXXFLAGS": "-UDEBUG",
"CXXFLAGS": "-UDEBUG -Wno-error=unused-but-set-variable",
"ASMFLAGS": "-UDEBUG",
},
lib_source = "@com_github_wavm_wavm//:all",
Expand Down
12 changes: 6 additions & 6 deletions bazel/repository_locations.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,11 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "envoy-build-tools",
project_desc = "Common build tools shared by the Envoy/UDPA ecosystem",
project_url = "https://github.com/envoyproxy/envoy-build-tools",
version = "b37b15362fbea9de808e9a40f6978bfa7cc8abfc",
sha256 = "009651fc5e3f99da90990cd2e07550fa9db0e0d947cc846f39e23c8d20e8c433",
version = "afae694ee4b0036ee645db50ee2d972ee99c0ae5",
sha256 = "1c7502d489b9b36076fd338e2032e17a0c9cc9809048683a2e32ad8345445723",
strip_prefix = "envoy-build-tools-{version}",
urls = ["https://github.com/envoyproxy/envoy-build-tools/archive/{version}.tar.gz"],
release_date = "2022-04-11",
release_date = "2022-05-05",
use_category = ["build"],
),
boringssl = dict(
Expand Down Expand Up @@ -980,12 +980,12 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "compiler-rt",
project_desc = "LLVM compiler runtime library",
project_url = "https://compiler-rt.llvm.org",
version = "12.0.1",
sha256 = "b4c8d5f2a802332987c1c0a95b5afb35b1a66a96fe44add4e4ed4792c4cba0a4",
version = "14.0.0",
sha256 = "27ab7fcfb21d108093c0be766a9ed5fe18c04e4f74f936069711a312c8ae0377",
# Only allow peeking at fuzzer related files for now.
strip_prefix = "compiler-rt-{version}.src",
urls = ["https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/compiler-rt-{version}.src.tar.xz"],
release_date = "2021-07-09",
release_date = "2022-03-23",
use_category = ["test_only"],
cpe = "cpe:2.3:a:llvm:compiler-rt:*",
),
Expand Down
8 changes: 4 additions & 4 deletions bazel/setup_clang.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ fi
PATH="$("${LLVM_PREFIX}"/bin/llvm-config --bindir):${PATH}"
export PATH

RT_LIBRARY_PATH="$(dirname "$(find "$(llvm-config --libdir)" -name libclang_rt.ubsan_standalone_cxx-x86_64.a | head -1)")"
RT_LIBRARY_PATH="$(llvm-config --libdir)/clang/$(llvm-config --version)/lib/$(llvm-config --host-target)"

echo "# Generated file, do not edit. If you want to disable clang, just delete this file.
build:clang --action_env='PATH=${PATH}'
Expand All @@ -27,6 +27,6 @@ build:clang-asan --action_env=ENVOY_UBSAN_VPTR=1
build:clang-asan --copt=-fsanitize=vptr,function
build:clang-asan --linkopt=-fsanitize=vptr,function
build:clang-asan --linkopt='-L${RT_LIBRARY_PATH}'
build:clang-asan --linkopt=-l:libclang_rt.ubsan_standalone-x86_64.a
build:clang-asan --linkopt=-l:libclang_rt.ubsan_standalone_cxx-x86_64.a
" > "${BAZELRC_FILE}"
build:clang-asan --linkopt=-l:libclang_rt.ubsan_standalone.a
build:clang-asan --linkopt=-l:libclang_rt.ubsan_standalone_cxx.a
" >"${BAZELRC_FILE}"
3 changes: 3 additions & 0 deletions changelogs/current.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,9 @@ new_features:
- area: ratelimit
change: |
added support for :ref:`masked_remote_address <envoy_v3_api_field_config.route.v3.RateLimit.Action.masked_remote_address>`.
- area: build
change: |
official released binary is now built with Clang 14.0.0.
deprecated:
- area: dubbo_proxy
Expand Down
4 changes: 2 additions & 2 deletions ci/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ running tests that reflects the latest built Windows 2019 Envoy image.
Currently there are three build images for Linux and one for Windows:

* `envoyproxy/envoy-build` &mdash; alias to `envoyproxy/envoy-build-ubuntu`.
* `envoyproxy/envoy-build-ubuntu` &mdash; based on Ubuntu 18.04 (Bionic) with GCC 9 and Clang 10 compiler.
* `envoyproxy/envoy-build-centos` &mdash; based on CentOS 7 with GCC 9 and Clang 10 compiler, this image is experimental and not well tested.
* `envoyproxy/envoy-build-ubuntu` &mdash; based on Ubuntu 18.04 (Bionic) with GCC 9 and Clang 14 compiler.
* `envoyproxy/envoy-build-centos` &mdash; based on CentOS 7 with GCC 9 and Clang 14 compiler, this image is experimental and not well tested.
* `envoyproxy/envoy-build-windows2019` &mdash; based on Windows ltsc2019 with VS 2019 Build Tools, as well as LLVM.

The source for these images is located in the [envoyproxy/envoy-build-tools](https://github.com/envoyproxy/envoy-build-tools)
Expand Down
3 changes: 3 additions & 0 deletions contrib/hyperscan/matching/input_matchers/source/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ envoy_cmake(
"CMAKE_INSTALL_LIBDIR": "lib",
"RAGEL": "$EXT_BUILD_DEPS/ragel/bin/ragel",
},
env = {
"CXXFLAGS": "-Wno-error=unused-but-set-variable -Wno-error=bitwise-instead-of-logical",
},
lib_source = "@io_hyperscan//:all",
out_static_libs = ["libhs.a"],
tags = ["skip_on_windows"],
Expand Down
4 changes: 2 additions & 2 deletions examples/wasm-cc/docker-compose-wasm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: "3.8"

services:
wasm_compile_update:
image: envoyproxy/envoy-build-ubuntu:a37d5f539f04b44e284953b4a075826ead117279
image: envoyproxy/envoy-build-ubuntu:6fff5a6c67db843ddabde4533e24cab6122c7011
command: |
bash -c "bazel build //examples/wasm-cc:envoy_filter_http_wasm_updated_example.wasm && cp -a bazel-bin/examples/wasm-cc/* /build"
working_dir: /source
Expand All @@ -11,7 +11,7 @@ services:
- ./lib:/build

wasm_compile:
image: envoyproxy/envoy-build-ubuntu:a37d5f539f04b44e284953b4a075826ead117279
image: envoyproxy/envoy-build-ubuntu:6fff5a6c67db843ddabde4533e24cab6122c7011
command: |
bash -c "bazel build //examples/wasm-cc:envoy_filter_http_wasm_example.wasm && cp -a bazel-bin/examples/wasm-cc/* /build"
working_dir: /source
Expand Down
5 changes: 2 additions & 3 deletions test/common/http/header_map_impl_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -424,9 +424,8 @@ TEST_P(HeaderMapImplTest, AllInlineHeaders) {
INLINE_REQ_RESP_STRING_HEADERS(TEST_INLINE_STRING_HEADER_FUNCS)
}
{
// No request trailer O(1) headers.
}
{
// No request trailer O(1) headers.
} {
auto header_map = ResponseHeaderMapImpl::create();
INLINE_RESP_STRING_HEADERS(TEST_INLINE_STRING_HEADER_FUNCS)
INLINE_REQ_RESP_STRING_HEADERS(TEST_INLINE_STRING_HEADER_FUNCS)
Expand Down
12 changes: 8 additions & 4 deletions test/per_file_coverage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
# for existing directories with low coverage.
declare -a KNOWN_LOW_COVERAGE=(
"source/common:96.0"
"source/common/api:82.5"
"source/common/api/posix:81.7"
"source/common/api:82.2"
"source/common/api/posix:81.3"
"source/common/common:96.2"
"source/common/common/posix:92.7"
"source/common/config:96.5"
Expand All @@ -22,9 +22,11 @@ declare -a KNOWN_LOW_COVERAGE=(
"source/common/protobuf:94.8"
"source/common/quic:91.8"
"source/common/router:96.3"
"source/common/runtime:96.4"
"source/common/secret:94.9"
"source/common/signal:86.9" # Death tests don't report LCOV
"source/common/singleton:95.7"
"source/common/stats:96.5"
"source/common/tcp:90.6"
"source/common/thread:0.0" # Death tests don't report LCOV
"source/common/tracing:96.1"
Expand Down Expand Up @@ -66,13 +68,15 @@ declare -a KNOWN_LOW_COVERAGE=(
"source/extensions/health_checkers/redis:95.7"
"source/extensions/io_socket:96.2"
"source/extensions/io_socket/user_space:96.2"
"source/extensions/rate_limit_descriptors:95.5"
"source/extensions/rate_limit_descriptors/expr:95.5"
"source/extensions/stat_sinks/common:96.4"
"source/extensions/stat_sinks/common/statsd:96.4"
"source/extensions/stat_sinks/graphite_statsd:75.0"
"source/extensions/stat_sinks/statsd:76.9"
"source/extensions/tracers/opencensus:94.8"
"source/extensions/tracers/opencensus:93.2"
"source/extensions/tracers/xray:96.2"
"source/extensions/tracers/zipkin:95.9"
"source/extensions/tracers/zipkin:95.8"
"source/extensions/transport_sockets:95.2"
"source/extensions/transport_sockets/tls:94.2"
"source/extensions/transport_sockets/tls/cert_validator:94.9"
Expand Down
2 changes: 1 addition & 1 deletion test/run_envoy_bazel_coverage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

set -e

LLVM_VERSION="12.0.1"
LLVM_VERSION="14.0.0"
CLANG_VERSION=$(clang --version | grep version | sed -e 's/\ *clang version \(.*\)\ */\1/')
LLVM_COV_VERSION=$(llvm-cov --version | grep version | sed -e 's/\ *LLVM version \(.*\)/\1/')
LLVM_PROFDATA_VERSION=$(llvm-profdata show --version | grep version | sed -e 's/\ *LLVM version \(.*\)/\1/')
Expand Down
8 changes: 4 additions & 4 deletions tools/code_format/check_format.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@
"./api/bazel/envoy_http_archive.bzl",
)

CLANG_FORMAT_PATH = os.getenv("CLANG_FORMAT", "clang-format-12")
CLANG_FORMAT_PATH = os.getenv("CLANG_FORMAT", "clang-format-14")
BUILDIFIER_PATH = paths.get_buildifier()
BUILDOZER_PATH = paths.get_buildozer()
ENVOY_BUILD_FIXER_PATH = os.path.join(
Expand Down Expand Up @@ -308,9 +308,9 @@ def check_tools(self):
"installed, but the binary name is different or it's not available in "
"PATH, please use CLANG_FORMAT environment variable to specify the path. "
"Examples:\n"
" export CLANG_FORMAT=clang-format-12.0.1\n"
" export CLANG_FORMAT=/opt/bin/clang-format-12\n"
" export CLANG_FORMAT=/usr/local/opt/llvm@12/bin/clang-format".format(
" export CLANG_FORMAT=clang-format-14.0.0\n"
" export CLANG_FORMAT=/opt/bin/clang-format-14\n"
" export CLANG_FORMAT=/usr/local/opt/llvm@14/bin/clang-format".format(
CLANG_FORMAT_PATH))

def check_bazel_tool(name, path, var):
Expand Down

0 comments on commit 21a0fd6

Please sign in to comment.