diff --git a/BUILD.bazel b/BUILD.bazel index 43754bbb..ecc55c12 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -8,6 +8,7 @@ load("@rules_python_gazelle_plugin//modules_mapping:def.bzl", "modules_mapping") # gazelle:exclude internal_deps.bzl # gazelle:exclude py/tests/ # gazelle:exclude examples/django +# gazelle:map_kind bzl_library bzl_library @bazel_lib//:bzl_library.bzl gazelle_python_manifest( name = "gazelle_python_manifest", diff --git a/MODULE.bazel b/MODULE.bazel index 38c67fce..7a8e3f82 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -11,8 +11,9 @@ module( # py_image_layer requires 2.x for the `tar` rule. # py_image_layer needs compute_unused_inputs attribute # py_image_layer needs repo_mapping fix. -bazel_dep(name = "aspect_bazel_lib", version = "2.16.0") +bazel_dep(name = "aspect_bazel_lib", version = "2.16.0") # TODO(alexeagle): remove bazel_dep(name = "aspect_tools_telemetry", version = "0.2.8") +bazel_dep(name = "bazel_lib", version = "3.0.0-rc.0") bazel_dep(name = "bazel_skylib", version = "1.4.2") bazel_dep(name = "rules_python", version = "0.29.0") bazel_dep(name = "platforms", version = "0.0.7") diff --git a/internal_deps.bzl b/internal_deps.bzl index dc2a8e22..d31dd30b 100644 --- a/internal_deps.bzl +++ b/internal_deps.bzl @@ -39,6 +39,13 @@ def rules_py_internal_deps(): ], ) + http_archive( + name = "bazel_lib", + sha256 = "0758ace949a93f709230a8e08ef35c5f0aacae2ff5d219b27da1d21d8233a709", + strip_prefix = "bazel-lib-3.0.0-rc.0", + url = "https://github.com/bazel-contrib/bazel-lib/releases/download/v3.0.0-rc.0/bazel-lib-v3.0.0-rc.0.tar.gz", + ) + # Override bazel_skylib distribution to fetch sources instead # so that the gazelle extension is included # see https://github.com/bazelbuild/bazel-skylib/issues/250 diff --git a/py/BUILD.bazel b/py/BUILD.bazel index 03a90557..24eca3c2 100644 --- a/py/BUILD.bazel +++ b/py/BUILD.bazel @@ -1,4 +1,4 @@ -load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +load("@bazel_lib//:bzl_library.bzl", "bzl_library") load("@bazel_skylib//rules:common_settings.bzl", "string_flag") # For stardoc to reference the files @@ -19,6 +19,7 @@ bzl_library( visibility = ["//visibility:public"], deps = [ "//py/private/toolchain:autodetecting", + "@bazel_tools//tools/build_defs/repo:cache.bzl", "@bazel_tools//tools/build_defs/repo:http.bzl", "@bazel_tools//tools/build_defs/repo:utils.bzl", ], @@ -42,3 +43,32 @@ bzl_library( "@aspect_bazel_lib//lib:utils", ], ) + +# This needs to dep on @aspect_tools_telemetry_report but we don't have that in WORKSPACE +# gazelle:exclude extensions.bzl +# bzl_library( +# name = "extensions", +# srcs = [ +# "extensions.bzl", +# "@aspect_tools_telemetry_report//:defs.bzl", +# ], +# visibility = ["//visibility:public"], +# deps = [ +# ":toolchains", +# "//tools:version", +# ], +# ) + +bzl_library( + name = "toolchains", + srcs = ["toolchains.bzl"], + visibility = ["//visibility:public"], + deps = [ + "//py/private/toolchain:autodetecting", + "//py/private/toolchain:repo", + "//py/private/toolchain:tools", + "//tools:version", + "@aspect_bazel_lib//lib:repositories", + "@bazel_tools//tools/build_defs/repo:http.bzl", + ], +) diff --git a/py/private/BUILD.bazel b/py/private/BUILD.bazel index 3286ac5b..2fa76e55 100644 --- a/py/private/BUILD.bazel +++ b/py/private/BUILD.bazel @@ -1,4 +1,4 @@ -load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +load("@bazel_lib//:bzl_library.bzl", "bzl_library") package(default_visibility = [ "//docs:__pkg__", @@ -87,18 +87,6 @@ bzl_library( ], ) -bzl_library( - name = "providers", - srcs = ["providers.bzl"], - visibility = ["//py:__subpackages__"], -) - -bzl_library( - name = "py_executable", - srcs = ["py_executable.bzl"], - visibility = ["//py:__subpackages__"], -) - bzl_library( name = "py_pex_binary", srcs = ["py_pex_binary.bzl"], @@ -110,11 +98,21 @@ bzl_library( ) bzl_library( - name = "virtual", - srcs = ["virtual.bzl"], + name = "providers", + srcs = ["providers.bzl"], +) + +bzl_library( + name = "py_executable", + srcs = ["py_executable.bzl"], ) bzl_library( name = "transitions", srcs = ["transitions.bzl"], ) + +bzl_library( + name = "virtual", + srcs = ["virtual.bzl"], +) diff --git a/py/private/py_venv/BUILD.bazel b/py/private/py_venv/BUILD.bazel index 7df2183a..469c4169 100644 --- a/py/private/py_venv/BUILD.bazel +++ b/py/private/py_venv/BUILD.bazel @@ -1,4 +1,4 @@ -load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +load("@bazel_lib//:bzl_library.bzl", "bzl_library") load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") load(":defs.bzl", "py_venv_test") @@ -50,3 +50,9 @@ py_venv_test( imports = ["."], main = "test_link.py", ) + +bzl_library( + name = "defs", + srcs = ["defs.bzl"], + deps = [":py_venv"], +) diff --git a/py/private/toolchain/BUILD.bazel b/py/private/toolchain/BUILD.bazel index 8f4a4f60..63c4a5b4 100644 --- a/py/private/toolchain/BUILD.bazel +++ b/py/private/toolchain/BUILD.bazel @@ -1,4 +1,4 @@ -load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +load("@bazel_lib//:bzl_library.bzl", "bzl_library") load(":tools.bzl", "resolved_venv_toolchain") exports_files( @@ -33,11 +33,27 @@ bzl_library( deps = ["//py/private:py_semantics"], ) +bzl_library( + name = "repo", + srcs = ["repo.bzl"], + visibility = ["//py:__subpackages__"], + deps = [ + ":tools", + "//tools:integrity", + "//tools:version", + ], +) + bzl_library( name = "tools", srcs = ["tools.bzl"], visibility = [ "//py:__subpackages__", + "//tools:__subpackages__", + ], + deps = [ + ":types", + "@bazel_skylib//lib:structs", ], ) diff --git a/py/repositories.bzl b/py/repositories.bzl index 12b58e41..e42d281d 100644 --- a/py/repositories.bzl +++ b/py/repositories.bzl @@ -21,6 +21,13 @@ def http_archive(name, **kwargs): def rules_py_dependencies(): """Fetch rules_py's dependencies""" + http_archive( + name = "bazel_lib", + sha256 = "0758ace949a93f709230a8e08ef35c5f0aacae2ff5d219b27da1d21d8233a709", + strip_prefix = "bazel-lib-3.0.0-rc.0", + url = "https://github.com/bazel-contrib/bazel-lib/releases/download/v3.0.0-rc.0/bazel-lib-v3.0.0-rc.0.tar.gz", + ) + # The minimal version of bazel_skylib we require http_archive( name = "bazel_skylib", diff --git a/py/unstable/BUILD.bazel b/py/unstable/BUILD.bazel index 982ded3f..a547a3fa 100644 --- a/py/unstable/BUILD.bazel +++ b/py/unstable/BUILD.bazel @@ -1,4 +1,4 @@ -load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +load("@bazel_lib//:bzl_library.bzl", "bzl_library") # For stardoc to reference the files exports_files(["defs.bzl"]) @@ -8,6 +8,6 @@ bzl_library( srcs = ["defs.bzl"], visibility = ["//visibility:public"], deps = [ - "//py/private/py_venv:defs.bzl", + "//py/private/py_venv:defs", ], ) diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel index e69de29b..fd1de5e5 100644 --- a/tools/BUILD.bazel +++ b/tools/BUILD.bazel @@ -0,0 +1,14 @@ +load("@bazel_lib//:bzl_library.bzl", "bzl_library") + +bzl_library( + name = "version", + srcs = ["version.bzl"], + visibility = ["//visibility:public"], +) + +bzl_library( + name = "integrity", + srcs = ["integrity.bzl"], + visibility = ["//visibility:public"], + deps = ["//py/private/toolchain:tools"], +)