blob: a238ccaae64a188339e8c7c2a7f472a7bfc999bd [file]
"aspect-build/rules_py"
module(
name = "aspect_rules_py",
compatibility_level = 1,
version = "1.12.1",
)
# NOTE: when publishing to BCR, we patch this to True, as we publish pre-built binaries along with our releases.
IS_RELEASE = True
bazel_dep(name = "bazel_features", version = "1.38.0")
bazel_dep(name = "bazel_lib", version = "3.0.0")
bazel_dep(name = "bazel_skylib", version = "1.4.2")
bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "rules_cc", version = "0.2.16")
bazel_dep(name = "rules_pkg", version = "1.1.0")
# TODO: when bumping to 1.9.0+, replace py/private/exec_tools/defs.bzl with
# rules_python's public py_exec_tools_toolchain and PyExecToolsInfo, and switch
# EXEC_TOOLS_TOOLCHAIN back to @rules_python//python:exec_tools_toolchain_type.
bazel_dep(name = "rules_python", version = "1.0.0")
bazel_dep(name = "rules_shell", version = "0.6.1")
bazel_dep(name = "tar.bzl", version = "0.10.1")
bazel_dep(name = "with_cfg.bzl", version = "0.14.6")
bazel_lib_toolchains = use_extension("@tar.bzl//tar:extensions.bzl", "toolchains")
use_repo(bazel_lib_toolchains, "bsd_tar_toolchains")
tools = use_extension("//py:extensions.bzl", "py_tools")
tools.rules_py_tools()
use_repo(tools, "rules_py_tools")
use_repo(tools, "rules_py_pex_2_3_1")
register_toolchains(
"@rules_py_tools//:all",
)
register_toolchains(
"@aspect_rules_py//py/private/toolchain/...",
dev_dependency = IS_RELEASE,
)
http_file = use_repo_rule(
"@bazel_tools//tools/build_defs/repo:http.bzl",
"http_file",
)
[
http_file(
name = "toml2json_" + name,
executable = True,
sha256 = sha256,
url = "https://github.com/hermeticbuild/toml2json/releases/download/v0.0.26/toml2json_" + name + ext,
)
for name, sha256, ext in [
("darwin_amd64", "632da497331d7aa5f2dd36b7c3c4339639e203bbafa56db77f0bb46cf46089a6", ""),
("darwin_arm64", "13e000bb10f66fd3eb7e72c1fbb382a72859fefb9a75b99173728b0136bd932f", ""),
("linux_amd64", "87921b36ceb343af152fc988be59eec49ac9865f2e499a48152bed03e66f8228", ""),
("linux_arm64", "b271e043e58814353a3f289fb7ce78198d742e730149325d0622d71f3d8595b5", ""),
("windows_amd64", "3fb037472c7ec2485b1c965253404841bfa32d571489b76dfbbc1c7ad6848884", ".exe"),
("windows_arm64", "f825f7b6aea181bb050d4112d3234ec4ef0de45fadc9e6f99c0adcb08db9cf64", ".exe"),
]
]
host = use_extension("//uv/private/host:extension.bzl", "host_platform")
use_repo(host, "aspect_rules_py_uv_host")
# PBS interpreters — used at repo-rule time for sdist inspection (needs >= 3.11
# for tomllib) and available as build-time toolchains.
interpreters = use_extension("//py/unstable:extension.bzl", "python_interpreters")
interpreters.configure(
releases = [
"20260303",
"20251031",
],
)
interpreters.toolchain(
python_version = "3.13",
)
use_repo(
interpreters,
"python_interpreters",
# Individual platform repos — must be visible so the uv extension can
# reference the host interpreter for sdist configure tooling.
"python_3_13_aarch64_apple_darwin",
"python_3_13_aarch64_unknown_linux_gnu",
"python_3_13_aarch64_unknown_linux_musl",
"python_3_13_i686_pc_windows_msvc",
"python_3_13_x86_64_apple_darwin",
"python_3_13_x86_64_pc_windows_msvc",
"python_3_13_x86_64_unknown_linux_gnu",
"python_3_13_x86_64_unknown_linux_musl",
)
register_toolchains("@python_interpreters//:all")
bazel_dep(name = "aspect_tools_telemetry", version = "0.5.2")
tel = use_extension("@aspect_tools_telemetry//:extension.bzl", "telemetry")
use_repo(tel, "aspect_tools_telemetry_report")
################################################################################
# Dev deps are the remainder of the file
# LLVM configuration
bazel_dep(name = "llvm", version = "0.7.1", dev_dependency = IS_RELEASE)
# Patch http_bsdtar_archive to tolerate missing `--include` patterns.
# See https://github.com/hermeticbuild/hermetic-llvm/issues/34.
single_version_override(
module_name = "llvm",
patch_strip = 1,
patches = ["//bazel/patches/llvm:http_bsdtar_archive_tolerant.patch"],
version = "0.7.1",
)
register_toolchains(
"@llvm//toolchain:all",
dev_dependency = IS_RELEASE,
)
# Override the macOS SDK with a community mirror; Apple's swcdn 403s CI IPs.
# See https://github.com/hermeticbuild/hermetic-llvm/issues/34.
osx = use_extension("@llvm//extensions:osx.bzl", "osx", dev_dependency = IS_RELEASE)
osx.from_archive(
sha256 = "beee7212d265a6d2867d0236cc069314b38d5fb3486a6515734e76fa210c784c",
strip_prefix = "MacOSX26.1.sdk",
type = "tar.xz",
urls = [
"https://github.com/joseluisq/macosx-sdks/releases/download/26.1/MacOSX26.1.sdk.tar.xz",
],
)
use_repo(osx, "macos_sdk")
# Rust configuration (via rules_rs's bundled rules_rust)
rules_rust_ext = use_extension(
"@rules_rs//rs:rules_rust.bzl",
"rules_rust",
dev_dependency = IS_RELEASE,
)
use_repo(rules_rust_ext, "rules_rust")
toolchains = use_extension(
"@rules_rs//rs/toolchains:module_extension.bzl",
"toolchains",
dev_dependency = IS_RELEASE,
)
toolchains.toolchain(
edition = "2024",
version = "1.88.0",
)
use_repo(toolchains, "default_rust_toolchains")
register_toolchains(
"@default_rust_toolchains//:all",
dev_dependency = IS_RELEASE,
)
bazel_dep(name = "aspect_gazelle_prebuilt", version = "0.0.18", dev_dependency = True)
bazel_dep(name = "buildifier_prebuilt", version = "8.5.1.2", dev_dependency = True)
bazel_dep(name = "bazelrc-preset.bzl", version = "1.9.2", dev_dependency = IS_RELEASE)
bazel_dep(name = "bazel_env.bzl", version = "0.5.0", dev_dependency = IS_RELEASE)
bazel_dep(name = "bzip2", version = "1.0.8.bcr.3", dev_dependency = IS_RELEASE)
bazel_dep(name = "gazelle", version = "0.47.0", dev_dependency = IS_RELEASE)
bazel_dep(name = "rules_go", version = "0.60.0", dev_dependency = IS_RELEASE)
bazel_dep(name = "rules_rs", version = "0.0.64", dev_dependency = IS_RELEASE)
bazel_dep(name = "xz", version = "5.4.5.bcr.7", dev_dependency = IS_RELEASE)
bazel_dep(name = "zstd", version = "1.5.7", dev_dependency = IS_RELEASE)
bazel_dep(name = "rules_multitool", version = "1.9.0", dev_dependency = IS_RELEASE)
multitool = use_extension("@rules_multitool//multitool:extension.bzl", "multitool", dev_dependency = IS_RELEASE)
multitool.hub(lockfile = "//tools:tools.lock.json")
use_repo(multitool, "multitool")
crate = use_extension(
"@rules_rs//rs:extensions.bzl",
"crate",
dev_dependency = IS_RELEASE,
)
crate.from_cargo(
name = "aspect_rules_py__crates",
cargo_lock = "//:Cargo.lock",
cargo_toml = "//:Cargo.toml",
platform_triples = [
"aarch64-apple-darwin",
"aarch64-unknown-linux-gnu",
"aarch64-unknown-linux-musl",
"x86_64-apple-darwin",
"x86_64-unknown-linux-gnu",
"x86_64-unknown-linux-musl",
],
)
crate.annotation(
crate = "backtrace",
# This just compiles code on Android, we don't need it.
gen_build_script = "off",
repositories = ["aspect_rules_py__crates"],
)
crate.annotation(
crate = "zstd-sys",
# This build script is naughty and tries to depend on system zstd or build it from source.
gen_build_script = "off",
repositories = ["aspect_rules_py__crates"],
deps = ["@@zstd+//:zstd"],
)
crate.annotation(
crate = "bzip2-sys",
gen_build_script = "off",
repositories = ["aspect_rules_py__crates"],
deps = ["@@bzip2+//:bz2"],
)
crate.annotation(
crate = "lzma-sys",
gen_build_script = "off",
repositories = ["aspect_rules_py__crates"],
deps = ["@@xz+//:lzma"],
)
use_repo(crate, "aspect_rules_py__crates")
# TODO: Replace with bazel_features?
# cf. https://github.com/bazel-contrib/bazelrc-preset.bzl/blob/main/MODULE.bazel#L8C1-L10C70
version = use_extension("@bazel_features//private:extensions.bzl", "version_extension", dev_dependency = IS_RELEASE)
use_repo(version, "bazel_features_globals", "bazel_features_version")
# rules_oci and friends
# rules_python and friends
bazel_dep(name = "rules_python_gazelle_plugin", version = "1.0.0", dev_dependency = IS_RELEASE)
python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = IS_RELEASE)
python.toolchain(
is_default = True,
python_version = "3.9",
)
python.toolchain(
is_default = False,
python_version = "3.12",
)
# We still use pip for testing the virtual deps machinery
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_dependency = IS_RELEASE)
pip.parse(
hub_name = "django",
python_version = "3.9",
requirements_lock = "//py/tests/virtual/django:requirements.txt",
)
use_repo(pip, "django")
# For everything else, we use our own uv machinery
uv_bin = use_extension("//uv/unstable:extension.bzl", "uv_bin", dev_dependency = IS_RELEASE)
uv_bin.toolchain()
use_repo(uv_bin, "uv")
uv = use_extension("//uv/unstable:extension.bzl", "uv", dev_dependency = IS_RELEASE)
uv.declare_hub(
hub_name = "pypi",
)
uv.project(
name = "aspect_rules_py",
default_build_dependencies = [
"build",
"setuptools",
"maturin",
],
hub_name = "pypi",
lock = "//:uv.lock",
pyproject = "//:pyproject.toml",
)
uv.unstable_annotate_packages(
src = "//:annotations.toml",
lock = "//:uv.lock",
)
use_repo(uv, "pypi")
register_toolchains(
"@uv//:all",
dev_dependency = IS_RELEASE,
)
http_file(
name = "django_4_2_4",
dev_dependency = IS_RELEASE,
downloaded_file_path = "Django-4.2.4-py3-none-any.whl",
sha256 = "860ae6a138a238fc4f22c99b52f3ead982bb4b1aad8c0122bcd8c8a3a02e409d",
urls = ["https://files.pythonhosted.org/packages/7f/9e/fc6bab255ae10bc57fa2f65646eace3d5405fbb7f5678b90140052d1db0f/Django-4.2.4-py3-none-any.whl"],
)
http_file(
name = "django_4_1_10",
dev_dependency = IS_RELEASE,
downloaded_file_path = "Django-4.1.10-py3-none-any.whl",
sha256 = "26d0260c2fb8121009e62ffc548b2398dea2522b6454208a852fb0ef264c206c",
urls = ["https://files.pythonhosted.org/packages/34/25/8a218de57fc9853297a1a8e4927688eff8107d5bc6dcf6c964c59801f036/Django-4.1.10-py3-none-any.whl"],
)
http_file(
name = "sqlparse_0_4_0",
dev_dependency = IS_RELEASE,
downloaded_file_path = "sqlparse-0.4.0-py3-none-any.whl",
sha256 = "0523026398aea9c8b5f7a4a6d5c0829c285b4fbd960c17b5967a369342e21e01",
urls = ["https://files.pythonhosted.org/packages/10/96/36c136013c4a6ecb8c6aa3eed66e6dcea838f85fd80e1446499f1dabfac7/sqlparse-0.4.0-py3-none-any.whl"],
)