Files
wehub-resource-sync 8a852e4b4e
cffconvert / validate (push) Has been skipped
License Check / license-check (push) Failing after 2s
chore: import upstream snapshot with attribution
2026-07-13 12:14:16 +08:00

313 lines
11 KiB
Python

module(name = "xla")
##############################################################
# Bazel module dependencies
# go/keep-sorted start
bazel_dep(name = "abseil-cpp", version = "20260526.0", repo_name = "com_google_absl")
bazel_dep(name = "abseil-py", version = "2.1.0", repo_name = "absl_py")
bazel_dep(name = "bazel_features", version = "1.36.0")
bazel_dep(name = "bazel_skylib", version = "1.8.2")
bazel_dep(name = "boringssl", version = "0.20250818.0")
bazel_dep(name = "curl", version = "8.12.0.bcr.1")
bazel_dep(name = "google_benchmark", version = "1.8.5", repo_name = "com_google_benchmark")
bazel_dep(name = "googletest", version = "1.17.0", repo_name = "com_google_googletest")
bazel_dep(name = "grpc", version = "1.81.0", repo_name = "com_github_grpc_grpc")
bazel_dep(name = "gutil", version = "20260309.0.bcr.1", repo_name = "com_google_gutil")
bazel_dep(name = "highway", version = "1.3.0", repo_name = "com_google_highway")
bazel_dep(name = "jsoncpp", version = "1.9.6", repo_name = "jsoncpp_git")
bazel_dep(name = "or-tools", version = "9.12", repo_name = "com_google_ortools")
bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "protobuf", version = "32.1", repo_name = "com_google_protobuf")
bazel_dep(name = "pybind11_abseil", version = "202402.0")
bazel_dep(name = "pybind11_bazel", version = "3.0.0")
bazel_dep(name = "pybind11_protobuf", version = "0.0.0-20250210-f02a2b7")
bazel_dep(name = "re2", version = "2025-11-05.bcr.1", repo_name = "com_googlesource_code_re2")
bazel_dep(name = "rules_cc", version = "0.2.17")
bazel_dep(name = "rules_java", version = "8.16.1")
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "rules_python", version = "1.8.5")
bazel_dep(name = "rules_shell", version = "0.6.1")
bazel_dep(name = "snappy", version = "1.2.1")
bazel_dep(name = "zlib", version = "1.3.2")
# go/keep-sorted end
# Only for compatibility, not directly used, change repo_name to None after upgrading Bazel to latest 7.x
bazel_dep(name = "eigen", version = "4.0.0-20241125.bcr.3", repo_name = "DO_NOT_USE_eigen")
bazel_dep(name = "grpc-java", version = "1.75.0", repo_name = "DO_NOT_USE_grpc_java")
# TODO: publish an official version of rules_ml_toolchain to BCR
bazel_dep(name = "rules_ml_toolchain")
# To calculate integrity:
# wget -O temp_module_archive.tar.gz <archive URL>
# HASH=$(openssl dgst -sha256 -binary temp_module_archive.tar.gz | openssl base64 -A)
# echo "sha256-${HASH}"
archive_override(
module_name = "rules_ml_toolchain",
integrity = "sha256-axspTL7LmKCLz+WWQUYfcuET2zD6kbRPzEnZgJm1umU=",
strip_prefix = "rules_ml_toolchain-b11745590f513ec55b32e2d126073576fde18c71",
urls = ["https://github.com/google-ml-infra/rules_ml_toolchain/archive/b11745590f513ec55b32e2d126073576fde18c71.tar.gz"],
)
# TODO: Upstream the patch?
single_version_override(
module_name = "grpc",
patch_strip = 1,
patches = [
"//third_party/grpc:grpc.patch",
],
version = "1.81.0",
)
# TODO: Upstream those patch?
single_version_override(
module_name = "abseil-cpp",
version = "20260526.0",
patch_strip = 1,
patches = [
"//third_party/absl:btree.patch",
"//third_party/absl:build_dll.patch",
"//third_party/absl:endian.patch",
],
)
single_version_override(
module_name = "protobuf",
patch_strip = 1,
patches = [
"//third_party/protobuf:protobuf_arena.patch",
"//third_party/protobuf:fix_message_lite_incomplete_type.patch",
# The following patch is needed to fix package loading for `bazel query "deps(//xla/...)"`.
"//third_party/protobuf:fix_python_dist_package.patch",
],
version = "32.1",
)
# Use an unreleased version of googletest
archive_override(
module_name = "googletest",
patch_strip = 1,
patches = [
"//third_party/googletest:0001-Add-ASSERT_OK-EXPECT_OK-ASSERT_OK_AND_ASSIGN-macros.patch",
],
strip_prefix = "googletest-28e9d1f26771c6517c3b4be10254887673c94018",
urls = ["https://github.com/google/googletest/archive/28e9d1f26771c6517c3b4be10254887673c94018.zip"],
)
##############################################################
# C++ dependencies
# TODO: most of them can be Bazel modules, but we need a release strategy for them
third_party = use_extension("//third_party/extensions:third_party.bzl", "third_party_ext")
use_repo(
third_party,
"FXdiv",
"XNNPACK",
"cpuinfo",
"cudnn_frontend_archive",
"cutlass_archive",
"dlpack",
"ducc",
"eigen_archive",
"farmhash_archive",
"farmhash_gpu_archive",
"fmt",
"gloo",
"highwayhash",
"hwloc",
"implib_so",
"llvm-raw",
"llvm_openmp",
"mkl_dnn_acl_compatible",
"ml_dtypes_py",
"mpitrampoline",
"nanobind",
"nccl_archive",
"net_zstd",
"nvshmem",
"nvtx_archive",
"onednn",
"onednn_async",
"org_sqlite",
"pthreadpool",
"raft",
"rapids_logger",
"riegeli",
"rmm",
"robin_map",
"rocm_device_libs",
"shardy",
"slinky",
"spdlog",
"stablehlo",
"transformer_engine",
"triton",
"uv",
)
##############################################################
# Python toolchain and pypi dependencies
single_version_override(
module_name = "rules_python",
patch_strip = 1,
patches = [
"//third_party/py:rules_python_pip_version.patch",
"//third_party/py:rules_python_freethreaded.patch",
"//third_party/py:rules_python_versions.patch",
"//third_party/py:rules_python_scope.patch",
],
version = "1.8.5",
)
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
python.defaults(python_version = "3.11")
python.toolchain(python_version = "3.11")
use_repo(python, "pythons_hub")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.whl_mods(
additive_build_content = """
load("@rules_cc//cc:cc_library.bzl", "cc_library")
cc_library(
name = "numpy_headers_2",
hdrs = glob(["site-packages/numpy/_core/include/**/*.h"]),
strip_include_prefix="site-packages/numpy/_core/include/",
)
cc_library(
name = "numpy_headers_1",
hdrs = glob(["site-packages/numpy/core/include/**/*.h"]),
strip_include_prefix="site-packages/numpy/core/include/",
)
cc_library(
name = "numpy_headers",
deps = [":numpy_headers_2", ":numpy_headers_1"],
)
""",
hub_name = "pypi_mods",
whl_name = "numpy",
)
pip.parse(
extra_hub_aliases = {
"numpy": ["numpy_headers"],
},
hub_name = "xla_pypi",
python_version = "3.11",
requirements_lock = "//:requirements_lock_3_11.txt",
whl_modifications = {
"@pypi_mods//:numpy.json": "numpy",
},
)
use_repo(pip, "pypi_mods", pypi = "xla_pypi")
python_version_ext = use_extension("@rules_ml_toolchain//extensions:python_version.bzl", "python_version_ext")
use_repo(python_version_ext, "python_version_repo")
##############################################################
# Other dependencies via module extensions
### TSL
tsl_extension = use_extension("//third_party/extensions:tsl.bzl", "tsl_extension")
use_repo(tsl_extension, "tsl")
### LLVM
llvm = use_extension("//third_party/extensions:llvm.bzl", "llvm_extension")
use_repo(llvm, "llvm-project")
### pybind
pybind11_internal_configure = use_extension(
"@pybind11_bazel//:internal_configure.bzl",
"internal_configure_extension",
)
use_repo(pybind11_internal_configure, "pybind11")
### RBE
rbe_config = use_extension("//third_party/extensions:rbe_config.bzl", "rbe_config_ext")
use_repo(rbe_config, "ml_build_config_platform")
remote_execution_configure = use_extension("//third_party/extensions:remote_execution_configure.bzl", "remote_execution_configure_ext")
use_repo(remote_execution_configure, "local_config_remote_execution")
### From @rules_ml_toolchain
cuda_configure = use_extension("@rules_ml_toolchain//extensions:cuda_configure.bzl", "cuda_configure_ext")
use_repo(cuda_configure, "local_config_cuda")
nccl_configure = use_extension("@rules_ml_toolchain//extensions:nccl_configure.bzl", "nccl_configure_ext")
use_repo(nccl_configure, "local_config_nccl")
nccl_redist = use_extension("@rules_ml_toolchain//extensions:nccl_redist.bzl", "nccl_redist_ext")
use_repo(nccl_redist, "cuda_nccl")
sycl_configure = use_extension("@rules_ml_toolchain//extensions:sycl_configure.bzl", "sycl_configure_ext")
use_repo(sycl_configure, "level_zero", "local_config_sycl", "oneapi", "zero_loader")
local_sysroot = use_extension("@rules_ml_toolchain//extensions:local_sysroot_configure.bzl", "local_sysroot_ext")
use_repo(local_sysroot, "local_sysroot_config")
cuda_redist_init_ext = use_extension("@rules_ml_toolchain//extensions:cuda_redist_init.bzl", "cuda_redist_init_ext")
use_repo(
cuda_redist_init_ext,
"cuda_cublas",
"cuda_cudart",
"cuda_cudnn",
"cuda_cufft",
"cuda_cupti",
"cuda_curand",
"cuda_cusolver",
"cuda_cusparse",
"cuda_driver",
"cuda_nvcc",
"cuda_nvdisasm",
"cuda_nvjitlink",
"cuda_nvml",
"cuda_nvrtc",
"cuda_nvtx",
"cuda_nvvm",
)
# Override cuda_cccl to use a newer version defined in the cccl_extension.
cccl_extension = use_extension("//third_party/cccl:cccl_extension.bzl", "cccl_extension")
use_repo(cccl_extension, "cuda_cccl")
override_repo(
cuda_redist_init_ext,
cuda_cccl = "cuda_cccl",
)
nvshmem_redist = use_extension("@rules_ml_toolchain//extensions:nvshmem_redist.bzl", "nvshmem_redist_ext")
use_repo(nvshmem_redist, "nvidia_nvshmem")
toolchain_ext = use_extension("@rules_ml_toolchain//extensions:toolchain.bzl", "toolchain_ext")
use_repo(toolchain_ext, "llvm18_linux_x86_64", "llvm_linux_x86_64")
register_toolchains("@rules_ml_toolchain//cc:linux_x86_64_linux_x86_64")
register_toolchains("@rules_ml_toolchain//cc:linux_x86_64_linux_x86_64_cuda")
register_toolchains("@rules_ml_toolchain//cc:linux_x86_64_linux_x86_64_sycl")
register_toolchains("@rules_ml_toolchain//cc:linux_aarch64_linux_aarch64")
register_toolchains("@rules_ml_toolchain//cc:linux_aarch64_linux_aarch64_cuda")
### Other local config repos
local_clang_configure = use_extension("@rules_ml_toolchain//extensions:local_clang_configure.bzl", "local_clang_configure_ext")
use_repo(local_clang_configure, "local_config_clang")
rocm_configure = use_extension("//third_party/extensions:rocm_configure.bzl", "rocm_configure_ext")
use_repo(rocm_configure, "config_rocm_hipcc", "local_config_rocm")
tensorrt_configure = use_extension("//third_party/extensions:tensorrt_configure.bzl", "tensorrt_configure_ext")
use_repo(tensorrt_configure, "local_config_tensorrt")
pjrt_nightly_timestamp = use_extension("//build_tools/pjrt_wheels:nightly.bzl", "nightly_timestamp_repo_bzlmod")
use_repo(pjrt_nightly_timestamp, "nightly_timestamp")
pjrt_rc_number = use_extension("//build_tools/pjrt_wheels:release_candidate.bzl", "rc_number_repo_bzlmod")
use_repo(pjrt_rc_number, "rc_number")
### libdrm (dedicated extension to avoid Bzlmod merging issues)
libdrm_ext = use_extension("//third_party/libdrm:extension.bzl", "libdrm_ext")
use_repo(libdrm_ext, "libdrm")