# 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" build:manylinux2010 --copt="-Wno-unused-result" build:manylinux2010 --linkopt="-lrt" # Debug build flags. Uncomment in '-c dbg' builds to enable checks in the C++ standard library: #build:linux --cxxopt="-D_GLIBCXX_DEBUG=1" #build:linux --cxxopt="-D_GLIBCXX_DEBUG_PEDANTIC=1" #build:linux --cxxopt="-D_LIBCPP_DEBUG=1" #build:macos --cxxopt="-D_GLIBCXX_DEBUG=1" #build:macos --cxxopt="-D_GLIBCXX_DEBUG_PEDANTIC=1" #build:windows --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 --show_task_finish build:ci --ui_actions_shown=1024 build:ci --show_timestamps build:ci-travis --disk_cache=~/ray-bazel-cache build:ci-github --experimental_repository_cache_hardlinks # GitHub Actions has low disk space, so prefer hardlinks there. build:ci-github --disk_cache=~/ray-bazel-cache 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 --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