mirror of
https://github.com/vale981/ray
synced 2025-03-05 10:01:43 -05:00

Why are these changes needed? Wasn't able to build Ray following these instructions : https://docs.ray.io/en/latest/ray-contribute/development.html#building-ray It fails to run pip install -e . --verbose # Add --user if you see a permission denied error. I have a local installation of protobuf via Homebrew and bazel is using its headers against the protobuf that it is pulling into its sandbox. It is a known issue with bazel and one of the workarounds is to block the local dir so it doesn't accidentally pick up the header if someone happens to have it installed locally. Manually tested by running bazel build --verbose_failures --sandbox_debug -- //:ray_pkg Without the fix I would get an error similar to https://gist.github.com/clarng/ff7b7bf7672802d1e3e07b4b509e4fc8 With the fix it builds
199 lines
9.5 KiB
Text
199 lines
9.5 KiB
Text
# 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 --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 --force_pic
|
|
build:macos --force_pic
|
|
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"
|
|
# 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="-\\.(asm|S)$,external/.*@-w"
|
|
#build --per_file_copt="external/.*@-Wno-unused-result"
|
|
# Ignore minor warnings for host tools, which we generally can't control
|
|
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 --strip=never
|
|
build:tsan --copt -fsanitize=thread
|
|
build:tsan --copt -DTHREAD_SANITIZER
|
|
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
|
|
# 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
|
|
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-travis --remote_cache="https://storage.googleapis.com/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
|
|
build:ci-github --remote_cache="https://storage.googleapis.com/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 --strip="never"
|
|
|
|
# Undefined Behavior Sanitizer
|
|
build:ubsan --strip=never
|
|
build:ubsan --copt -fsanitize=undefined
|
|
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
|
|
|
|
# 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/
|