273 lines
13 KiB
Plaintext
273 lines
13 KiB
Plaintext
common --noenable_bzlmod
|
|
|
|
# Must be first. Enables build:windows, build:linux, build:macos, build:freebsd, build:openbsd
|
|
build --enable_platform_specific_config
|
|
|
|
build --incompatible_strict_action_env
|
|
build:strict --incompatible_strict_action_env
|
|
|
|
build:linux --workspace_status_command="bash ./bazel/workspace_status.sh"
|
|
|
|
# To distinguish different incompatible environments.
|
|
build --action_env=RAY_BUILD_ENV
|
|
|
|
###############################################################################
|
|
# 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"
|
|
build:windows --cxxopt="/utf-8"
|
|
# 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"
|
|
# Work around an NVIDIA driver bug that breaks NCCL cuMem host buffer
|
|
# registration on non-P2P GPUs (e.g. T4) with CUDA error 217 (peer access not
|
|
# supported), failing multi-GPU collectives. Affects drivers 560-575
|
|
# (CUDA 12.6-12.9); NVIDIA fixed it in r580+ (see NVIDIA/nccl#1838).
|
|
# TODO(elliot-barn): remove once the CI GPU fleet is on driver r580 or newer.
|
|
test --test_env=NCCL_CUMEM_HOST_ENABLE=0
|
|
# 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 --per_file_copt="src/ray/thirdparty/.*$@-w"
|
|
build:linux --per_file_copt="-\\.(asm|S)$,external/.*@-w,-Wno-error=implicit-function-declaration,-Wno-error=unused-function"
|
|
build:macos --per_file_copt="-\\.(asm|S)$,external/.*@-w,-Wno-error=implicit-function-declaration,-Wno-error=unused-function,-Wno-missing-template-arg-list-after-template-kw"
|
|
# 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"
|
|
# 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 --aspects @com_github_storypku_bazel_iwyu//bazel/iwyu:iwyu.bzl%iwyu_aspect
|
|
build:iwyu --output_groups=report
|
|
|
|
# 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
|
|
# 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
|
|
|
|
test:ci-base --test_output=errors
|
|
test:ci-base --test_verbose_timeout_warnings
|
|
test:ci-base --flaky_test_attempts=2
|
|
|
|
# Sending in PATH is required for tests to run on CI, after we enable
|
|
# --incompatible_strict_action_env, until we either convert all Python tests to
|
|
# hermetic tests -- which not only requires pinning all Python dependencies with bazel,
|
|
# but also requires building ray(test) wheel with bazel. Alternatively, we can
|
|
# also stop using bazel test to run ray's Python tests.
|
|
#
|
|
# This PATH test_env is intentionally not enabled on non-CI so that C/C++
|
|
# tests, which are all hermetic, can build, test and cache as intended, ray
|
|
# Python developers do not really use bazel test to run tests locally, but more
|
|
# often just run tests with "pytest" directly.
|
|
test:ci-base --test_env=PATH
|
|
|
|
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
|
|
# Retry on CacheNotFoundException from raw-S3 remote cache (AC/CAS eviction mismatch).
|
|
# Remove once the cache is fronted by a server that coordinates AC/CAS eviction (bazel-remote, Buildbarn, etc.).
|
|
build:ci --experimental_remote_cache_eviction_retries=3
|
|
# Retry repository rule HTTP downloads (e.g. http_archive) on transient failures (502/504).
|
|
build:ci --experimental_repository_downloader_retries=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 --config=ci-base
|
|
test:ci --nocache_test_results
|
|
test:ci --spawn_strategy=local
|
|
test:ci --experimental_ui_max_stdouterr_bytes=-1
|
|
|
|
test:ci-debug --config=ci-base
|
|
test:ci-debug -c dbg
|
|
test:ci-debug --copt="-g"
|
|
# Disable test result caching for the same reason above.
|
|
test:ci-debug --nocache_test_results
|
|
test:ci-debug --spawn_strategy=local
|
|
|
|
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 --copt -fstack-protector-strong
|
|
build:debug --copt -fcf-protection=full
|
|
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"
|
|
|
|
build:cgroup --sandbox_writable_path=/sys/fs/cgroup --config=llvm
|
|
|
|
# Import local specific llvm config options, which can be generated by
|
|
# ci/env/install-llvm-dependencies.sh
|
|
try-import %workspace%/.llvm-local.bazelrc
|
|
|
|
# Allow users to define custom options.
|
|
try-import %workspace%/.user.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/
|
|
build:macos --copt="-Wno-error=deprecated-declarations"
|
|
# Disable build_bazel_apple_support's Apple CC toolchain on macOS CI machines
|
|
# that only have Xcode CLT (no full Xcode.app). With BAZEL_NO_APPLE_CPP_TOOLCHAIN=1,
|
|
# apple_cc_configure's _apple_cc_autoconf generates an empty local_config_apple_cc,
|
|
# and Bazel falls back to the generic @local_config_cc (CLT clang), which worked
|
|
# fine with Bazel 6.5. Without this, apple_cc_toolchain fails at analysis time with
|
|
# "Xcode version must be specified to use an Apple CROSSTOOL" on CLT-only machines.
|
|
build:macos --repo_env=BAZEL_NO_APPLE_CPP_TOOLCHAIN=1
|
|
# The generic @local_config_cc CC toolchain (CLT-based, used when
|
|
# BAZEL_NO_APPLE_CPP_TOOLCHAIN=1) defaults to -mmacosx-version-min=10.11 from
|
|
# Bazel's built-in template. That's too old for std::filesystem (10.15+) and
|
|
# std::visit/std::variant (10.13+) used by Ray and opentelemetry. Override to
|
|
# 12.0 which matches the arm64 CI machines (Apple Silicon requires macOS 11+).
|
|
build:macos --copt=-mmacosx-version-min=12.0
|
|
build:macos --linkopt=-mmacosx-version-min=12.0
|
|
# Host/exec-configuration builds (e.g. flatc, protoc built as tools) also need
|
|
# the deployment target override; --host_copt applies to the exec configuration.
|
|
build:macos --host_copt=-mmacosx-version-min=12.0
|
|
build:macos --host_linkopt=-mmacosx-version-min=12.0
|
|
# This option controls whether javac checks for missing direct dependencies.
|
|
build --experimental_strict_java_deps=off
|