-
Notifications
You must be signed in to change notification settings - Fork 5.8k
/
.bazelrc
212 lines (198 loc) · 10.2 KB
/
.bazelrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
# Must be first. Enables build:windows, build:linux, build:macos, build:freebsd, build:openbsd
build --enable_platform_specific_config
###############################################################################
# On Windows, provide: BAZEL_SH, and BAZEL_LLVM (if using clang-cl)
# On all platforms, provide: PYTHON3_BIN_PATH=python
###############################################################################
build:windows --action_env=PATH
# For --compilation_mode=dbg, consider enabling checks in the standard library as well (below).
build --compilation_mode=opt
# Using C++ 17 on all platforms.
build:linux --host_cxxopt="-std=c++17"
build:macos --host_cxxopt="-std=c++17"
build:clang-cl --host_cxxopt="-std=c++17"
build:msvc-cl --host_cxxopt="/std:c++17"
build:windows --host_cxxopt="/std:c++17"
build:linux --cxxopt="-std=c++17"
build:macos --cxxopt="-std=c++17"
build:clang-cl --cxxopt="-std=c++17"
build:msvc-cl --cxxopt="/std:c++17"
build:windows --cxxopt="/std:c++17"
# This workaround is needed to prevent Bazel from compiling the same file twice (once PIC and once not).
build:linux --copt="-fPIC"
build:macos --copt="-fPIC"
build:clang-cl --compiler=clang-cl
build:msvc-cl --compiler=msvc-cl
# `LC_ALL` and `LANG` is needed for cpp worker tests, because they will call "ray start".
# If we don't add them, python's `click` library will raise an error.
test --test_env=LC_ALL
test --test_env=LANG
# Allow C++ worker tests to execute "ray start" with the correct version of Python.
test --test_env=VIRTUAL_ENV
test --test_env=PYENV_VIRTUAL_ENV
test --test_env=PYENV_VERSION
test --test_env=PYENV_SHELL
# Do not send usage stats to the server for tests
test --test_env=RAY_USAGE_STATS_REPORT_URL="http://127.0.0.1:8000"
# Enable cluster mode for OSX and Windows. By default, Ray
# will not allow multinode OSX and Windows clusters.
test --test_env=RAY_ENABLE_WINDOWS_OR_OSX_CLUSTER="1"
# This is needed for some core tests to run correctly
build:windows --enable_runfiles
# TODO(mehrdadn): Revert the "-\\.(asm|S)$" exclusion when this Bazel bug
# for compiling assembly files is fixed on Windows:
# https://github.com/bazelbuild/bazel/issues/8924
# Warnings should be errors
build:linux --per_file_copt="-\\.(asm|S)$@-Werror"
build:macos --per_file_copt="-\\.(asm|S)$@-Werror"
build:clang-cl --per_file_copt="-\\.(asm|S)$@-Werror"
build:msvc-cl --per_file_copt="-\\.(asm|S)$@-WX"
# Ignore warnings for protobuf generated files and external projects.
build --per_file_copt="\\.pb\\.cc$@-w"
build:linux --per_file_copt="-\\.(asm|S)$,external/.*@-w,-Wno-error=implicit-function-declaration"
build:macos --per_file_copt="-\\.(asm|S)$,external/.*@-w,-Wno-error=implicit-function-declaration"
# Ignore warnings for host tools, which we generally can't control.
# Ideally we only want to ignore warnings for external project
# but the current bazel version doesn't support host_per_file_copt yet.
build:macos --host_copt="-w"
build:clang-cl --host_copt="-Wno-inconsistent-missing-override"
build:clang-cl --host_copt="-Wno-microsoft-unqualified-friend"
# This workaround is needed due to https://github.com/bazelbuild/bazel/issues/4341
build --per_file_copt="-\\.(asm|S)$,external/com_github_grpc_grpc/.*@-DGRPC_BAZEL_BUILD"
# Don't generate warnings about kernel features we don't need https://github.com/ray-project/ray/issues/6832
build:linux --per_file_copt="-\\.(asm|S)$,external/com_github_grpc_grpc/.*@-DGPR_MANYLINUX1"
# Ignore wchar_t -> char conversion warning on MSVC
build:msvc-cl --per_file_copt="external/boost/libs/regex/src/wc_regex_traits\\.cpp@-wd4244"
build --http_timeout_scaling=5.0
build --verbose_failures
build:iwyu --experimental_action_listener=//:iwyu_cpp
# Print relative paths when possible
build:windows --attempt_to_print_relative_paths
# Save disk space by hardlinking cache hits instead of copying
build:windows --experimental_repository_cache_hardlinks
# Clean the environment before building, to make builds more deterministic
build:windows --incompatible_strict_action_env
# For colored output (seems necessary on Windows)
build:windows --color=yes
# For compiler colored output (seems necessary on Windows)
build:clang-cl --per_file_copt="-\\.(asm|S)$@-fansi-escape-codes"
build:clang-cl --per_file_copt="-\\.(asm|S)$@-fcolor-diagnostics"
# Debug build flags. Uncomment in '-c dbg' builds to enable checks in the C++ standard library:
build:linux-debug --config linux
build:linux-debug --cxxopt="-D_GLIBCXX_DEBUG=1"
build:linux-debug --cxxopt="-D_GLIBCXX_DEBUG_PEDANTIC=1"
build:linux-debug --cxxopt="-D_LIBCPP_DEBUG=1"
build:macos-debug --config macos
build:macos-debug --cxxopt="-D_GLIBCXX_DEBUG=1"
build:macos-debug --cxxopt="-D_GLIBCXX_DEBUG_PEDANTIC=1"
build:windows-debug --config windows
build:windows-debug --cxxopt="-D_ITERATOR_DEBUG_LEVEL=2"
# LLVM (clang & libc++) build flags common across Linux installations and systems.
# On Ubuntu, the remaining configurations can be generated by running ci/env/install-llvm-binaries.sh
build:llvm --action_env=CXXFLAGS=-stdlib=libc++
build:llvm --action_env=LDFLAGS=-stdlib=libc++
build:llvm --action_env=BAZEL_CXXOPTS=-stdlib=libc++
build:llvm --action_env=BAZEL_LINKLIBS=-l%:libc++.a:-l%:libc++abi.a
build:llvm --action_env=BAZEL_LINKOPTS=-lm:-pthread
build:llvm --define force_libcpp=enabled
# Thread sanitizer configuration:
build:tsan --per_file_copt="-bazel-ray/external/com_github_antirez_redis/.*$@-fsanitize=thread"
build:tsan --per_file_copt="-bazel-ray/external/com_github_antirez_redis/.*$@-DTHREAD_SANITIZER"
build:tsan --strip=never
build:tsan --copt -O2
build:tsan --copt -g
build:tsan --copt -fno-omit-frame-pointer
build:tsan --copt -Wno-uninitialized
build:tsan --linkopt -fsanitize=thread
build:tsan --cxxopt="-D_RAY_TSAN_BUILD"
build:tsan --no//:jemalloc_flag
# This config is only for running TSAN with LLVM toolchain on Linux.
build:tsan-clang --config=tsan
build:tsan-clang --config=llvm
test:tsan --test_env=TSAN_OPTIONS="report_atomic_races=0"
# Memory sanitizer configuration
build:asan --strip=never
build:asan --copt -g
build:asan --copt -fsanitize=address
build:asan --copt -DADDRESS_SANITIZER
build:asan --copt -fno-omit-frame-pointer
build:asan --linkopt -fsanitize=address
build:asan --no//:jemalloc_flag
test:asan --jobs=1
test:asan --test_env=ASAN_OPTIONS="detect_leaks=0"
# This config is only for running ASAN with LLVM toolchain on Linux.
# https://github.com/google/sanitizers/issues/1017
build:asan-clang --config=asan
build:asan-clang --config=llvm
build:asan-clang --copt -mllvm
build:asan-clang --copt -asan-use-private-alias=1
build:asan-build --strip=never
build:asan-build -c dbg
build:asan-build --copt -fsanitize=address
build:asan-build --copt -DADDRESS_SANITIZER
build:asan-build --copt -O1
build:asan-build --copt -g
build:asan-build --copt -fno-omit-frame-pointer
build:asan-build --copt -static-libasan
build:asan-build --linkopt -fsanitize=address
build:asan-build --linkopt -static-libasan
# For example, for Ubuntu 18.04 libasan can be found here:
# test:asan --test_env=LD_PRELOAD="/usr/lib/gcc/x86_64-linux-gnu/7/libasan.so"
test:asan-buildkite --test_env=LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libasan.so.5"
# CI configuration:
aquery:ci --color=no
aquery:ci --noshow_progress
build:ci --color=yes
build:ci --curses=no
build:ci --keep_going
build:ci --progress_report_interval=100
build:ci --show_progress_rate_limit=15
build:ci --ui_actions_shown=1024
build:ci --show_timestamps
test:ci --flaky_test_attempts=3
# Disable test result caching because py_test under Bazel can import from outside of sandbox, but Bazel only looks at
# declared dependencies to determine if a result should be cached. More details at:
# https://github.com/bazelbuild/bazel/issues/7091, https://github.com/bazelbuild/rules_python/issues/382
test:ci --nocache_test_results
test:ci --spawn_strategy=local
test:ci --test_output=errors
test:ci --experimental_ui_max_stdouterr_bytes=-1
test:ci --test_verbose_timeout_warnings
test:ci-debug -c dbg
test:ci-debug --copt="-g"
test:ci-debug --flaky_test_attempts=3
# Disable test result caching for the same reason above.
test:ci-debug --nocache_test_results
test:ci-debug --spawn_strategy=local
test:ci-debug --test_output=errors
test:ci-debug --test_verbose_timeout_warnings
aquery:get-toolchain --include_commandline=false
aquery:get-toolchain --noimplicit_deps
# [Linux] Uncomment this line (or use --config) to print a stack trace on exit.
#test:linux --config=strace
test:strace --run_under="bash -c 'if command -v strace >/dev/null && strace -qq -k -e exit true 2>/dev/null; then strace -qq -k -e exit -e trace=\"!all\" -s 32768 -f -o >(awk \"/^[0-9]+ / { y = \\$3 != \\\"SIGCHLD\\\" && \\$3 != \\\"SIGTERM\\\" && \\$5 != \\\"SIGTERM\\\" && \\$5 != \\\"SIGKILL2\\\"; } y { print; }\" 1>&2 && cat 1>&2) -- \"$@\"; else \"$@\"; fi' -"
# [Linux] Uncomment this line (or use --config) to preload libSegFault.so if available, to print a stack trace on aborts and segfault. (Note: This doesn't always work.)
#test:linux --config=segfault
test:segfault --run_under="bash -c 'unset GREP_OPTIONS && if ! grep -q -o Microsoft /proc/version 2>/dev/null; then libs=\"$(command -v ldconfig >/dev/null && ldconfig -p | grep -F -o -e \"libSegFault.so\" | uniq | tr \"\\\\n\" :)\" && if [ -n \"${libs%:}\" ]; then export SEGFAULT_SIGNALS=\"abrt segv\" LD_PRELOAD=\"${libs}${LD_PRELOAD-}\"; fi; fi && \"$@\"' -"
# Debug build:
build:debug -c dbg
build:debug --copt="-g"
build:debug --copt -fno-omit-frame-pointer
build:debug --strip="never"
# Undefined Behavior Sanitizer
build:ubsan --strip=never
build:ubsan --copt -fno-sanitize=vptr
build:ubsan --copt -fno-sanitize-recover=all
build:ubsan --copt -g
build:ubsan --linkopt -fsanitize=undefined
build:ubsan --linkopt -fno-sanitize-recover=all
build:ubsan --per_file_copt="-external/com_github_grpc_grpc/.*@-fsanitize=undefined"
# Import local specific llvm config options, which can be generated by
# ci/env/install-llvm-dependencies.sh
try-import %workspace%/.llvm-local.bazelrc
# Even with sandbox mode bazel prioritizes system headers over the ones in the sandbox.
# It picks up the system headers when someone has protobuf installed via Homebrew.
# Work around for https://github.com/bazelbuild/bazel/issues/8053
build:macos --sandbox_block_path=/usr/local/
# This option controls whether javac checks for missing direct dependencies.
build --experimental_strict_java_deps=off