From 6fc5874ab1103d0cc06c9efd1bcd53e03cf10755 Mon Sep 17 00:00:00 2001 From: Sam Gammon Date: Fri, 1 Sep 2023 16:40:24 -0700 Subject: [PATCH] feat: bazel settings integration - feat: detect and honor `compilation_mode` flag - feat: build with debug settings if `compilation_mode=dbg` - feat: ability to build a shared library - feat: build with `tool:coverage` if coverage is enabled and a test-only target is being built - docs: add doc which explains shared library feature - docs: add doc for built settings integration (more to come) Relates-To: sgammon/rules_graalvm#78 Relates-To: sgammon/rules_graalvm#85 Signed-off-by: Sam Gammon --- MODULE.bazel.lock | 720 ++++++------------ README.md | 11 +- docs/api/defs.md | 21 +- docs/api/legacy.md | 40 +- docs/build-settings.md | 18 + docs/index.md | 13 +- docs/shared-libraries.md | 34 + .../bzlmod/MODULE.bazel.lock | 8 +- graal/graal.bzl | 85 ++- graalvm/nativeimage/rules.bzl | 37 +- internal/conditions/BUILD.bazel | 3 + internal/conditions/compiler/BUILD.bazel | 24 + internal/conditions/tools/BUILD.bazel | 10 + internal/native_image/builder.bzl | 153 +++- internal/native_image/classic.bzl | 5 + internal/native_image/common.bzl | 56 +- internal/native_image/rules.bzl | 17 +- 17 files changed, 639 insertions(+), 616 deletions(-) create mode 100644 docs/build-settings.md create mode 100644 docs/shared-libraries.md create mode 100644 internal/conditions/BUILD.bazel create mode 100644 internal/conditions/compiler/BUILD.bazel create mode 100644 internal/conditions/tools/BUILD.bazel diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 8d2e09c6..c170d6db 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -2729,93 +2729,77 @@ } } }, - "@bazel_tools//tools/sh:sh_configure.bzl%sh_configure_extension": { - "bzlTransitiveDigest": "hp4NgmNjEg5+xgvzfh6L83bt9/aiiWETuNpwNuF1MSU=", - "accumulatedFileDigests": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_config_sh": { - "bzlFile": "@@bazel_tools//tools/sh:sh_configure.bzl", - "ruleClassName": "sh_config", - "attributes": {"name":"--bazel_tools~sh_configure_extension~local_config_sh"} - } - } - }, - "@rules_cc~0.0.8//cc:extensions.bzl%cc_configure": { - "bzlTransitiveDigest": "vbmanGWm78n1xDASxvoeShne52hqjvDgeMpJz1MazVs=", + "@buildifier_prebuilt~6.1.2.2//:defs.bzl%buildifier_prebuilt_deps_extension": { + "bzlTransitiveDigest": "TxjXyEKExp4rcoCCma27xL89cLpIWYI19YwSAztqpFA=", "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { - "local_config_cc": { - "bzlFile": "@@rules_cc~0.0.8//cc/private/toolchain:cc_configure.bzl", - "ruleClassName": "cc_autoconf", - "attributes": {"name":"--rules_cc~0.0.8~cc_configure~local_config_cc"} + "buildozer_darwin_amd64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildozer_darwin_amd64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildozer-darwin-amd64"],"downloaded_file_path":"--buildozer","executable":true,"sha256":"--4014751a4cc5e91a7dc4b64be7b30c565bd9014ae6d1879818dc624562a1d431"} }, - "local_config_cc_toolchains": { - "bzlFile": "@@rules_cc~0.0.8//cc/private/toolchain:cc_configure.bzl", - "ruleClassName": "cc_autoconf_toolchains", - "attributes": {"name":"--rules_cc~0.0.8~cc_configure~local_config_cc_toolchains"} + "buildifier_linux_amd64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildifier_linux_amd64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildifier-linux-amd64"],"downloaded_file_path":"--buildifier","executable":true,"sha256":"--51bc947dabb7b14ec6fb1224464fbcf7a7cb138f1a10a3b328f00835f72852ce"} }, - "local_config_xcode": { - "bzlFile": "@@bazel_tools//tools/osx:xcode_configure.bzl", - "ruleClassName": "xcode_autoconf", - "attributes": {"name":"--rules_cc~0.0.8~cc_configure~local_config_xcode","xcode_locator":"--@bazel_tools//tools/osx:xcode_locator.m","remote_xcode":"--"} - } - } - }, - "@rules_go~0.41.0//go:extensions.bzl%go_sdk": { - "bzlTransitiveDigest": "HvN4mtHrbOMKKDhbCq8jbtFNrqNr9pyMl/v1QR8leqo=", - "accumulatedFileDigests": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "go_default_sdk": { - "bzlFile": "@@rules_go~0.41.0//go/private:sdk.bzl", - "ruleClassName": "go_download_sdk_rule", - "attributes": {"name":"--rules_go~0.41.0~go_sdk~go_default_sdk","goos":"--","goarch":"--","sdks":{},"urls":["--https://dl.google.com/go/{}"],"version":"--1.20.2"} + "buildozer_darwin_arm64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildozer_darwin_arm64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildozer-darwin-arm64"],"downloaded_file_path":"--buildozer","executable":true,"sha256":"--e78bd5357f2356067d4b0d49ec4e4143dd9b1308746afc6ff11b55b952f462d7"} }, - "go_host_compatible_sdk_label": { - "bzlFile": "@@rules_go~0.41.0//go/private:extensions.bzl", - "ruleClassName": "host_compatible_toolchain", - "attributes": {"name":"--rules_go~0.41.0~go_sdk~go_host_compatible_sdk_label","toolchain":"--@go_default_sdk//:ROOT"} + "buildozer_linux_amd64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildozer_linux_amd64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildozer-linux-amd64"],"downloaded_file_path":"--buildozer","executable":true,"sha256":"--2aef0f1ef80a0140b8fe6e6a8eb822e14827d8855bfc6681532c7530339ea23b"} }, - "go_toolchains": { - "bzlFile": "@@rules_go~0.41.0//go/private:sdk.bzl", - "ruleClassName": "go_multiple_toolchains", - "attributes": {"name":"--rules_go~0.41.0~go_sdk~go_toolchains","prefixes":["--_0000_go_default_sdk_"],"geese":["--"],"goarchs":["--"],"sdk_repos":["--go_default_sdk"],"sdk_types":["--remote"],"sdk_versions":["--1.20.2"]} - } - } - }, - "@bazel_tools//tools/cpp:cc_configure.bzl%cc_configure_extension": { - "bzlTransitiveDigest": "1yplUMqys5KUic6iK45975EeMP+azVHWx3xKxQpGE3w=", - "accumulatedFileDigests": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_config_cc": { - "bzlFile": "@@bazel_tools//tools/cpp:cc_configure.bzl", - "ruleClassName": "cc_autoconf", - "attributes": {"name":"--bazel_tools~cc_configure_extension~local_config_cc"} + "buildozer_windows_amd64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildozer_windows_amd64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildozer-windows-amd64.exe"],"downloaded_file_path":"--buildozer.exe","executable":true,"sha256":"--07664d5d08ee099f069cd654070cabf2708efaae9f52dc83921fa400c67a868b"} }, - "local_config_cc_toolchains": { - "bzlFile": "@@bazel_tools//tools/cpp:cc_configure.bzl", - "ruleClassName": "cc_autoconf_toolchains", - "attributes": {"name":"--bazel_tools~cc_configure_extension~local_config_cc_toolchains"} + "buildozer_linux_arm64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildozer_linux_arm64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildozer-linux-arm64"],"downloaded_file_path":"--buildozer","executable":true,"sha256":"--586e27630cbc242e8bd6fe8e24485eca8dcadea6410cc13cbe059202655980ac"} + }, + "buildifier_windows_amd64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildifier_windows_amd64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildifier-windows-amd64.exe"],"downloaded_file_path":"--buildifier.exe","executable":true,"sha256":"--92bdd284fbc6766fc3e300b434ff9e68ac4d76a06cb29d1bdefe79a102a8d135"} + }, + "buildifier_prebuilt_toolchains": { + "bzlFile": "@@buildifier_prebuilt~6.1.2.2//:defs.bzl", + "ruleClassName": "_buildifier_toolchain_setup", + "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildifier_prebuilt_toolchains","assets_json":"--[{\"arch\":\"amd64\",\"name\":\"buildifier\",\"platform\":\"darwin\",\"sha256\":\"e2f4a67691c5f55634fbfb3850eb97dd91be0edd059d947b6c83d120682e0216\",\"version\":\"v6.1.2\"},{\"arch\":\"arm64\",\"name\":\"buildifier\",\"platform\":\"darwin\",\"sha256\":\"7549b5f535219ac957aa2a6069d46fbfc9ea3f74abd85fd3d460af4b1a2099a6\",\"version\":\"v6.1.2\"},{\"arch\":\"amd64\",\"name\":\"buildifier\",\"platform\":\"linux\",\"sha256\":\"51bc947dabb7b14ec6fb1224464fbcf7a7cb138f1a10a3b328f00835f72852ce\",\"version\":\"v6.1.2\"},{\"arch\":\"arm64\",\"name\":\"buildifier\",\"platform\":\"linux\",\"sha256\":\"0ba6e8e3208b5a029164e542ddb5509e618f87b639ffe8cc2f54770022853080\",\"version\":\"v6.1.2\"},{\"arch\":\"amd64\",\"name\":\"buildifier\",\"platform\":\"windows\",\"sha256\":\"92bdd284fbc6766fc3e300b434ff9e68ac4d76a06cb29d1bdefe79a102a8d135\",\"version\":\"v6.1.2\"},{\"arch\":\"amd64\",\"name\":\"buildozer\",\"platform\":\"darwin\",\"sha256\":\"4014751a4cc5e91a7dc4b64be7b30c565bd9014ae6d1879818dc624562a1d431\",\"version\":\"v6.1.2\"},{\"arch\":\"arm64\",\"name\":\"buildozer\",\"platform\":\"darwin\",\"sha256\":\"e78bd5357f2356067d4b0d49ec4e4143dd9b1308746afc6ff11b55b952f462d7\",\"version\":\"v6.1.2\"},{\"arch\":\"amd64\",\"name\":\"buildozer\",\"platform\":\"linux\",\"sha256\":\"2aef0f1ef80a0140b8fe6e6a8eb822e14827d8855bfc6681532c7530339ea23b\",\"version\":\"v6.1.2\"},{\"arch\":\"arm64\",\"name\":\"buildozer\",\"platform\":\"linux\",\"sha256\":\"586e27630cbc242e8bd6fe8e24485eca8dcadea6410cc13cbe059202655980ac\",\"version\":\"v6.1.2\"},{\"arch\":\"amd64\",\"name\":\"buildozer\",\"platform\":\"windows\",\"sha256\":\"07664d5d08ee099f069cd654070cabf2708efaae9f52dc83921fa400c67a868b\",\"version\":\"v6.1.2\"}]"} + }, + "buildifier_darwin_amd64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildifier_darwin_amd64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildifier-darwin-amd64"],"downloaded_file_path":"--buildifier","executable":true,"sha256":"--e2f4a67691c5f55634fbfb3850eb97dd91be0edd059d947b6c83d120682e0216"} + }, + "buildifier_darwin_arm64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildifier_darwin_arm64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildifier-darwin-arm64"],"downloaded_file_path":"--buildifier","executable":true,"sha256":"--7549b5f535219ac957aa2a6069d46fbfc9ea3f74abd85fd3d460af4b1a2099a6"} + }, + "buildifier_linux_arm64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildifier_linux_arm64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildifier-linux-arm64"],"downloaded_file_path":"--buildifier","executable":true,"sha256":"--0ba6e8e3208b5a029164e542ddb5509e618f87b639ffe8cc2f54770022853080"} } } }, - "//:extensions.bzl%graalvm": { - "bzlTransitiveDigest": "aQJryYP9wiwZXQ8JYwsuauQpVIo/X7CDOS2SiXt2rBI=", + "@bazel_tools//tools/sh:sh_configure.bzl%sh_configure_extension": { + "bzlTransitiveDigest": "hp4NgmNjEg5+xgvzfh6L83bt9/aiiWETuNpwNuF1MSU=", "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { - "graalvm": { - "bzlFile": "@@//internal:graalvm_bindist.bzl", - "ruleClassName": "_graalvm_bindist_repository", - "attributes": {"name":"--_main~graalvm~graalvm","version":"--20.0.2","java_version":"--20","distribution":"--ce","components":["--wasm","--js"],"setup_actions":[],"enable_toolchain":true,"toolchain_config":"--graalvm_toolchain_config_repo"} - }, - "graalvm_toolchain_config_repo": { - "bzlFile": "@@//internal:graalvm_bindist.bzl", - "ruleClassName": "_toolchain_config", - "attributes": {"name":"--_main~graalvm~graalvm_toolchain_config_repo","build_file":"--\nconfig_setting(\n name = \"prefix_version_setting\",\n values = {\"java_runtime_version\": \"graalvm_20\"},\n visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n name = \"version_setting\",\n values = {\"java_runtime_version\": \"20\"},\n visibility = [\"//visibility:private\"],\n)\nalias(\n name = \"version_or_prefix_version_setting\",\n actual = select({\n \":version_setting\": \":version_setting\",\n \"//conditions:default\": \":prefix_version_setting\",\n }),\n visibility = [\"//visibility:private\"],\n)\nalias(\n name = \"toolchain_gvm\",\n actual = \"gvm\",\n visibility = [\"//visibility:public\"],\n)\ntoolchain(\n name = \"gvm\",\n exec_compatible_with = [\n \n ],\n target_compatible_with = [\n \n ],\n toolchain = \"@graalvm//:gvm\",\n toolchain_type = \"@rules_graalvm//graalvm/toolchain\",\n visibility = [\"//visibility:public\"],\n)\ntoolchain(\n name = \"toolchain\",\n target_compatible_with = [],\n target_settings = [\":version_or_prefix_version_setting\"],\n toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n toolchain = \"@graalvm//:jdk\",\n visibility = [\"//visibility:public\"],\n)\n\ntoolchain(\n name = \"bootstrap_runtime_toolchain\",\n # These constraints are not required for correctness, but prevent fetches of remote JDK for\n # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n # the same configuration, this constraint will not result in toolchain resolution failures.\n exec_compatible_with = [],\n target_settings = [\":version_or_prefix_version_setting\"],\n toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n toolchain = \"@graalvm//:jdk\",\n visibility = [\"//visibility:public\"],\n)\n\n"} + "local_config_sh": { + "bzlFile": "@@bazel_tools//tools/sh:sh_configure.bzl", + "ruleClassName": "sh_config", + "attributes": {"name":"--bazel_tools~sh_configure_extension~local_config_sh"} } } }, @@ -3066,27 +3050,119 @@ } } }, - "@bazel_tools//tools/osx:xcode_configure.bzl%xcode_configure_extension": { - "bzlTransitiveDigest": "nr+7RQdBKy+vbv8CZBZ2fN6sDviz3GovjZnFZSmMeYE=", + "//:extensions.bzl%graalvm": { + "bzlTransitiveDigest": "aQJryYP9wiwZXQ8JYwsuauQpVIo/X7CDOS2SiXt2rBI=", "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { - "local_config_xcode": { - "bzlFile": "@@bazel_tools//tools/osx:xcode_configure.bzl", - "ruleClassName": "xcode_autoconf", - "attributes": {"name":"--bazel_tools~xcode_configure_extension~local_config_xcode","xcode_locator":"--@bazel_tools//tools/osx:xcode_locator.m","remote_xcode":"--"} + "graalvm": { + "bzlFile": "@@//internal:graalvm_bindist.bzl", + "ruleClassName": "_graalvm_bindist_repository", + "attributes": {"name":"--_main~graalvm~graalvm","version":"--20.0.2","java_version":"--20","distribution":"--ce","components":["--wasm","--js"],"setup_actions":[],"enable_toolchain":true,"toolchain_config":"--graalvm_toolchain_config_repo"} + }, + "graalvm_toolchain_config_repo": { + "bzlFile": "@@//internal:graalvm_bindist.bzl", + "ruleClassName": "_toolchain_config", + "attributes": {"name":"--_main~graalvm~graalvm_toolchain_config_repo","build_file":"--\nconfig_setting(\n name = \"prefix_version_setting\",\n values = {\"java_runtime_version\": \"graalvm_20\"},\n visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n name = \"version_setting\",\n values = {\"java_runtime_version\": \"20\"},\n visibility = [\"//visibility:private\"],\n)\nalias(\n name = \"version_or_prefix_version_setting\",\n actual = select({\n \":version_setting\": \":version_setting\",\n \"//conditions:default\": \":prefix_version_setting\",\n }),\n visibility = [\"//visibility:private\"],\n)\nalias(\n name = \"toolchain_gvm\",\n actual = \"gvm\",\n visibility = [\"//visibility:public\"],\n)\ntoolchain(\n name = \"gvm\",\n exec_compatible_with = [\n \n ],\n target_compatible_with = [\n \n ],\n toolchain = \"@graalvm//:gvm\",\n toolchain_type = \"@rules_graalvm//graalvm/toolchain\",\n visibility = [\"//visibility:public\"],\n)\ntoolchain(\n name = \"toolchain\",\n target_compatible_with = [],\n target_settings = [\":version_or_prefix_version_setting\"],\n toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n toolchain = \"@graalvm//:jdk\",\n visibility = [\"//visibility:public\"],\n)\n\ntoolchain(\n name = \"bootstrap_runtime_toolchain\",\n # These constraints are not required for correctness, but prevent fetches of remote JDK for\n # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n # the same configuration, this constraint will not result in toolchain resolution failures.\n exec_compatible_with = [],\n target_settings = [\":version_or_prefix_version_setting\"],\n toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n toolchain = \"@graalvm//:jdk\",\n visibility = [\"//visibility:public\"],\n)\n\n"} } } }, - "@bazel_tools//tools/test:extensions.bzl%remote_coverage_tools_extension": { - "bzlTransitiveDigest": "PEh3vETU0xQzauyboFj1AYs9nvzf23oQ3vbV/5bFnE4=", + "@rules_go~0.41.0//go:extensions.bzl%go_sdk": { + "bzlTransitiveDigest": "HvN4mtHrbOMKKDhbCq8jbtFNrqNr9pyMl/v1QR8leqo=", "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { - "remote_coverage_tools": { + "go_default_sdk": { + "bzlFile": "@@rules_go~0.41.0//go/private:sdk.bzl", + "ruleClassName": "go_download_sdk_rule", + "attributes": {"name":"--rules_go~0.41.0~go_sdk~go_default_sdk","goos":"--","goarch":"--","sdks":{},"urls":["--https://dl.google.com/go/{}"],"version":"--1.20.2"} + }, + "go_host_compatible_sdk_label": { + "bzlFile": "@@rules_go~0.41.0//go/private:extensions.bzl", + "ruleClassName": "host_compatible_toolchain", + "attributes": {"name":"--rules_go~0.41.0~go_sdk~go_host_compatible_sdk_label","toolchain":"--@go_default_sdk//:ROOT"} + }, + "go_toolchains": { + "bzlFile": "@@rules_go~0.41.0//go/private:sdk.bzl", + "ruleClassName": "go_multiple_toolchains", + "attributes": {"name":"--rules_go~0.41.0~go_sdk~go_toolchains","prefixes":["--_0000_go_default_sdk_"],"geese":["--"],"goarchs":["--"],"sdk_repos":["--go_default_sdk"],"sdk_types":["--remote"],"sdk_versions":["--1.20.2"]} + } + } + }, + "@rules_python~0.25.0//python/extensions:python.bzl%python": { + "bzlTransitiveDigest": "eR18cbVZf415f9EVaOCY3pHkJ6+YaVXkRSAwFHgX+mI=", + "accumulatedFileDigests": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "python_3_11_s390x-unknown-linux-gnu": { + "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", + "ruleClassName": "python_repository", + "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_s390x-unknown-linux-gnu","sha256":"--e477f0749161f9aa7887964f089d9460a539f6b4a8fdab5166f898210e1a87a4","patches":[],"platform":"--s390x-unknown-linux-gnu","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-s390x-unknown-linux-gnu-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-s390x-unknown-linux-gnu-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--","ignore_root_user_error":false} + }, + "python_3_11_aarch64-unknown-linux-gnu": { + "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", + "ruleClassName": "python_repository", + "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_aarch64-unknown-linux-gnu","sha256":"--2e84fc53f4e90e11963281c5c871f593abcb24fc796a50337fa516be99af02fb","patches":[],"platform":"--aarch64-unknown-linux-gnu","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-aarch64-unknown-linux-gnu-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-aarch64-unknown-linux-gnu-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--@python_3_11_aarch64-unknown-linux-gnu_coverage//:coverage","ignore_root_user_error":false} + }, + "python_3_11_aarch64-apple-darwin": { + "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", + "ruleClassName": "python_repository", + "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin","sha256":"--cb6d2948384a857321f2aa40fa67744cd9676a330f08b6dad7070bda0b6120a4","patches":[],"platform":"--aarch64-apple-darwin","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-aarch64-apple-darwin-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-aarch64-apple-darwin-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--@python_3_11_aarch64-apple-darwin_coverage//:coverage","ignore_root_user_error":false} + }, + "pythons_hub": { + "bzlFile": "@@rules_python~0.25.0//python/extensions/private:pythons_hub.bzl", + "ruleClassName": "hub_repo", + "attributes": {"name":"--rules_python~0.25.0~python~pythons_hub","default_python_version":"--3.11","toolchain_prefixes":["--_0000_python_3_11_"],"toolchain_python_versions":["--3.11"],"toolchain_set_python_version_constraints":["--False"],"toolchain_user_repository_names":["--python_3_11"]} + }, + "python_3_11_x86_64-pc-windows-msvc": { + "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", + "ruleClassName": "python_repository", + "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_x86_64-pc-windows-msvc","sha256":"--878614c03ea38538ae2f758e36c85d2c0eb1eaaca86cd400ff8c76693ee0b3e1","patches":[],"platform":"--x86_64-pc-windows-msvc","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-x86_64-pc-windows-msvc-shared-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-x86_64-pc-windows-msvc-shared-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--","ignore_root_user_error":false} + }, + "python_3_11_aarch64-unknown-linux-gnu_coverage": { "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", "ruleClassName": "http_archive", - "attributes": {"name":"--bazel_tools~remote_coverage_tools_extension~remote_coverage_tools","sha256":"--7006375f6756819b7013ca875eab70a541cf7d89142d9c511ed78ea4fefa38af","urls":["--https://mirror.bazel.build/bazel_coverage_output_generator/releases/coverage_output_generator-v2.6.zip"]} + "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_aarch64-unknown-linux-gnu_coverage","build_file_content":"--\nfilegroup(\n name = \"coverage\",\n srcs = [\"coverage/__main__.py\"],\n data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n visibility = [\"@python_3_11_aarch64-unknown-linux-gnu//:__subpackages__\"],\n)\n ","patch_args":["---p1"],"patches":["@@rules_python~0.25.0//python/private:coverage.patch"],"sha256":"--fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3","type":"--zip","urls":["--https://files.pythonhosted.org/packages/8c/95/16eed713202406ca0a37f8ac259bbf144c9d24f9b8097a8e6ead61da2dbb/coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"]} + }, + "python_3_11_x86_64-apple-darwin_coverage": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_x86_64-apple-darwin_coverage","build_file_content":"--\nfilegroup(\n name = \"coverage\",\n srcs = [\"coverage/__main__.py\"],\n data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n visibility = [\"@python_3_11_x86_64-apple-darwin//:__subpackages__\"],\n)\n ","patch_args":["---p1"],"patches":["@@rules_python~0.25.0//python/private:coverage.patch"],"sha256":"--06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f","type":"--zip","urls":["--https://files.pythonhosted.org/packages/c6/fa/529f55c9a1029c840bcc9109d5a15ff00478b7ff550a1ae361f8745f8ad5/coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl"]} + }, + "python_3_11_aarch64-apple-darwin_coverage": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin_coverage","build_file_content":"--\nfilegroup(\n name = \"coverage\",\n srcs = [\"coverage/__main__.py\"],\n data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n visibility = [\"@python_3_11_aarch64-apple-darwin//:__subpackages__\"],\n)\n ","patch_args":["---p1"],"patches":["@@rules_python~0.25.0//python/private:coverage.patch"],"sha256":"--5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe","type":"--zip","urls":["--https://files.pythonhosted.org/packages/67/d7/cd8fe689b5743fffac516597a1222834c42b80686b99f5b44ef43ccc2a43/coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl"]} + }, + "python_3_11": { + "bzlFile": "@@rules_python~0.25.0//python/private:toolchains_repo.bzl", + "ruleClassName": "toolchain_aliases", + "attributes": {"name":"--rules_python~0.25.0~python~python_3_11","python_version":"--3.11.4","user_repository_name":"--python_3_11"} + }, + "python_3_11_ppc64le-unknown-linux-gnu": { + "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", + "ruleClassName": "python_repository", + "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_ppc64le-unknown-linux-gnu","sha256":"--df7b92ed9cec96b3bb658fb586be947722ecd8e420fb23cee13d2e90abcfcf25","patches":[],"platform":"--ppc64le-unknown-linux-gnu","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-ppc64le-unknown-linux-gnu-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-ppc64le-unknown-linux-gnu-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--","ignore_root_user_error":false} + }, + "python_3_11_x86_64-apple-darwin": { + "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", + "ruleClassName": "python_repository", + "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_x86_64-apple-darwin","sha256":"--47e1557d93a42585972772e82661047ca5f608293158acb2778dccf120eabb00","patches":[],"platform":"--x86_64-apple-darwin","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-x86_64-apple-darwin-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-x86_64-apple-darwin-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--@python_3_11_x86_64-apple-darwin_coverage//:coverage","ignore_root_user_error":false} + }, + "python_versions": { + "bzlFile": "@@rules_python~0.25.0//python/private:toolchains_repo.bzl", + "ruleClassName": "multi_toolchain_aliases", + "attributes": {"name":"--rules_python~0.25.0~python~python_versions","python_versions":{"--3.11":"--python_3_11"}} + }, + "python_3_11_x86_64-unknown-linux-gnu_coverage": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_x86_64-unknown-linux-gnu_coverage","build_file_content":"--\nfilegroup(\n name = \"coverage\",\n srcs = [\"coverage/__main__.py\"],\n data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n visibility = [\"@python_3_11_x86_64-unknown-linux-gnu//:__subpackages__\"],\n)\n ","patch_args":["---p1"],"patches":["@@rules_python~0.25.0//python/private:coverage.patch"],"sha256":"--63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb","type":"--zip","urls":["--https://files.pythonhosted.org/packages/a7/cd/3ce94ad9d407a052dc2a74fbeb1c7947f442155b28264eb467ee78dea812/coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]} + }, + "python_3_11_x86_64-unknown-linux-gnu": { + "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", + "ruleClassName": "python_repository", + "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_x86_64-unknown-linux-gnu","sha256":"--e26247302bc8e9083a43ce9e8dd94905b40d464745b1603041f7bc9a93c65d05","patches":[],"platform":"--x86_64-unknown-linux-gnu","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-x86_64-unknown-linux-gnu-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-x86_64-unknown-linux-gnu-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--@python_3_11_x86_64-unknown-linux-gnu_coverage//:coverage","ignore_root_user_error":false} } } }, @@ -3307,361 +3383,71 @@ } } }, - "@rules_python~0.25.0//python/extensions:python.bzl%python": { - "bzlTransitiveDigest": "eR18cbVZf415f9EVaOCY3pHkJ6+YaVXkRSAwFHgX+mI=", + "@bazel_tools//tools/cpp:cc_configure.bzl%cc_configure_extension": { + "bzlTransitiveDigest": "1yplUMqys5KUic6iK45975EeMP+azVHWx3xKxQpGE3w=", "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { - "python_3_11_s390x-unknown-linux-gnu": { - "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", - "ruleClassName": "python_repository", - "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_s390x-unknown-linux-gnu","sha256":"--e477f0749161f9aa7887964f089d9460a539f6b4a8fdab5166f898210e1a87a4","patches":[],"platform":"--s390x-unknown-linux-gnu","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-s390x-unknown-linux-gnu-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-s390x-unknown-linux-gnu-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--","ignore_root_user_error":false} - }, - "python_3_11_aarch64-unknown-linux-gnu": { - "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", - "ruleClassName": "python_repository", - "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_aarch64-unknown-linux-gnu","sha256":"--2e84fc53f4e90e11963281c5c871f593abcb24fc796a50337fa516be99af02fb","patches":[],"platform":"--aarch64-unknown-linux-gnu","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-aarch64-unknown-linux-gnu-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-aarch64-unknown-linux-gnu-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--@python_3_11_aarch64-unknown-linux-gnu_coverage//:coverage","ignore_root_user_error":false} - }, - "python_3_11_aarch64-apple-darwin": { - "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", - "ruleClassName": "python_repository", - "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin","sha256":"--cb6d2948384a857321f2aa40fa67744cd9676a330f08b6dad7070bda0b6120a4","patches":[],"platform":"--aarch64-apple-darwin","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-aarch64-apple-darwin-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-aarch64-apple-darwin-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--@python_3_11_aarch64-apple-darwin_coverage//:coverage","ignore_root_user_error":false} - }, - "pythons_hub": { - "bzlFile": "@@rules_python~0.25.0//python/extensions/private:pythons_hub.bzl", - "ruleClassName": "hub_repo", - "attributes": {"name":"--rules_python~0.25.0~python~pythons_hub","default_python_version":"--3.11","toolchain_prefixes":["--_0000_python_3_11_"],"toolchain_python_versions":["--3.11"],"toolchain_set_python_version_constraints":["--False"],"toolchain_user_repository_names":["--python_3_11"]} - }, - "python_3_11_x86_64-pc-windows-msvc": { - "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", - "ruleClassName": "python_repository", - "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_x86_64-pc-windows-msvc","sha256":"--878614c03ea38538ae2f758e36c85d2c0eb1eaaca86cd400ff8c76693ee0b3e1","patches":[],"platform":"--x86_64-pc-windows-msvc","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-x86_64-pc-windows-msvc-shared-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-x86_64-pc-windows-msvc-shared-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--","ignore_root_user_error":false} - }, - "python_3_11_aarch64-unknown-linux-gnu_coverage": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_aarch64-unknown-linux-gnu_coverage","build_file_content":"--\nfilegroup(\n name = \"coverage\",\n srcs = [\"coverage/__main__.py\"],\n data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n visibility = [\"@python_3_11_aarch64-unknown-linux-gnu//:__subpackages__\"],\n)\n ","patch_args":["---p1"],"patches":["@@rules_python~0.25.0//python/private:coverage.patch"],"sha256":"--fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3","type":"--zip","urls":["--https://files.pythonhosted.org/packages/8c/95/16eed713202406ca0a37f8ac259bbf144c9d24f9b8097a8e6ead61da2dbb/coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"]} - }, - "python_3_11_x86_64-apple-darwin_coverage": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_x86_64-apple-darwin_coverage","build_file_content":"--\nfilegroup(\n name = \"coverage\",\n srcs = [\"coverage/__main__.py\"],\n data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n visibility = [\"@python_3_11_x86_64-apple-darwin//:__subpackages__\"],\n)\n ","patch_args":["---p1"],"patches":["@@rules_python~0.25.0//python/private:coverage.patch"],"sha256":"--06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f","type":"--zip","urls":["--https://files.pythonhosted.org/packages/c6/fa/529f55c9a1029c840bcc9109d5a15ff00478b7ff550a1ae361f8745f8ad5/coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl"]} - }, - "python_3_11_aarch64-apple-darwin_coverage": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin_coverage","build_file_content":"--\nfilegroup(\n name = \"coverage\",\n srcs = [\"coverage/__main__.py\"],\n data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n visibility = [\"@python_3_11_aarch64-apple-darwin//:__subpackages__\"],\n)\n ","patch_args":["---p1"],"patches":["@@rules_python~0.25.0//python/private:coverage.patch"],"sha256":"--5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe","type":"--zip","urls":["--https://files.pythonhosted.org/packages/67/d7/cd8fe689b5743fffac516597a1222834c42b80686b99f5b44ef43ccc2a43/coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl"]} - }, - "python_3_11": { - "bzlFile": "@@rules_python~0.25.0//python/private:toolchains_repo.bzl", - "ruleClassName": "toolchain_aliases", - "attributes": {"name":"--rules_python~0.25.0~python~python_3_11","python_version":"--3.11.4","user_repository_name":"--python_3_11"} - }, - "python_3_11_ppc64le-unknown-linux-gnu": { - "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", - "ruleClassName": "python_repository", - "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_ppc64le-unknown-linux-gnu","sha256":"--df7b92ed9cec96b3bb658fb586be947722ecd8e420fb23cee13d2e90abcfcf25","patches":[],"platform":"--ppc64le-unknown-linux-gnu","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-ppc64le-unknown-linux-gnu-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-ppc64le-unknown-linux-gnu-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--","ignore_root_user_error":false} - }, - "python_3_11_x86_64-apple-darwin": { - "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", - "ruleClassName": "python_repository", - "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_x86_64-apple-darwin","sha256":"--47e1557d93a42585972772e82661047ca5f608293158acb2778dccf120eabb00","patches":[],"platform":"--x86_64-apple-darwin","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-x86_64-apple-darwin-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-x86_64-apple-darwin-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--@python_3_11_x86_64-apple-darwin_coverage//:coverage","ignore_root_user_error":false} - }, - "python_versions": { - "bzlFile": "@@rules_python~0.25.0//python/private:toolchains_repo.bzl", - "ruleClassName": "multi_toolchain_aliases", - "attributes": {"name":"--rules_python~0.25.0~python~python_versions","python_versions":{"--3.11":"--python_3_11"}} - }, - "python_3_11_x86_64-unknown-linux-gnu_coverage": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_x86_64-unknown-linux-gnu_coverage","build_file_content":"--\nfilegroup(\n name = \"coverage\",\n srcs = [\"coverage/__main__.py\"],\n data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n visibility = [\"@python_3_11_x86_64-unknown-linux-gnu//:__subpackages__\"],\n)\n ","patch_args":["---p1"],"patches":["@@rules_python~0.25.0//python/private:coverage.patch"],"sha256":"--63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb","type":"--zip","urls":["--https://files.pythonhosted.org/packages/a7/cd/3ce94ad9d407a052dc2a74fbeb1c7947f442155b28264eb467ee78dea812/coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]} + "local_config_cc": { + "bzlFile": "@@bazel_tools//tools/cpp:cc_configure.bzl", + "ruleClassName": "cc_autoconf", + "attributes": {"name":"--bazel_tools~cc_configure_extension~local_config_cc"} }, - "python_3_11_x86_64-unknown-linux-gnu": { - "bzlFile": "@@rules_python~0.25.0//python:repositories.bzl", - "ruleClassName": "python_repository", - "attributes": {"name":"--rules_python~0.25.0~python~python_3_11_x86_64-unknown-linux-gnu","sha256":"--e26247302bc8e9083a43ce9e8dd94905b40d464745b1603041f7bc9a93c65d05","patches":[],"platform":"--x86_64-unknown-linux-gnu","python_version":"--3.11.4","release_filename":"--20230726/cpython-3.11.4+20230726-x86_64-unknown-linux-gnu-install_only.tar.gz","urls":["--https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-x86_64-unknown-linux-gnu-install_only.tar.gz"],"distutils":null,"distutils_content":"--","strip_prefix":"--python","coverage_tool":"--@python_3_11_x86_64-unknown-linux-gnu_coverage//:coverage","ignore_root_user_error":false} + "local_config_cc_toolchains": { + "bzlFile": "@@bazel_tools//tools/cpp:cc_configure.bzl", + "ruleClassName": "cc_autoconf_toolchains", + "attributes": {"name":"--bazel_tools~cc_configure_extension~local_config_cc_toolchains"} } } }, - "@rules_python~0.25.0//python/extensions:pip.bzl%pip": { - "bzlTransitiveDigest": "dzLlNdxigvtaaJvDCQ/klERupkXnCXhpvJJiVosi3V8=", - "accumulatedFileDigests": { - "@@//:requirements_lock.txt": "21c6a66637fdf537f50363f32b372da0d751f32871dc87e7468d00ada3367704" - }, + "@apple_support~1.8.1//crosstool:setup.bzl%apple_cc_configure_extension": { + "bzlTransitiveDigest": "SPx14yZFDt7CU8o0nOGrgJ/Gjwxr/ESVXcaUVbXVT7E=", + "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { - "pip_311_pyjwt": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_pyjwt","requirement":"--pyjwt[crypto]==2.8.0 --hash=sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de --hash=sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_311_setuptools": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_setuptools","requirement":"--setuptools==68.1.2 --hash=sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d --hash=sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_urllib3": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_urllib3","wheel_name":"--urllib3","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_idna": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_idna","wheel_name":"--idna","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_311_urllib3": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_urllib3","requirement":"--urllib3==2.0.4 --hash=sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11 --hash=sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_deprecated": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_deprecated","wheel_name":"--deprecated","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_gevent": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_gevent","wheel_name":"--gevent","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_311_gevent": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_gevent","requirement":"--gevent==23.7.0 --hash=sha256:11b9bb0bce45170ff992760385a86e6955ccb88dba4a82a64d5ce9459290d8d6 --hash=sha256:1234849b0bc4df560924aa92f7c01ca3f310677735fb508a2b0d7a61bb946916 --hash=sha256:34086bcc1252ae41e1cb81cf13c4a7678031595c12f4e9a1c3d0ab433f20826a --hash=sha256:369241d1a6a3fe3ef4eba454b71e0168026560c5344fc4bc37196867041982ac --hash=sha256:3e0d76a7848726e0646324a1adc011355dcd91875e7913badd1ada2e5eeb8a6e --hash=sha256:5b230007a665d2cf5cf8878c9f56a2b8bacbdc4fe0235afc5269b71cd00528e5 --hash=sha256:5da07d65dfa23fe419c37cea110bf951b42af6bf3a1fff244043a75c9185dbd5 --hash=sha256:6a51a8e3cdaa6901e47d56f84cb5f92b1bf3deea920bce69cf7a245df16159ac --hash=sha256:6b3dd449c80814357f6568eb095a2be2421b805d59fa97c65094707e04a181f9 --hash=sha256:6bd9ea1b5fbdc7e5921a9e515f34a450eb3927a902253a33caedcce2d19d7d96 --hash=sha256:746a1e12f280dab07389e6709164b1e1a6caaf50493ea5b1dcaa73cff005174c --hash=sha256:769e8811ded08fe7d8b09ad8ebb72d47aecc112411e0726e7296b7ed187ed629 --hash=sha256:76ca6f893953ab898ebbff5d772103318a85044e55d0bad401d6b49d71bb76e7 --hash=sha256:83b6d61a8e9da25edb304ca7fba19ee57bb1ffa801f9df3e668bfed7bb8386cb --hash=sha256:8c284390f0f6d0b5be3bf805fa8e0ae1329065f2b0ac5af5423c67183197deb8 --hash=sha256:919423e803939726c99ab2d29ea46b8676af549cee72d263f2b24758ec607b2c --hash=sha256:94b013587f7c4697d620c129627f7b12d7d9f6e40ab198635891ca2098cd8556 --hash=sha256:9c7c349aa23d67cf5cc3b2c87aaedcfead976d0577b1cfcd07ffeba63baba79c --hash=sha256:a1d2f1e67d04fde47ca2deac89733df28ef3a7ec1d7359a79f57d4778cced16d --hash=sha256:a226b42cb9a49580ca7729572a4f8289d1fa28cd2529c9f4eed3e14b995d1c9c --hash=sha256:a8f62e8d37913512823923e05607a296389aeb50ccca8a271ae7cedb5b17faeb --hash=sha256:add904a7ef960cd4e133e61eb7413982c5e4203928160be1c09752ac06a25e71 --hash=sha256:aeb1511cf0786152af741c47ee462dac81b57bbd1fbbe08ab562b6c8c9ad75ed --hash=sha256:c1dba07207b15b371e50372369edf256a142cb5cdf8599849cbf8660327efa06 --hash=sha256:c92b837b60e850c50fc6d723d1e363e786d37fd9d51e564e07df52ad5e8a86d4 --hash=sha256:cea93f4f77badbddc711620cca164ad75c74056603908e621a5ba1b97adbc39c --hash=sha256:d0d3630674c1b344b256a298ab1ff43220f840b12af768131b5d74e485924237 --hash=sha256:debc177e88a8c876cb1a4d974f985d03670177bdc61e1c084a8d525f1a50b12d --hash=sha256:dec7b08daf08385fb281b81ec2e7e703243975d867f40ae0a8a3e30b380eb9ea --hash=sha256:df4d7be3352126458cc818309ca6a3b678c209b1ae33e56b6975c6a8309f2068 --hash=sha256:f522b6b015f1bfa9d8d3716ddffb23e3d4a8933df3e4ebf0a29a65a9fa74382b","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_311_charset_normalizer": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_charset_normalizer","requirement":"--charset-normalizer==3.2.0 --hash=sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96 --hash=sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c --hash=sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710 --hash=sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706 --hash=sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020 --hash=sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252 --hash=sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad --hash=sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329 --hash=sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a --hash=sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f --hash=sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6 --hash=sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4 --hash=sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a --hash=sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46 --hash=sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2 --hash=sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23 --hash=sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace --hash=sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd --hash=sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982 --hash=sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10 --hash=sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2 --hash=sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea --hash=sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09 --hash=sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5 --hash=sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149 --hash=sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489 --hash=sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9 --hash=sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80 --hash=sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592 --hash=sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3 --hash=sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6 --hash=sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed --hash=sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c --hash=sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200 --hash=sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a --hash=sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e --hash=sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d --hash=sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6 --hash=sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623 --hash=sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669 --hash=sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3 --hash=sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa --hash=sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9 --hash=sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2 --hash=sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f --hash=sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1 --hash=sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4 --hash=sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a --hash=sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8 --hash=sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3 --hash=sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029 --hash=sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f --hash=sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959 --hash=sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22 --hash=sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7 --hash=sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952 --hash=sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346 --hash=sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e --hash=sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d --hash=sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299 --hash=sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd --hash=sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a --hash=sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3 --hash=sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037 --hash=sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94 --hash=sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c --hash=sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858 --hash=sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a --hash=sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449 --hash=sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c --hash=sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918 --hash=sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1 --hash=sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c --hash=sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac --hash=sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_charset_normalizer": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_charset_normalizer","wheel_name":"--charset_normalizer","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_311_deprecated": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_deprecated","requirement":"--deprecated==1.2.14 --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_grequests": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_grequests","wheel_name":"--grequests","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_311": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "pip_repository_bzlmod", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311","repo_name":"--pip_311","requirements_lock":"@@//:requirements_lock.txt"} - }, - "pip": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "pip_hub_repository_bzlmod", - "attributes": {"name":"--rules_python~0.25.0~pip~pip","repo_name":"--pip","whl_library_alias_names":["--certifi","--cffi","--charset_normalizer","--cryptography","--deprecated","--gevent","--greenlet","--grequests","--idna","--pycparser","--pygithub","--pyjwt","--pynacl","--requests","--semver","--setuptools","--urllib3","--wrapt","--zope_event","--zope_interface"]} - }, - "pip_311_semver": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_semver","requirement":"--semver==3.0.1 --hash=sha256:2a23844ba1647362c7490fe3995a86e097bb590d16f0f32dfc383008f19e4cdf --hash=sha256:9ec78c5447883c67b97f98c3b6212796708191d22e4ad30f4570f840171cbce1","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_311_greenlet": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_greenlet","requirement":"--greenlet==2.0.2 --hash=sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a --hash=sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a --hash=sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43 --hash=sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33 --hash=sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8 --hash=sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088 --hash=sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca --hash=sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343 --hash=sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645 --hash=sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db --hash=sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df --hash=sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3 --hash=sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86 --hash=sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2 --hash=sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a --hash=sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf --hash=sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7 --hash=sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394 --hash=sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40 --hash=sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3 --hash=sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6 --hash=sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74 --hash=sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0 --hash=sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3 --hash=sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91 --hash=sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5 --hash=sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9 --hash=sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8 --hash=sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b --hash=sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6 --hash=sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb --hash=sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73 --hash=sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b --hash=sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df --hash=sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9 --hash=sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f --hash=sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0 --hash=sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857 --hash=sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a --hash=sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249 --hash=sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30 --hash=sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292 --hash=sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b --hash=sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d --hash=sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b --hash=sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c --hash=sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca --hash=sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7 --hash=sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75 --hash=sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae --hash=sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b --hash=sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470 --hash=sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564 --hash=sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9 --hash=sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099 --hash=sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0 --hash=sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5 --hash=sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19 --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_311_zope_event": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_zope_event","requirement":"--zope-event==5.0 --hash=sha256:2832e95014f4db26c47a13fdaef84cef2f4df37e66b59d8f1f4a8f319a632c26 --hash=sha256:bac440d8d9891b4068e2b5a2c5e2c9765a9df762944bda6955f96bb9b91e67cd","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_pycparser": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_pycparser","wheel_name":"--pycparser","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_311_idna": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_idna","requirement":"--idna==3.4 --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_311_pycparser": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_pycparser","requirement":"--pycparser==2.21 --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_311_pynacl": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_pynacl","requirement":"--pynacl==1.5.0 --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d --hash=sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93 --hash=sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1 --hash=sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92 --hash=sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff --hash=sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba --hash=sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394 --hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b --hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_311_zope_interface": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_zope_interface","requirement":"--zope-interface==6.0 --hash=sha256:042f2381118b093714081fd82c98e3b189b68db38ee7d35b63c327c470ef8373 --hash=sha256:0ec9653825f837fbddc4e4b603d90269b501486c11800d7c761eee7ce46d1bbb --hash=sha256:12175ca6b4db7621aedd7c30aa7cfa0a2d65ea3a0105393e05482d7a2d367446 --hash=sha256:1592f68ae11e557b9ff2bc96ac8fc30b187e77c45a3c9cd876e3368c53dc5ba8 --hash=sha256:23ac41d52fd15dd8be77e3257bc51bbb82469cf7f5e9a30b75e903e21439d16c --hash=sha256:424d23b97fa1542d7be882eae0c0fc3d6827784105264a8169a26ce16db260d8 --hash=sha256:4407b1435572e3e1610797c9203ad2753666c62883b921318c5403fb7139dec2 --hash=sha256:48f4d38cf4b462e75fac78b6f11ad47b06b1c568eb59896db5b6ec1094eb467f --hash=sha256:4c3d7dfd897a588ec27e391edbe3dd320a03684457470415870254e714126b1f --hash=sha256:5171eb073474a5038321409a630904fd61f12dd1856dd7e9d19cd6fe092cbbc5 --hash=sha256:5a158846d0fca0a908c1afb281ddba88744d403f2550dc34405c3691769cdd85 --hash=sha256:6ee934f023f875ec2cfd2b05a937bd817efcc6c4c3f55c5778cbf78e58362ddc --hash=sha256:790c1d9d8f9c92819c31ea660cd43c3d5451df1df61e2e814a6f99cebb292788 --hash=sha256:809fe3bf1a91393abc7e92d607976bbb8586512913a79f2bf7d7ec15bd8ea518 --hash=sha256:87b690bbee9876163210fd3f500ee59f5803e4a6607d1b1238833b8885ebd410 --hash=sha256:89086c9d3490a0f265a3c4b794037a84541ff5ffa28bb9c24cc9f66566968464 --hash=sha256:99856d6c98a326abbcc2363827e16bd6044f70f2ef42f453c0bd5440c4ce24e5 --hash=sha256:aab584725afd10c710b8f1e6e208dbee2d0ad009f57d674cb9d1b3964037275d --hash=sha256:af169ba897692e9cd984a81cb0f02e46dacdc07d6cf9fd5c91e81f8efaf93d52 --hash=sha256:b39b8711578dcfd45fc0140993403b8a81e879ec25d53189f3faa1f006087dca --hash=sha256:b3f543ae9d3408549a9900720f18c0194ac0fe810cecda2a584fd4dca2eb3bb8 --hash=sha256:d0583b75f2e70ec93f100931660328965bb9ff65ae54695fb3fa0a1255daa6f2 --hash=sha256:dfbbbf0809a3606046a41f8561c3eada9db811be94138f42d9135a5c47e75f6f --hash=sha256:e538f2d4a6ffb6edfb303ce70ae7e88629ac6e5581870e66c306d9ad7b564a58 --hash=sha256:eba51599370c87088d8882ab74f637de0c4f04a6d08a312dce49368ba9ed5c2a --hash=sha256:ee4b43f35f5dc15e1fec55ccb53c130adb1d11e8ad8263d68b1284b66a04190d --hash=sha256:f2363e5fd81afb650085c6686f2ee3706975c54f331b426800b53531191fdf28 --hash=sha256:f299c020c6679cb389814a3b81200fe55d428012c5e76da7e722491f5d205990 --hash=sha256:f72f23bab1848edb7472309e9898603141644faec9fd57a823ea6b4d1c4c8995 --hash=sha256:fa90bac61c9dc3e1a563e5babb3fd2c0c1c80567e815442ddbe561eadc803b30","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_wrapt": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_wrapt","wheel_name":"--wrapt","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_cryptography": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_cryptography","wheel_name":"--cryptography","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_greenlet": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_greenlet","wheel_name":"--greenlet","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_zope_event": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_zope_event","wheel_name":"--zope_event","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_zope_interface": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_zope_interface","wheel_name":"--zope_interface","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_311_pygithub": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_pygithub","requirement":"--pygithub==1.59.1 --hash=sha256:3d87a822e6c868142f0c2c4bf16cce4696b5a7a4d142a7bd160e1bdf75bc54a9 --hash=sha256:c44e3a121c15bf9d3a5cc98d94c9a047a5132a9b01d22264627f58ade9ddc217","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_certifi": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_certifi","wheel_name":"--certifi","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_pynacl": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_pynacl","wheel_name":"--pynacl","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_311_certifi": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_certifi","requirement":"--certifi==2023.7.22 --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_311_cryptography": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_cryptography","requirement":"--cryptography==41.0.3 --hash=sha256:0d09fb5356f975974dbcb595ad2d178305e5050656affb7890a1583f5e02a306 --hash=sha256:23c2d778cf829f7d0ae180600b17e9fceea3c2ef8b31a99e3c694cbbf3a24b84 --hash=sha256:3fb248989b6363906827284cd20cca63bb1a757e0a2864d4c1682a985e3dca47 --hash=sha256:41d7aa7cdfded09b3d73a47f429c298e80796c8e825ddfadc84c8a7f12df212d --hash=sha256:42cb413e01a5d36da9929baa9d70ca90d90b969269e5a12d39c1e0d475010116 --hash=sha256:4c2f0d35703d61002a2bbdcf15548ebb701cfdd83cdc12471d2bae80878a4207 --hash=sha256:4fd871184321100fb400d759ad0cddddf284c4b696568204d281c902fc7b0d81 --hash=sha256:5259cb659aa43005eb55a0e4ff2c825ca111a0da1814202c64d28a985d33b087 --hash=sha256:57a51b89f954f216a81c9d057bf1a24e2f36e764a1ca9a501a6964eb4a6800dd --hash=sha256:652627a055cb52a84f8c448185922241dd5217443ca194d5739b44612c5e6507 --hash=sha256:67e120e9a577c64fe1f611e53b30b3e69744e5910ff3b6e97e935aeb96005858 --hash=sha256:6af1c6387c531cd364b72c28daa29232162010d952ceb7e5ca8e2827526aceae --hash=sha256:6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34 --hash=sha256:7efe8041897fe7a50863e51b77789b657a133c75c3b094e51b5e4b5cec7bf906 --hash=sha256:84537453d57f55a50a5b6835622ee405816999a7113267739a1b4581f83535bd --hash=sha256:8f09daa483aedea50d249ef98ed500569841d6498aa9c9f4b0531b9964658922 --hash=sha256:95dd7f261bb76948b52a5330ba5202b91a26fbac13ad0e9fc8a3ac04752058c7 --hash=sha256:a74fbcdb2a0d46fe00504f571a2a540532f4c188e6ccf26f1f178480117b33c4 --hash=sha256:a983e441a00a9d57a4d7c91b3116a37ae602907a7618b882c8013b5762e80574 --hash=sha256:ab8de0d091acbf778f74286f4989cf3d1528336af1b59f3e5d2ebca8b5fe49e1 --hash=sha256:aeb57c421b34af8f9fe830e1955bf493a86a7996cc1338fe41b30047d16e962c --hash=sha256:ce785cf81a7bdade534297ef9e490ddff800d956625020ab2ec2780a556c313e --hash=sha256:d0d651aa754ef58d75cec6edfbd21259d93810b73f6ec246436a21b7841908de","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_pyjwt": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_pyjwt","wheel_name":"--pyjwt","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_semver": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_semver","wheel_name":"--semver","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_cffi": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_cffi","wheel_name":"--cffi","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_pygithub": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_pygithub","wheel_name":"--pygithub","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_requests": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_requests","wheel_name":"--requests","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_setuptools": { - "bzlFile": "@@rules_python~0.25.0//python:pip.bzl", - "ruleClassName": "whl_library_alias", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_setuptools","wheel_name":"--setuptools","default_version":"--3.11","version_map":{"--3.11":"--pip_311_"}} - }, - "pip_311_cffi": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_cffi","requirement":"--cffi==1.15.1 --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_311_grequests": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_grequests","requirement":"--grequests==0.7.0 --hash=sha256:4733edfcece027de25ae8eff86a87f563d7e829fdacbf3ce8b3aeea507694287 --hash=sha256:5c33f14268df5b8fa1107d8537815be6febbad6ec560524d6a404b7778cf6ba6","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_311_requests": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_requests","requirement":"--requests==2.31.0 --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} - }, - "pip_311_wrapt": { - "bzlFile": "@@rules_python~0.25.0//python/pip_install:pip_repository.bzl", - "ruleClassName": "whl_library", - "attributes": {"name":"--rules_python~0.25.0~pip~pip_311_wrapt","requirement":"--wrapt==1.15.0 --hash=sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0 --hash=sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420 --hash=sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a --hash=sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c --hash=sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079 --hash=sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923 --hash=sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f --hash=sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1 --hash=sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8 --hash=sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86 --hash=sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0 --hash=sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364 --hash=sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e --hash=sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c --hash=sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e --hash=sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c --hash=sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727 --hash=sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff --hash=sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e --hash=sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29 --hash=sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7 --hash=sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72 --hash=sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475 --hash=sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a --hash=sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317 --hash=sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2 --hash=sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd --hash=sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640 --hash=sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98 --hash=sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248 --hash=sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e --hash=sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d --hash=sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec --hash=sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1 --hash=sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e --hash=sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9 --hash=sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92 --hash=sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb --hash=sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094 --hash=sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46 --hash=sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29 --hash=sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd --hash=sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705 --hash=sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8 --hash=sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975 --hash=sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb --hash=sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e --hash=sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b --hash=sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418 --hash=sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019 --hash=sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1 --hash=sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba --hash=sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6 --hash=sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2 --hash=sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3 --hash=sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7 --hash=sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752 --hash=sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416 --hash=sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f --hash=sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1 --hash=sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc --hash=sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145 --hash=sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee --hash=sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a --hash=sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7 --hash=sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b --hash=sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653 --hash=sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0 --hash=sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90 --hash=sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29 --hash=sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6 --hash=sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034 --hash=sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09 --hash=sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559 --hash=sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639","repo":"--pip_311","repo_prefix":"--pip_311_","annotation":null,"python_interpreter":"--","python_interpreter_target":"@@rules_python~0.25.0~python~python_3_11_aarch64-apple-darwin//:bin/python3","quiet":true,"timeout":600,"isolated":true,"extra_pip_args":["----no-binary","--grequests"],"download_only":false,"pip_data_exclude":[],"enable_implicit_namespace_pkgs":false,"environment":{}} + "local_config_apple_cc": { + "bzlFile": "@@apple_support~1.8.1//crosstool:setup.bzl", + "ruleClassName": "_apple_cc_autoconf", + "attributes": {"name":"--apple_support~1.8.1~apple_cc_configure_extension~local_config_apple_cc"} + }, + "local_config_apple_cc_toolchains": { + "bzlFile": "@@apple_support~1.8.1//crosstool:setup.bzl", + "ruleClassName": "_apple_cc_autoconf_toolchains", + "attributes": {"name":"--apple_support~1.8.1~apple_cc_configure_extension~local_config_apple_cc_toolchains"} } } }, - "@buildifier_prebuilt~6.1.2.2//:defs.bzl%buildifier_prebuilt_deps_extension": { - "bzlTransitiveDigest": "TxjXyEKExp4rcoCCma27xL89cLpIWYI19YwSAztqpFA=", + "@rules_cc~0.0.8//cc:extensions.bzl%cc_configure": { + "bzlTransitiveDigest": "vbmanGWm78n1xDASxvoeShne52hqjvDgeMpJz1MazVs=", "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { - "buildozer_darwin_amd64": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", - "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildozer_darwin_amd64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildozer-darwin-amd64"],"downloaded_file_path":"--buildozer","executable":true,"sha256":"--4014751a4cc5e91a7dc4b64be7b30c565bd9014ae6d1879818dc624562a1d431"} - }, - "buildifier_linux_amd64": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", - "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildifier_linux_amd64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildifier-linux-amd64"],"downloaded_file_path":"--buildifier","executable":true,"sha256":"--51bc947dabb7b14ec6fb1224464fbcf7a7cb138f1a10a3b328f00835f72852ce"} - }, - "buildozer_darwin_arm64": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", - "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildozer_darwin_arm64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildozer-darwin-arm64"],"downloaded_file_path":"--buildozer","executable":true,"sha256":"--e78bd5357f2356067d4b0d49ec4e4143dd9b1308746afc6ff11b55b952f462d7"} - }, - "buildozer_linux_amd64": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", - "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildozer_linux_amd64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildozer-linux-amd64"],"downloaded_file_path":"--buildozer","executable":true,"sha256":"--2aef0f1ef80a0140b8fe6e6a8eb822e14827d8855bfc6681532c7530339ea23b"} - }, - "buildozer_windows_amd64": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", - "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildozer_windows_amd64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildozer-windows-amd64.exe"],"downloaded_file_path":"--buildozer.exe","executable":true,"sha256":"--07664d5d08ee099f069cd654070cabf2708efaae9f52dc83921fa400c67a868b"} - }, - "buildozer_linux_arm64": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", - "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildozer_linux_arm64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildozer-linux-arm64"],"downloaded_file_path":"--buildozer","executable":true,"sha256":"--586e27630cbc242e8bd6fe8e24485eca8dcadea6410cc13cbe059202655980ac"} - }, - "buildifier_windows_amd64": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", - "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildifier_windows_amd64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildifier-windows-amd64.exe"],"downloaded_file_path":"--buildifier.exe","executable":true,"sha256":"--92bdd284fbc6766fc3e300b434ff9e68ac4d76a06cb29d1bdefe79a102a8d135"} - }, - "buildifier_prebuilt_toolchains": { - "bzlFile": "@@buildifier_prebuilt~6.1.2.2//:defs.bzl", - "ruleClassName": "_buildifier_toolchain_setup", - "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildifier_prebuilt_toolchains","assets_json":"--[{\"arch\":\"amd64\",\"name\":\"buildifier\",\"platform\":\"darwin\",\"sha256\":\"e2f4a67691c5f55634fbfb3850eb97dd91be0edd059d947b6c83d120682e0216\",\"version\":\"v6.1.2\"},{\"arch\":\"arm64\",\"name\":\"buildifier\",\"platform\":\"darwin\",\"sha256\":\"7549b5f535219ac957aa2a6069d46fbfc9ea3f74abd85fd3d460af4b1a2099a6\",\"version\":\"v6.1.2\"},{\"arch\":\"amd64\",\"name\":\"buildifier\",\"platform\":\"linux\",\"sha256\":\"51bc947dabb7b14ec6fb1224464fbcf7a7cb138f1a10a3b328f00835f72852ce\",\"version\":\"v6.1.2\"},{\"arch\":\"arm64\",\"name\":\"buildifier\",\"platform\":\"linux\",\"sha256\":\"0ba6e8e3208b5a029164e542ddb5509e618f87b639ffe8cc2f54770022853080\",\"version\":\"v6.1.2\"},{\"arch\":\"amd64\",\"name\":\"buildifier\",\"platform\":\"windows\",\"sha256\":\"92bdd284fbc6766fc3e300b434ff9e68ac4d76a06cb29d1bdefe79a102a8d135\",\"version\":\"v6.1.2\"},{\"arch\":\"amd64\",\"name\":\"buildozer\",\"platform\":\"darwin\",\"sha256\":\"4014751a4cc5e91a7dc4b64be7b30c565bd9014ae6d1879818dc624562a1d431\",\"version\":\"v6.1.2\"},{\"arch\":\"arm64\",\"name\":\"buildozer\",\"platform\":\"darwin\",\"sha256\":\"e78bd5357f2356067d4b0d49ec4e4143dd9b1308746afc6ff11b55b952f462d7\",\"version\":\"v6.1.2\"},{\"arch\":\"amd64\",\"name\":\"buildozer\",\"platform\":\"linux\",\"sha256\":\"2aef0f1ef80a0140b8fe6e6a8eb822e14827d8855bfc6681532c7530339ea23b\",\"version\":\"v6.1.2\"},{\"arch\":\"arm64\",\"name\":\"buildozer\",\"platform\":\"linux\",\"sha256\":\"586e27630cbc242e8bd6fe8e24485eca8dcadea6410cc13cbe059202655980ac\",\"version\":\"v6.1.2\"},{\"arch\":\"amd64\",\"name\":\"buildozer\",\"platform\":\"windows\",\"sha256\":\"07664d5d08ee099f069cd654070cabf2708efaae9f52dc83921fa400c67a868b\",\"version\":\"v6.1.2\"}]"} - }, - "buildifier_darwin_amd64": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", - "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildifier_darwin_amd64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildifier-darwin-amd64"],"downloaded_file_path":"--buildifier","executable":true,"sha256":"--e2f4a67691c5f55634fbfb3850eb97dd91be0edd059d947b6c83d120682e0216"} + "local_config_cc": { + "bzlFile": "@@rules_cc~0.0.8//cc/private/toolchain:cc_configure.bzl", + "ruleClassName": "cc_autoconf", + "attributes": {"name":"--rules_cc~0.0.8~cc_configure~local_config_cc"} }, - "buildifier_darwin_arm64": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", - "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildifier_darwin_arm64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildifier-darwin-arm64"],"downloaded_file_path":"--buildifier","executable":true,"sha256":"--7549b5f535219ac957aa2a6069d46fbfc9ea3f74abd85fd3d460af4b1a2099a6"} + "local_config_cc_toolchains": { + "bzlFile": "@@rules_cc~0.0.8//cc/private/toolchain:cc_configure.bzl", + "ruleClassName": "cc_autoconf_toolchains", + "attributes": {"name":"--rules_cc~0.0.8~cc_configure~local_config_cc_toolchains"} }, - "buildifier_linux_arm64": { + "local_config_xcode": { + "bzlFile": "@@bazel_tools//tools/osx:xcode_configure.bzl", + "ruleClassName": "xcode_autoconf", + "attributes": {"name":"--rules_cc~0.0.8~cc_configure~local_config_xcode","xcode_locator":"--@bazel_tools//tools/osx:xcode_locator.m","remote_xcode":"--"} + } + } + }, + "@bazel_tools//tools/test:extensions.bzl%remote_coverage_tools_extension": { + "bzlTransitiveDigest": "PEh3vETU0xQzauyboFj1AYs9nvzf23oQ3vbV/5bFnE4=", + "accumulatedFileDigests": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "remote_coverage_tools": { "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", - "attributes": {"name":"--buildifier_prebuilt~6.1.2.2~buildifier_prebuilt_deps_extension~buildifier_linux_arm64","urls":["--https://github.com/bazelbuild/buildtools/releases/download/v6.1.2/buildifier-linux-arm64"],"downloaded_file_path":"--buildifier","executable":true,"sha256":"--0ba6e8e3208b5a029164e542ddb5509e618f87b639ffe8cc2f54770022853080"} + "ruleClassName": "http_archive", + "attributes": {"name":"--bazel_tools~remote_coverage_tools_extension~remote_coverage_tools","sha256":"--7006375f6756819b7013ca875eab70a541cf7d89142d9c511ed78ea4fefa38af","urls":["--https://mirror.bazel.build/bazel_coverage_output_generator/releases/coverage_output_generator-v2.6.zip"]} } } }, @@ -3722,97 +3508,15 @@ } } }, - "@rules_python~0.25.0//python/extensions/private:internal_deps.bzl%internal_deps": { - "bzlTransitiveDigest": "nbwGxqiYZ6tJsbgBd92UhFtL1aLyFwWj3CGFp46l6fw=", - "accumulatedFileDigests": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "pypi__wheel": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__wheel","url":"--https://files.pythonhosted.org/packages/bd/7c/d38a0b30ce22fc26ed7dbc087c6d00851fb3395e9d0dac40bec1f905030c/wheel-0.38.4-py3-none-any.whl","sha256":"--b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__click": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__click","url":"--https://files.pythonhosted.org/packages/76/0a/b6c5f311e32aeb3b406e03c079ade51e905ea630fc19d1262a46249c1c86/click-8.0.1-py3-none-any.whl","sha256":"--fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__importlib_metadata": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__importlib_metadata","url":"--https://files.pythonhosted.org/packages/d7/31/74dcb59a601b95fce3b0334e8fc9db758f78e43075f22aeb3677dfb19f4c/importlib_metadata-1.4.0-py2.py3-none-any.whl","sha256":"--bdd9b7c397c273bcc9a11d6629a38487cd07154fa255a467bf704cd2c258e359","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__pep517": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__pep517","url":"--https://files.pythonhosted.org/packages/ee/2f/ef63e64e9429111e73d3d6cbee80591672d16f2725e648ebc52096f3d323/pep517-0.13.0-py3-none-any.whl","sha256":"--4ba4446d80aed5b5eac6509ade100bff3e7943a8489de249654a5ae9b33ee35b","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__packaging": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__packaging","url":"--https://files.pythonhosted.org/packages/8f/7b/42582927d281d7cb035609cd3a543ffac89b74f3f4ee8e1c50914bcb57eb/packaging-22.0-py3-none-any.whl","sha256":"--957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__pip_tools": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__pip_tools","url":"--https://files.pythonhosted.org/packages/5e/e8/f6d7d1847c7351048da870417724ace5c4506e816b38db02f4d7c675c189/pip_tools-6.12.1-py3-none-any.whl","sha256":"--f0c0c0ec57b58250afce458e2e6058b1f30a4263db895b7d72fd6311bf1dc6f7","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__setuptools": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__setuptools","url":"--https://files.pythonhosted.org/packages/7c/5b/3d92b9f0f7ca1645cba48c080b54fe7d8b1033a4e5720091d1631c4266db/setuptools-60.10.0-py3-none-any.whl","sha256":"--782ef48d58982ddb49920c11a0c5c9c0b02e7d7d1c2ad0aa44e1a1e133051c96","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__zipp": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__zipp","url":"--https://files.pythonhosted.org/packages/f4/50/cc72c5bcd48f6e98219fc4a88a5227e9e28b81637a99c49feba1d51f4d50/zipp-1.0.0-py2.py3-none-any.whl","sha256":"--8dda78f06bd1674bd8720df8a50bb47b6e1233c503a4eed8e7810686bde37656","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__colorama": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__colorama","url":"--https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl","sha256":"--4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__build": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__build","url":"--https://files.pythonhosted.org/packages/03/97/f58c723ff036a8d8b4d3115377c0a37ed05c1f68dd9a0d66dab5e82c5c1c/build-0.9.0-py3-none-any.whl","sha256":"--38a7a2b7a0bdc61a42a0a67509d88c71ecfc37b393baba770fae34e20929ff69","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__pip": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__pip","url":"--https://files.pythonhosted.org/packages/09/bd/2410905c76ee14c62baf69e3f4aa780226c1bbfc9485731ad018e35b0cb5/pip-22.3.1-py3-none-any.whl","sha256":"--908c78e6bc29b676ede1c4d57981d490cb892eb45cd8c214ab6298125119e077","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__installer": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__installer","url":"--https://files.pythonhosted.org/packages/e5/ca/1172b6638d52f2d6caa2dd262ec4c811ba59eee96d54a7701930726bce18/installer-0.7.0-py3-none-any.whl","sha256":"--05d1933f0a5ba7d8d6296bb6d5018e7c94fa473ceb10cf198a92ccea19c27b53","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__more_itertools": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__more_itertools","url":"--https://files.pythonhosted.org/packages/bd/3f/c4b3dbd315e248f84c388bd4a72b131a29f123ecacc37ffb2b3834546e42/more_itertools-8.13.0-py3-none-any.whl","sha256":"--c5122bffc5f104d37c1626b8615b511f3427aa5389b94d61e5ef8236bfbc3ddb","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - }, - "pypi__tomli": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", - "attributes": {"name":"--rules_python~0.25.0~internal_deps~pypi__tomli","url":"--https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl","sha256":"--939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc","type":"--zip","build_file_content":"--package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude in /python/pip_install/tools/bazel.py\n # to avoid non-determinism following pip install's behavior.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/* *\",\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"} - } - } - }, - "@apple_support~1.8.1//crosstool:setup.bzl%apple_cc_configure_extension": { - "bzlTransitiveDigest": "SPx14yZFDt7CU8o0nOGrgJ/Gjwxr/ESVXcaUVbXVT7E=", + "@bazel_tools//tools/osx:xcode_configure.bzl%xcode_configure_extension": { + "bzlTransitiveDigest": "nr+7RQdBKy+vbv8CZBZ2fN6sDviz3GovjZnFZSmMeYE=", "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { - "local_config_apple_cc": { - "bzlFile": "@@apple_support~1.8.1//crosstool:setup.bzl", - "ruleClassName": "_apple_cc_autoconf", - "attributes": {"name":"--apple_support~1.8.1~apple_cc_configure_extension~local_config_apple_cc"} - }, - "local_config_apple_cc_toolchains": { - "bzlFile": "@@apple_support~1.8.1//crosstool:setup.bzl", - "ruleClassName": "_apple_cc_autoconf_toolchains", - "attributes": {"name":"--apple_support~1.8.1~apple_cc_configure_extension~local_config_apple_cc_toolchains"} + "local_config_xcode": { + "bzlFile": "@@bazel_tools//tools/osx:xcode_configure.bzl", + "ruleClassName": "xcode_autoconf", + "attributes": {"name":"--bazel_tools~xcode_configure_extension~local_config_xcode","xcode_locator":"--@bazel_tools//tools/osx:xcode_locator.m","remote_xcode":"--"} } } } diff --git a/README.md b/README.md index 476ad363..71525df2 100644 --- a/README.md +++ b/README.md @@ -18,10 +18,13 @@ Use [GraalVM](https://graalvm.org) from [Bazel](https://bazel.build), with suppo - [Installing components with `gu`](./docs/components.md) - [Using GraalVM as a Bazel Java toolchain](./docs/toolchain.md) - [Support for Bazel 6, Bazel 7, and Bzlmod](./docs/modern-bazel.md) -- [Support for Bazel 5 and Bazel 4, drop-in replacement for `rules_graal`](./legacy-bazel.md) +- [Support for Bazel 4 and Bazel 5, drop-in replacement for `rules_graal`](./legacy-bazel.md) - [Run tools from GraalVM directly](./docs/binary-targets.md) +- [Build native shared libraries from Java or polyglot code](./docs/shared-libraries.md) - [Example projects for each Bazel version](./docs/examples.md) -- Support for macOS, Linux, Windows (including Native Image!) +- [Hermetic compilation on all platforms](./docs/hermeticity.md) +- [Respects conventional Bazel build settings](./docs/build-settings.md) +- Support for macOS, Linux, Windows (including Native Image!) ([support matrix](./docs/modern-bazel.md)) - Support for the latest modern GraalVM releases (Community Edition and Oracle GraalVM) ## Installation @@ -243,13 +246,13 @@ If you install GraalVM at a repository named `@graalvm`, the toolchain targets a **Java toolchain:** ``` -@graalvm//:toolchain +@graalvm//:jvm ``` **GraalVM toolchain:** ``` -@graalvm//:gvm +@graalvm//:sdk ``` The default `WORKSPACE` and Bzlmod installation instructions register both types of toolchains. diff --git a/docs/api/defs.md b/docs/api/defs.md index 5455db0f..92d6e631 100755 --- a/docs/api/defs.md +++ b/docs/api/defs.md @@ -7,10 +7,11 @@ Target rule definitions, intended for use by rule users. ## native_image
-native_image(name, deps, main_class, include_resources, reflection_configuration, jni_configuration,
-             initialize_at_build_time, initialize_at_run_time, native_features, data, extra_args,
-             check_toolchains, static_zlib, c_compiler_option, executable_name, native_image_tool,
-             native_image_settings, kwargs)
+native_image(name, deps, main_class, executable_name, include_resources, reflection_configuration,
+             jni_configuration, initialize_at_build_time, initialize_at_run_time, native_features,
+             debug, optimization_mode, shared_library, static_zlib, c_compiler_option, data,
+             extra_args, allow_fallback, check_toolchains, native_image_tool, native_image_settings,
+             kwargs)
 
Generates and compiles a GraalVM native image from a Java library target. @@ -22,19 +23,23 @@ Generates and compiles a GraalVM native image from a Java library target. | :------------- | :------------- | :------------- | | name | Name of the target; required. | none | | deps | Dependency `java_library` targets to assemble the classpath from. Mandatory. | none | -| main_class | Entrypoint main class to build from; mandatory. | none | +| main_class | Entrypoint main class to build from; mandatory unless building a shared library. | `None` | +| executable_name | Set the name of the output binary; defaults to `%target%-bin`, or `%target%-bin.exe` on Windows. The special string `%target%`, if present, is replaced with `name`. | `select({"@bazel_tools//src/conditions:windows": "%target%-bin.exe", "//conditions:default": "%target%-bin"})` | | include_resources | Glob to pass to `IncludeResources`. No default; optional. | `None` | | reflection_configuration | Reflection configuration file. No default; optional. | `None` | | jni_configuration | JNI configuration file. No default; optional. | `None` | | initialize_at_build_time | Classes or patterns to pass to `--initialize-at-build-time`. No default; optional. | `[]` | | initialize_at_run_time | Classes or patterns to pass to `--initialize-at-run-time`. No default; optional. | `[]` | | native_features | GraalVM `Feature` classes to include and apply. No default; optional. | `[]` | +| debug | Whether to include debug symbols; by default, this flag's state is managed by Bazel. Passing `--compilation_mode=dbg` is sufficient to flip this to `True`, or it can be overridden via this parameter. | `select({"@rules_graalvm//internal/conditions/compiler:debug": True, "//conditions:default": False})` | +| optimization_mode | Behaves the same as `debug`; normally, this flag's state is managed by Bazel. Passing `--compilation_mode=fastbuild\|opt\|dbg` is sufficient to set this flag, or it can be overridden via this parameter. | `select({"@rules_graalvm//internal/conditions/compiler:fastbuild": "b", "@rules_graalvm//internal/conditions/compiler:optimized": "2", "//conditions:default": ""})` | +| shared_library | Build a shared library binary instead of an executable. | `None` | +| static_zlib | A cc_library or cc_import target that provides zlib as a static library. On Linux, this is used when Graal statically links zlib into the binary, e.g. with `-H:+StaticExecutableWithDynamicLibC`. | `None` | +| c_compiler_option | Extra C compiler options to pass through `native-image`. No default; optional. | `[]` | | data | Data files to make available during the compilation. No default; optional. | `[]` | | extra_args | Extra `native-image` args to pass. Last wins. No default; optional. | `[]` | +| allow_fallback | Whether to allow fall-back to a partial native image; defaults to `False`. | `False` | | check_toolchains | Whether to perform toolchain checks in `native-image`; defaults to `True` on Windows, `False` otherwise. | `select({"@bazel_tools//src/conditions:windows": True, "//conditions:default": False})` | -| static_zlib | A cc_library or cc_import target that provides zlib as a static library. On Linux, this is used when Graal statically links zlib into the binary, e.g. with `-H:+StaticExecutableWithDynamicLibC`. | `None` | -| c_compiler_option | Extra C compiler options to pass through `native-image`. No default; optional. | `[]` | -| executable_name | Set the name of the output binary; defaults to `%target%-bin`, or `%target%-bin.exe` on Windows. The special string `%target%`, if present, is replaced with `name`. | `select({"@bazel_tools//src/conditions:windows": "%target%-bin.exe", "//conditions:default": "%target%-bin"})` | | native_image_tool | Specific `native-image` executable target to use. | `None` | | native_image_settings | Suite(s) of Native Image build settings to use. | `[Label("@rules_graalvm//internal/native_image:defaults")]` | | kwargs | Extra keyword arguments are passed to the underlying `native_image` rule. | none | diff --git a/docs/api/legacy.md b/docs/api/legacy.md index 2fab25eb..d02e18f1 100755 --- a/docs/api/legacy.md +++ b/docs/api/legacy.md @@ -7,10 +7,10 @@ Rules for building native binaries using the GraalVM `native-image` tool on Baze ## graal_binary
-graal_binary(name, deps, main_class, include_resources, reflection_configuration, jni_configuration,
-             initialize_at_build_time, initialize_at_run_time, native_features, data, extra_args,
-             check_toolchains, c_compiler_option, static_zlib, executable_name, native_image_tool,
-             kwargs)
+graal_binary(name, deps, main_class, executable_name, include_resources, reflection_configuration,
+             jni_configuration, initialize_at_build_time, initialize_at_run_time, native_features,
+             debug, optimization_mode, shared_library, static_zlib, c_compiler_option, data,
+             extra_args, allow_fallback, check_toolchains, native_image_tool, kwargs)
 
Alias for the renamed `native_image` rule. Identical. @@ -22,19 +22,23 @@ Alias for the renamed `native_image` rule. Identical. | :------------- | :------------- | :------------- | | name | Name of the target; required. | none | | deps | Dependency `java_library` targets to assemble the classpath from. Mandatory. | none | -| main_class | Entrypoint main class to build from; mandatory. | none | +| main_class | Entrypoint main class to build from; mandatory unless building a shared library. | `None` | +| executable_name | Set the name of the output binary; defaults to `%target%-bin`, or `%target%-bin.exe` on Windows. The special string `%target%`, if present, is replaced with `name`. | `select({"@bazel_tools//src/conditions:windows": "%target%-bin.exe", "//conditions:default": "%target%-bin"})` | | include_resources | Glob to pass to `IncludeResources`. No default; optional. | `None` | | reflection_configuration | Reflection configuration file. No default; optional. | `None` | | jni_configuration | JNI configuration file. No default; optional. | `None` | | initialize_at_build_time | Classes or patterns to pass to `--initialize-at-build-time`. No default; optional. | `[]` | | initialize_at_run_time | Classes or patterns to pass to `--initialize-at-run-time`. No default; optional. | `[]` | | native_features | GraalVM `Feature` classes to include and apply. No default; optional. | `[]` | +| debug | Whether to include debug symbols; by default, this flag's state is managed by Bazel. Passing `--compilation_mode=dbg` is sufficient to flip this to `True`, or it can be overridden via this parameter. | `select({"@rules_graalvm//internal/conditions/compiler:debug": True, "//conditions:default": False})` | +| optimization_mode | Behaves the same as `debug`; normally, this flag's state is managed by Bazel. Passing `--compilation_mode=fastbuild\|opt\|dbg` is sufficient to set this flag, or it can be overridden via this parameter. | `select({"@rules_graalvm//internal/conditions/compiler:fastbuild": "b", "@rules_graalvm//internal/conditions/compiler:optimized": "2", "//conditions:default": ""})` | +| shared_library | Build a shared library binary instead of an executable. | `None` | +| static_zlib | A cc_library or cc_import target that provides zlib as a static library. On Linux, this is used when Graal statically links zlib into the binary, e.g. with `-H:+StaticExecutableWithDynamicLibC`. | `None` | +| c_compiler_option | Extra C compiler options to pass through `native-image`. No default; optional. | `[]` | | data | Data files to make available during the compilation. No default; optional. | `[]` | | extra_args | Extra `native-image` args to pass. Last wins. No default; optional. | `[]` | +| allow_fallback | Whether to allow fall-back to a partial native image; defaults to `False`. | `False` | | check_toolchains | Whether to perform toolchain checks in `native-image`; defaults to `True` on Windows, `False` otherwise. | `select({"@bazel_tools//src/conditions:windows": True, "//conditions:default": False})` | -| c_compiler_option | Extra C compiler options to pass through `native-image`. No default; optional. | `[]` | -| static_zlib | A cc_library or cc_import target that provides zlib as a static library. On Linux, this is used when Graal statically links zlib into the binary, e.g. with `-H:+StaticExecutableWithDynamicLibC`. | `None` | -| executable_name | Set the name of the output binary; defaults to `%target%-bin`, or `%target%-bin.exe` on Windows. The special string `%target%`, if present, is replaced with `name`. | `select({"@bazel_tools//src/conditions:windows": "%target%-bin.exe", "//conditions:default": "%target%-bin"})` | | native_image_tool | Specific `native-image` executable target to use. | `Label("@graalvm//:native-image")` | | kwargs | Extra keyword arguments are passed to the underlying `native_image` rule. | none | @@ -44,10 +48,10 @@ Alias for the renamed `native_image` rule. Identical. ## native_image
-native_image(name, deps, main_class, include_resources, reflection_configuration, jni_configuration,
-             initialize_at_build_time, initialize_at_run_time, native_features, data, extra_args,
-             check_toolchains, c_compiler_option, static_zlib, executable_name, native_image_tool,
-             kwargs)
+native_image(name, deps, main_class, executable_name, include_resources, reflection_configuration,
+             jni_configuration, initialize_at_build_time, initialize_at_run_time, native_features,
+             debug, optimization_mode, shared_library, static_zlib, c_compiler_option, data,
+             extra_args, allow_fallback, check_toolchains, native_image_tool, kwargs)
 
Generates and compiles a GraalVM native image from a Java library target. @@ -59,19 +63,23 @@ Generates and compiles a GraalVM native image from a Java library target. | :------------- | :------------- | :------------- | | name | Name of the target; required. | none | | deps | Dependency `java_library` targets to assemble the classpath from. Mandatory. | none | -| main_class | Entrypoint main class to build from; mandatory. | none | +| main_class | Entrypoint main class to build from; mandatory unless building a shared library. | `None` | +| executable_name | Set the name of the output binary; defaults to `%target%-bin`, or `%target%-bin.exe` on Windows. The special string `%target%`, if present, is replaced with `name`. | `select({"@bazel_tools//src/conditions:windows": "%target%-bin.exe", "//conditions:default": "%target%-bin"})` | | include_resources | Glob to pass to `IncludeResources`. No default; optional. | `None` | | reflection_configuration | Reflection configuration file. No default; optional. | `None` | | jni_configuration | JNI configuration file. No default; optional. | `None` | | initialize_at_build_time | Classes or patterns to pass to `--initialize-at-build-time`. No default; optional. | `[]` | | initialize_at_run_time | Classes or patterns to pass to `--initialize-at-run-time`. No default; optional. | `[]` | | native_features | GraalVM `Feature` classes to include and apply. No default; optional. | `[]` | +| debug | Whether to include debug symbols; by default, this flag's state is managed by Bazel. Passing `--compilation_mode=dbg` is sufficient to flip this to `True`, or it can be overridden via this parameter. | `select({"@rules_graalvm//internal/conditions/compiler:debug": True, "//conditions:default": False})` | +| optimization_mode | Behaves the same as `debug`; normally, this flag's state is managed by Bazel. Passing `--compilation_mode=fastbuild\|opt\|dbg` is sufficient to set this flag, or it can be overridden via this parameter. | `select({"@rules_graalvm//internal/conditions/compiler:fastbuild": "b", "@rules_graalvm//internal/conditions/compiler:optimized": "2", "//conditions:default": ""})` | +| shared_library | Build a shared library binary instead of an executable. | `None` | +| static_zlib | A cc_library or cc_import target that provides zlib as a static library. On Linux, this is used when Graal statically links zlib into the binary, e.g. with `-H:+StaticExecutableWithDynamicLibC`. | `None` | +| c_compiler_option | Extra C compiler options to pass through `native-image`. No default; optional. | `[]` | | data | Data files to make available during the compilation. No default; optional. | `[]` | | extra_args | Extra `native-image` args to pass. Last wins. No default; optional. | `[]` | +| allow_fallback | Whether to allow fall-back to a partial native image; defaults to `False`. | `False` | | check_toolchains | Whether to perform toolchain checks in `native-image`; defaults to `True` on Windows, `False` otherwise. | `select({"@bazel_tools//src/conditions:windows": True, "//conditions:default": False})` | -| c_compiler_option | Extra C compiler options to pass through `native-image`. No default; optional. | `[]` | -| static_zlib | A cc_library or cc_import target that provides zlib as a static library. On Linux, this is used when Graal statically links zlib into the binary, e.g. with `-H:+StaticExecutableWithDynamicLibC`. | `None` | -| executable_name | Set the name of the output binary; defaults to `%target%-bin`, or `%target%-bin.exe` on Windows. The special string `%target%`, if present, is replaced with `name`. | `select({"@bazel_tools//src/conditions:windows": "%target%-bin.exe", "//conditions:default": "%target%-bin"})` | | native_image_tool | Specific `native-image` executable target to use. | `Label("@graalvm//:native-image")` | | kwargs | Extra keyword arguments are passed to the underlying `native_image` rule. | none | diff --git a/docs/build-settings.md b/docs/build-settings.md new file mode 100644 index 00000000..fdf885d1 --- /dev/null +++ b/docs/build-settings.md @@ -0,0 +1,18 @@ +## How Bazel settings integrate with Native Image + +Several familiar Bazel settings are integrated into the Native Image build pipeline, so that conventional use of Bazel +features translates relatively well to Native Image option control. See the table below for more information. + +### Compilation mode + +> Flag: [`--compilation_mode`][1] or [`-c`][1] + +| **Flag setting** | **Effective `native-image` options** | **Notes** | +| ---------------- | ------------------------------------ | ------------------------------------------ | +| `dbg` | `-g` | No optimization flag set | +| `fastbuild` | `-Ob` | Activates GraalVM [fast build][2] mode | +| `opt` | `-O2` | Builds with optimizations turned on | +| (None set) | (Nothing passed) | Default GraalVM behavior builds with `-O2` | + +[1]: https://bazel.build/docs/user-manual#compilation-mode +[2]: https://www.graalvm.org/latest/reference-manual/native-image/overview/BuildOutput/#build-stages diff --git a/docs/index.md b/docs/index.md index efd04c2b..d9697b5a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -18,10 +18,13 @@ Use [GraalVM](https://graalvm.org) from [Bazel](https://bazel.build), with suppo - [Installing components with `gu`](./components.md) - [Using GraalVM as a Bazel Java toolchain](./toolchain.md) - [Support for Bazel 6, Bazel 7, and Bzlmod](./modern-bazel.md) -- [Support for Bazel 5 and Bazel 4, drop-in replacement for `rules_graal`](./legacy-bazel.md) +- [Support for Bazel 4 and Bazel 5, drop-in replacement for `rules_graal`](./legacy-bazel.md) - [Run GraalVM binaries directly](./binary-targets.md) +- [Build native shared libraries from Java or polyglot code](./shared-libraries.md) - [Example projects for each Bazel version](./examples.md) -- Support for macOS, Linux, Windows (including Native Image!) +- [Hermetic compilation on all platforms](./hermeticity.md) +- [Respects conventional Bazel build settings](./build-settings.md) +- Support for macOS, Linux, Windows (including Native Image!) ([support matrix](./modern-bazel.md)) - Support for the latest modern GraalVM releases (Community Edition and Oracle GraalVM) ## Installation @@ -215,7 +218,7 @@ make sure to add the `native_image_tool` attribute to point to `@yourrepo//:nati ## Examples -See the list of [examples](./docs/examples.md), which are used as continuous integration tests. Examples are available +See the list of [examples](./examples.md), which are used as continuous integration tests. Examples are available for Bazel 4-7. ## Hermeticity / strictness @@ -241,13 +244,13 @@ If you install GraalVM at a repository named `@graalvm`, the toolchain targets a **Java toolchain:** ``` -@graalvm//:toolchain +@graalvm//:jvm ``` **GraalVM toolchain:** ``` -@graalvm//:gvm +@graalvm//:sdk ``` The default `WORKSPACE` and Bzlmod installation instructions register both types of toolchains. diff --git a/docs/shared-libraries.md b/docs/shared-libraries.md new file mode 100644 index 00000000..1bdc266b --- /dev/null +++ b/docs/shared-libraries.md @@ -0,0 +1,34 @@ +## Shared libraries with GraalVM and Bazel + +GraalVM can build [native shared libraries][1] from Java or polyglot code. This functionality is integrated with these +rules, via the `shared_library` target attribute on `native_image`: + +```python +load("@rules_graalvm//:defs.bzl", "native_image") +``` + +```python +java_library( + name = "example", + srcs = ["..."], +) + +native_image( + name = "some_name", + shared_library = True, + deps = [ + ":example", + ], +) +``` + +### How `main_class` works with shared libraries + +Even when building a shared library, GraalVM typically needs a `main_class`. Instead of becoming a runnable entrypoint, +the `main_class` is used by the Native Image compiler as the starting point for points-to analysis and code gen. + +Alternatively, the [`@CEntryPoint` API][2] can be used to define library entrypoints. See [here][3] for more information. + +[1]: https://www.graalvm.org/latest/reference-manual/native-image/guides/build-native-shared-library/ +[2]: https://www.graalvm.org/sdk/javadoc/org/graalvm/nativeimage/c/function/CEntryPoint.html +[3]: https://www.graalvm.org/latest/reference-manual/native-image/guides/build-native-shared-library/ diff --git a/example/integration_tests/bzlmod/MODULE.bazel.lock b/example/integration_tests/bzlmod/MODULE.bazel.lock index 30492902..2635a0f2 100644 --- a/example/integration_tests/bzlmod/MODULE.bazel.lock +++ b/example/integration_tests/bzlmod/MODULE.bazel.lock @@ -1,6 +1,6 @@ { "lockFileVersion": 1, - "moduleFileHash": "2c4cdc5e88c6a389eaa7481e96a79cc6c2ae107f0416b23ea46395a90fc444f5", + "moduleFileHash": "05a5111fc8fbbfbb1775970ce6e0f53bd453ddd07f821602926d9f4466892f3c", "flags": { "cmdRegistries": [ "https://bcr.bazel.build/" @@ -44,7 +44,7 @@ "tags": [ { "tagName": "graalvm", - "attributeValues": {"name":"--graalvm","distribution":"--oracle","java_version":"--20","version":"--20.0.2"}, + "attributeValues": {"name":"--graalvm","distribution":"--ce","java_version":"--20","version":"--20.0.2"}, "devDependency": false, "location": { "file": "@@//:MODULE.bazel", @@ -902,14 +902,14 @@ } }, "@rules_graalvm~override//:extensions.bzl%graalvm": { - "bzlTransitiveDigest": "dx1NHndC4WEvVNZJHqa7pdZn1nO4wenPCSmen/c3NaE=", + "bzlTransitiveDigest": "aQJryYP9wiwZXQ8JYwsuauQpVIo/X7CDOS2SiXt2rBI=", "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { "graalvm": { "bzlFile": "@@rules_graalvm~override//internal:graalvm_bindist.bzl", "ruleClassName": "_graalvm_bindist_repository", - "attributes": {"name":"--rules_graalvm~override~graalvm~graalvm","version":"--20.0.2","java_version":"--20","distribution":"--oracle","components":[],"setup_actions":[],"enable_toolchain":true,"toolchain_config":"--graalvm_toolchain_config_repo","sha256":"--"} + "attributes": {"name":"--rules_graalvm~override~graalvm~graalvm","version":"--20.0.2","java_version":"--20","distribution":"--ce","components":[],"setup_actions":[],"enable_toolchain":true,"toolchain_config":"--graalvm_toolchain_config_repo"} }, "graalvm_toolchain_config_repo": { "bzlFile": "@@rules_graalvm~override//internal:graalvm_bindist.bzl", diff --git a/graal/graal.bzl b/graal/graal.bzl index 9353e265..80c99e4c 100644 --- a/graal/graal.bzl +++ b/graal/graal.bzl @@ -6,6 +6,8 @@ load( ) load( "//internal/native_image:classic.bzl", + _DEBUG = "DEBUG_CONDITION", + _OPTIMIZATION_MODE = "OPTIMIZATION_MODE_CONDITION", _BAZEL_CPP_TOOLCHAIN_TYPE = "BAZEL_CPP_TOOLCHAIN_TYPE", _BAZEL_CURRENT_CPP_TOOLCHAIN = "BAZEL_CURRENT_CPP_TOOLCHAIN", _DEFAULT_GVM_REPO = "DEFAULT_GVM_REPO", @@ -42,25 +44,29 @@ _native_image = rule( def native_image( name, deps, - main_class, + main_class = None, + executable_name = select({ + "@bazel_tools//src/conditions:windows": "%target%-bin.exe", + "//conditions:default": "%target%-bin", + }), include_resources = None, reflection_configuration = None, jni_configuration = None, initialize_at_build_time = [], initialize_at_run_time = [], native_features = [], + debug = _DEBUG, + optimization_mode = _OPTIMIZATION_MODE, + shared_library = None, + static_zlib = None, + c_compiler_option = [], data = [], extra_args = [], + allow_fallback = False, check_toolchains = select({ "@bazel_tools//src/conditions:windows": True, "//conditions:default": False, }), - c_compiler_option = [], - static_zlib = None, - executable_name = select({ - "@bazel_tools//src/conditions:windows": "%target%-bin.exe", - "//conditions:default": "%target%-bin", - }), native_image_tool = _DEFAULT_NATIVE_IMAGE_TOOL, **kwargs): """Generates and compiles a GraalVM native image from a Java library target. @@ -68,22 +74,29 @@ def native_image( Args: name: Name of the target; required. deps: Dependency `java_library` targets to assemble the classpath from. Mandatory. - main_class: Entrypoint main class to build from; mandatory. + main_class: Entrypoint main class to build from; mandatory unless building a shared library. + executable_name: Set the name of the output binary; defaults to `%target%-bin`, or `%target%-bin.exe` on Windows. + The special string `%target%`, if present, is replaced with `name`. include_resources: Glob to pass to `IncludeResources`. No default; optional. reflection_configuration: Reflection configuration file. No default; optional. jni_configuration: JNI configuration file. No default; optional. initialize_at_build_time: Classes or patterns to pass to `--initialize-at-build-time`. No default; optional. initialize_at_run_time: Classes or patterns to pass to `--initialize-at-run-time`. No default; optional. native_features: GraalVM `Feature` classes to include and apply. No default; optional. - data: Data files to make available during the compilation. No default; optional. - extra_args: Extra `native-image` args to pass. Last wins. No default; optional. - check_toolchains: Whether to perform toolchain checks in `native-image`; defaults to `True` on Windows, `False` otherwise. - c_compiler_option: Extra C compiler options to pass through `native-image`. No default; optional. + debug: Whether to include debug symbols; by default, this flag's state is managed by Bazel. Passing + `--compilation_mode=dbg` is sufficient to flip this to `True`, or it can be overridden via this parameter. + optimization_mode: Behaves the same as `debug`; normally, this flag's state is managed by Bazel. Passing + `--compilation_mode=fastbuild|opt|dbg` is sufficient to set this flag, or it can be overridden via this + parameter. + shared_library: Build a shared library binary instead of an executable. static_zlib: A cc_library or cc_import target that provides zlib as a static library. On Linux, this is used when Graal statically links zlib into the binary, e.g. with `-H:+StaticExecutableWithDynamicLibC`. - executable_name: Set the name of the output binary; defaults to `%target%-bin`, or `%target%-bin.exe` on Windows. - The special string `%target%`, if present, is replaced with `name`. + c_compiler_option: Extra C compiler options to pass through `native-image`. No default; optional. + data: Data files to make available during the compilation. No default; optional. + extra_args: Extra `native-image` args to pass. Last wins. No default; optional. + allow_fallback: Whether to allow fall-back to a partial native image; defaults to `False`. + check_toolchains: Whether to perform toolchain checks in `native-image`; defaults to `True` on Windows, `False` otherwise. native_image_tool: Specific `native-image` executable target to use. **kwargs: Extra keyword arguments are passed to the underlying `native_image` rule. """ @@ -98,11 +111,15 @@ def native_image( initialize_at_build_time = initialize_at_build_time, initialize_at_run_time = initialize_at_run_time, native_features = native_features, + debug = debug, + optimization_mode = optimization_mode, + shared_library = shared_library, data = data, extra_args = extra_args, check_toolchains = check_toolchains, static_zlib = static_zlib, c_compiler_option = c_compiler_option, + allow_fallback = allow_fallback, executable_name = executable_name, native_image_tool = native_image_tool, **kwargs @@ -111,25 +128,29 @@ def native_image( def graal_binary( name, deps, - main_class, + main_class = None, + executable_name = select({ + "@bazel_tools//src/conditions:windows": "%target%-bin.exe", + "//conditions:default": "%target%-bin", + }), include_resources = None, reflection_configuration = None, jni_configuration = None, initialize_at_build_time = [], initialize_at_run_time = [], native_features = [], + debug = _DEBUG, + optimization_mode = _OPTIMIZATION_MODE, + shared_library = None, + static_zlib = None, + c_compiler_option = [], data = [], extra_args = [], + allow_fallback = False, check_toolchains = select({ "@bazel_tools//src/conditions:windows": True, "//conditions:default": False, }), - c_compiler_option = [], - static_zlib = None, - executable_name = select({ - "@bazel_tools//src/conditions:windows": "%target%-bin.exe", - "//conditions:default": "%target%-bin", - }), native_image_tool = _DEFAULT_NATIVE_IMAGE_TOOL, **kwargs): """Alias for the renamed `native_image` rule. Identical. @@ -137,22 +158,29 @@ def graal_binary( Args: name: Name of the target; required. deps: Dependency `java_library` targets to assemble the classpath from. Mandatory. - main_class: Entrypoint main class to build from; mandatory. + main_class: Entrypoint main class to build from; mandatory unless building a shared library. + executable_name: Set the name of the output binary; defaults to `%target%-bin`, or `%target%-bin.exe` on Windows. + The special string `%target%`, if present, is replaced with `name`. include_resources: Glob to pass to `IncludeResources`. No default; optional. reflection_configuration: Reflection configuration file. No default; optional. jni_configuration: JNI configuration file. No default; optional. initialize_at_build_time: Classes or patterns to pass to `--initialize-at-build-time`. No default; optional. initialize_at_run_time: Classes or patterns to pass to `--initialize-at-run-time`. No default; optional. native_features: GraalVM `Feature` classes to include and apply. No default; optional. - data: Data files to make available during the compilation. No default; optional. - extra_args: Extra `native-image` args to pass. Last wins. No default; optional. - check_toolchains: Whether to perform toolchain checks in `native-image`; defaults to `True` on Windows, `False` otherwise. + debug: Whether to include debug symbols; by default, this flag's state is managed by Bazel. Passing + `--compilation_mode=dbg` is sufficient to flip this to `True`, or it can be overridden via this parameter. + optimization_mode: Behaves the same as `debug`; normally, this flag's state is managed by Bazel. Passing + `--compilation_mode=fastbuild|opt|dbg` is sufficient to set this flag, or it can be overridden via this + parameter. + shared_library: Build a shared library binary instead of an executable. static_zlib: A cc_library or cc_import target that provides zlib as a static library. On Linux, this is used when Graal statically links zlib into the binary, e.g. with `-H:+StaticExecutableWithDynamicLibC`. c_compiler_option: Extra C compiler options to pass through `native-image`. No default; optional. - executable_name: Set the name of the output binary; defaults to `%target%-bin`, or `%target%-bin.exe` on Windows. - The special string `%target%`, if present, is replaced with `name`. + data: Data files to make available during the compilation. No default; optional. + extra_args: Extra `native-image` args to pass. Last wins. No default; optional. + allow_fallback: Whether to allow fall-back to a partial native image; defaults to `False`. + check_toolchains: Whether to perform toolchain checks in `native-image`; defaults to `True` on Windows, `False` otherwise. native_image_tool: Specific `native-image` executable target to use. **kwargs: Extra keyword arguments are passed to the underlying `native_image` rule. """ @@ -167,6 +195,9 @@ def graal_binary( initialize_at_build_time = initialize_at_build_time, initialize_at_run_time = initialize_at_run_time, native_features = native_features, + debug = debug, + optimization_mode = optimization_mode, + shared_library = shared_library, data = data, extra_args = extra_args, static_zlib = static_zlib, diff --git a/graalvm/nativeimage/rules.bzl b/graalvm/nativeimage/rules.bzl index 0e009452..60585bef 100644 --- a/graalvm/nativeimage/rules.bzl +++ b/graalvm/nativeimage/rules.bzl @@ -7,6 +7,8 @@ load( load( "//internal/native_image:rules.bzl", _BAZEL_CPP_TOOLCHAIN_TYPE = "BAZEL_CPP_TOOLCHAIN_TYPE", + _DEBUG = "DEBUG_CONDITION", + _OPTIMIZATION_MODE = "OPTIMIZATION_MODE_CONDITION", _GVM_TOOLCHAIN_TYPE = "GVM_TOOLCHAIN_TYPE", _NATIVE_IMAGE_ATTRS = "NATIVE_IMAGE_ATTRS", _graal_binary_implementation = "graal_binary_implementation", @@ -61,19 +63,23 @@ _native_image = rule( def native_image( name, deps, - main_class, + main_class = None, + executable_name = _EXEUCTABLE_NAME_CONDITION, include_resources = None, reflection_configuration = None, jni_configuration = None, initialize_at_build_time = [], initialize_at_run_time = [], native_features = [], + debug = _DEBUG, + optimization_mode = _OPTIMIZATION_MODE, + shared_library = None, + static_zlib = None, + c_compiler_option = [], data = [], extra_args = [], + allow_fallback = False, check_toolchains = _DEFAULT_CHECK_TOOLCHAINS_CONDITION, - static_zlib = None, - c_compiler_option = [], - executable_name = _EXEUCTABLE_NAME_CONDITION, native_image_tool = None, # uses toolchains by default native_image_settings = [_DEFAULT_NATIVE_IMAGE_SETTINGS], **kwargs): @@ -82,22 +88,29 @@ def native_image( Args: name: Name of the target; required. deps: Dependency `java_library` targets to assemble the classpath from. Mandatory. - main_class: Entrypoint main class to build from; mandatory. + main_class: Entrypoint main class to build from; mandatory unless building a shared library. + executable_name: Set the name of the output binary; defaults to `%target%-bin`, or `%target%-bin.exe` on Windows. + The special string `%target%`, if present, is replaced with `name`. include_resources: Glob to pass to `IncludeResources`. No default; optional. reflection_configuration: Reflection configuration file. No default; optional. jni_configuration: JNI configuration file. No default; optional. initialize_at_build_time: Classes or patterns to pass to `--initialize-at-build-time`. No default; optional. initialize_at_run_time: Classes or patterns to pass to `--initialize-at-run-time`. No default; optional. native_features: GraalVM `Feature` classes to include and apply. No default; optional. - data: Data files to make available during the compilation. No default; optional. - extra_args: Extra `native-image` args to pass. Last wins. No default; optional. - check_toolchains: Whether to perform toolchain checks in `native-image`; defaults to `True` on Windows, `False` otherwise. + debug: Whether to include debug symbols; by default, this flag's state is managed by Bazel. Passing + `--compilation_mode=dbg` is sufficient to flip this to `True`, or it can be overridden via this parameter. + optimization_mode: Behaves the same as `debug`; normally, this flag's state is managed by Bazel. Passing + `--compilation_mode=fastbuild|opt|dbg` is sufficient to set this flag, or it can be overridden via this + parameter. + shared_library: Build a shared library binary instead of an executable. static_zlib: A cc_library or cc_import target that provides zlib as a static library. On Linux, this is used when Graal statically links zlib into the binary, e.g. with `-H:+StaticExecutableWithDynamicLibC`. c_compiler_option: Extra C compiler options to pass through `native-image`. No default; optional. - executable_name: Set the name of the output binary; defaults to `%target%-bin`, or `%target%-bin.exe` on Windows. - The special string `%target%`, if present, is replaced with `name`. + data: Data files to make available during the compilation. No default; optional. + extra_args: Extra `native-image` args to pass. Last wins. No default; optional. + allow_fallback: Whether to allow fall-back to a partial native image; defaults to `False`. + check_toolchains: Whether to perform toolchain checks in `native-image`; defaults to `True` on Windows, `False` otherwise. native_image_tool: Specific `native-image` executable target to use. native_image_settings: Suite(s) of Native Image build settings to use. **kwargs: Extra keyword arguments are passed to the underlying `native_image` rule. @@ -113,11 +126,15 @@ def native_image( initialize_at_build_time = initialize_at_build_time, initialize_at_run_time = initialize_at_run_time, native_features = native_features, + debug = debug, + optimization_mode = optimization_mode, + shared_library = shared_library, data = data, extra_args = extra_args, check_toolchains = check_toolchains, static_zlib = static_zlib, c_compiler_option = c_compiler_option, + allow_fallback = allow_fallback, executable_name = executable_name, native_image_tool = native_image_tool, native_image_settings = native_image_settings, diff --git a/internal/conditions/BUILD.bazel b/internal/conditions/BUILD.bazel new file mode 100644 index 00000000..d01845a8 --- /dev/null +++ b/internal/conditions/BUILD.bazel @@ -0,0 +1,3 @@ +package(default_visibility = [ + "//visibility:public", +]) diff --git a/internal/conditions/compiler/BUILD.bazel b/internal/conditions/compiler/BUILD.bazel new file mode 100644 index 00000000..def7a46e --- /dev/null +++ b/internal/conditions/compiler/BUILD.bazel @@ -0,0 +1,24 @@ +package(default_visibility = [ + "//visibility:public", +]) + +config_setting( + name = "debug", + values = { + "compilation_mode": "dbg", + }, +) + +config_setting( + name = "fastbuild", + values = { + "compilation_mode": "fastbuild", + }, +) + +config_setting( + name = "optimized", + values = { + "compilation_mode": "opt", + }, +) diff --git a/internal/conditions/tools/BUILD.bazel b/internal/conditions/tools/BUILD.bazel new file mode 100644 index 00000000..0cd7e6e8 --- /dev/null +++ b/internal/conditions/tools/BUILD.bazel @@ -0,0 +1,10 @@ +package(default_visibility = [ + "//visibility:public", +]) + +config_setting( + name = "coverage", + values = { + "collect_code_coverage": "true", + }, +) diff --git a/internal/native_image/builder.bzl b/internal/native_image/builder.bzl index 5d92e35b..3ea1a326 100644 --- a/internal/native_image/builder.bzl +++ b/internal/native_image/builder.bzl @@ -42,6 +42,96 @@ def _configure_static_zlib_compile(ctx, args, direct_inputs): ) direct_inputs.append(zlib_static) +def _configure_debug(ctx, args): + """Configure debug symbols for a Native Image build to match Bazel's build settings. + + Args: + ctx: Context of the Native Image rule implementation. + args: Args builder for the Native Image build. + """ + + if ctx.attr.debug: + args.add("-g") + +def _configure_optimization_mode(ctx, args): + """Configure the Native Image optimization mode to match Bazel's build setting. + + Args: + ctx: Context of the Native Image rule implementation. + args: Args builder for the Native Image build. + """ + + if ctx.attr.optimization_mode: + args.add( + ctx.attr.optimization_mode, + format = "-O%s", + ) + +def _configure_reflection(ctx, args, direct_inputs): + """Configure reflection settings for a Native Image build. + + Args: + ctx: Context of the Native Image rule implementation. + args: Args builder for the Native Image build. + direct_inputs: Direct Native Image build action inputs. + """ + + args.add_joined( + ctx.attr.initialize_at_build_time, + join_with = ",", + format_joined = "--initialize-at-build-time=%s", + ) + args.add_joined( + ctx.attr.initialize_at_run_time, + join_with = ",", + format_joined = "--initialize-at-run-time=%s", + ) + + if ctx.attr.reflection_configuration != None: + args.add(ctx.file.reflection_configuration, format = "-H:ReflectionConfigurationFiles=%s") + direct_inputs.append(ctx.file.reflection_configuration) + + if ctx.attr.jni_configuration != None: + args.add(ctx.file.jni_configuration, format = "-H:JNIConfigurationFiles=%s") + direct_inputs.append(ctx.file.jni_configuration) + args.add("-H:+JNI") + +def _configure_native_compiler(ctx, args, c_compiler_path, gvm_toolchain): + """Configure native compiler and linker flags for a Native Image build. + + Args: + ctx: Context of the Native Image rule implementation. + args: Args builder for the Native Image build. + c_compiler_path: Path to the C compiler; resolved via toolchains. + gvm_toolchain: Resolved GraalVM toolchain, or `None` if a tool target is in use via legacy rules. + """ + + # configure debug symbols + _configure_debug(ctx, args) + + # configure the build optimization mode + _configure_optimization_mode(ctx, args) + + if gvm_toolchain != None: + args.add(c_compiler_path, format = "--native-compiler-path=%s") + + # add custom compiler options + args.add_all( + ctx.attr.c_compiler_option, + format_each = "-H:CCompilerOption=%s", + ) + +def _configure_native_test_flags(ctx, args): + """Configure native testing flags; only applies if we are building a test-only target. + + Args: + ctx: Context of the Native Image rule implementation. + args: Args builder for the Native Image build. + """ + + if ctx.attr.coverage: + args.add("--tool:coverage") + def assemble_native_build_options( ctx, args, @@ -64,15 +154,21 @@ def assemble_native_build_options( direct_inputs: Direct inputs into the native image build (mutable). c_compiler_path: Path to the C compiler; resolved via toolchains. path_list_separator: Platform-specific path separator. - gvm_toolchain: Resolved GraalVM toolchain, or `None` if a tool target is in use via legacy rules. """ + gvm_toolchain: Resolved GraalVM toolchain, or `None` if a tool target is in use via legacy rules. + """ - args.add("--no-fallback") + # main class is required unless we are building a shared library + if ctx.attr.shared_library: + args.add("--shared") + elif ctx.attr.main_class == None or ctx.attr.main_class == "": + fail(""" + Native Image build failure: `main_class` attribute is mandatory in `native_image` or `graal_binary` targets, + unless `shared_library=True`. + """) - # assemble classpath - args.add_joined("-cp", classpath_depset, join_with = path_list_separator) + if not ctx.attr.allow_fallback: + args.add("--no-fallback") - if gvm_toolchain != None: - args.add(c_compiler_path, format = "--native-compiler-path=%s") args.add(ctx.attr.main_class, format = "-H:Class=%s") args.add(binary.basename.replace(".exe", ""), format = "-H:Name=%s") @@ -82,12 +178,11 @@ def assemble_native_build_options( if not ctx.attr.check_toolchains: args.add("-H:-CheckToolchain") - for arg in ctx.attr.extra_args: - args.add(arg) - - args.add_all( - ctx.attr.c_compiler_option, - format_each = "-H:CCompilerOption=%s", + # assemble classpath + args.add_joined( + "-cp", + classpath_depset, + join_with = path_list_separator, ) args.add_joined( @@ -96,29 +191,16 @@ def assemble_native_build_options( format_joined = "-H:Features=%s", ) - args.add_joined( - ctx.attr.initialize_at_build_time, - join_with = ",", - format_joined = "--initialize-at-build-time=%s", - ) - args.add_joined( - ctx.attr.initialize_at_run_time, - join_with = ",", - format_joined = "--initialize-at-run-time=%s", - ) + # configure the build optimization mode + _configure_native_compiler(ctx, args, c_compiler_path, gvm_toolchain) - if ctx.attr.reflection_configuration != None: - args.add(ctx.file.reflection_configuration, format = "-H:ReflectionConfigurationFiles=%s") - direct_inputs.append(ctx.file.reflection_configuration) + # configure reflection + _configure_reflection(ctx, args, direct_inputs) + # configure resources if ctx.attr.include_resources != None: args.add(ctx.attr.include_resources, format = "-H:IncludeResources=%s") - if ctx.attr.jni_configuration != None: - args.add(ctx.file.jni_configuration, format = "-H:JNIConfigurationFiles=%s") - direct_inputs.append(ctx.file.jni_configuration) - args.add("-H:+JNI") - # if a static build is being performed against hermetic zlib, configure it if ctx.attr.static_zlib != None: _configure_static_zlib_compile( @@ -126,3 +208,14 @@ def assemble_native_build_options( args, direct_inputs, ) + + # add test-related flags, if this is a `testonly` target + if ctx.attr.testonly: + _configure_native_test_flags( + ctx, + args, + ) + + # append extra arguments last + for arg in ctx.attr.extra_args: + args.add(arg) diff --git a/internal/native_image/classic.bzl b/internal/native_image/classic.bzl index 1a1fcc70..70da5366 100644 --- a/internal/native_image/classic.bzl +++ b/internal/native_image/classic.bzl @@ -5,6 +5,8 @@ load( _BAZEL_CPP_TOOLCHAIN_TYPE = "BAZEL_CPP_TOOLCHAIN_TYPE", _BAZEL_CURRENT_CPP_TOOLCHAIN = "BAZEL_CURRENT_CPP_TOOLCHAIN", _DEFAULT_GVM_REPO = "DEFAULT_GVM_REPO", + _DEBUG_CONDITION = "DEBUG_CONDITION", + _OPTIMIZATION_MODE_CONDITION = "OPTIMIZATION_MODE_CONDITION", _GVM_TOOLCHAIN_TYPE = "GVM_TOOLCHAIN_TYPE", _NATIVE_IMAGE_ATTRS = "NATIVE_IMAGE_ATTRS", _RULES_REPO = "RULES_REPO", @@ -60,6 +62,7 @@ def _graal_binary_classic_implementation(ctx): direct_inputs, transitive = transitive_inputs, ) + ctx.actions.run( outputs = [binary], arguments = [args], @@ -86,4 +89,6 @@ BAZEL_CURRENT_CPP_TOOLCHAIN = _BAZEL_CURRENT_CPP_TOOLCHAIN BAZEL_CPP_TOOLCHAIN_TYPE = _BAZEL_CPP_TOOLCHAIN_TYPE NATIVE_IMAGE_ATTRS = _NATIVE_IMAGE_ATTRS GVM_TOOLCHAIN_TYPE = _GVM_TOOLCHAIN_TYPE +DEBUG_CONDITION = _DEBUG_CONDITION +OPTIMIZATION_MODE_CONDITION = _OPTIMIZATION_MODE_CONDITION graal_binary_implementation = _graal_binary_classic_implementation diff --git a/internal/native_image/common.bzl b/internal/native_image/common.bzl index fe29d36a..5c043a8d 100644 --- a/internal/native_image/common.bzl +++ b/internal/native_image/common.bzl @@ -14,6 +14,30 @@ _LINUX_CONSTRAINT = "@platforms//os:linux" _MACOS_CONSTRAINT = "@platforms//os:macos" _WINDOWS_CONSTRAINT = "@platforms//os:windows" +# buildifier: disable=name-conventions +_NativeImageOptimization = struct( + DEFAULT = "", + FASTBUILD = "b", + OPTIMIZED_LEVEL_1 = "1", + OPTIMIZED_LEVEL_2 = "2", +) + +_DEBUG_CONDITION = select({ + "@rules_graalvm//internal/conditions/compiler:debug": True, + "//conditions:default": False, +}) + +_COVERAGE_CONDITION = select({ + "@rules_graalvm//internal/conditions/tools:coverage": True, + "//conditions:default": False, +}) + +_OPTIMIZATION_MODE_CONDITION = select({ + "@rules_graalvm//internal/conditions/compiler:fastbuild": _NativeImageOptimization.FASTBUILD, # becomes `-Ob` + "@rules_graalvm//internal/conditions/compiler:optimized": _NativeImageOptimization.OPTIMIZED_LEVEL_2, # becomes `-O2` + "//conditions:default": _NativeImageOptimization.DEFAULT, # becomes `-O2` via GraalVM defaults +}) + _NATIVE_IMAGE_ATTRS = { "deps": attr.label_list( providers = [[JavaInfo]], @@ -22,9 +46,13 @@ _NATIVE_IMAGE_ATTRS = { "main_class": attr.string( mandatory = False, ), - "binary_type": attr.string( + "shared_library": attr.bool( + mandatory = False, + default = False, + ), + "allow_fallback": attr.bool( mandatory = False, - default = "executable", + default = False, ), "include_resources": attr.string( mandatory = False, @@ -37,6 +65,23 @@ _NATIVE_IMAGE_ATTRS = { mandatory = False, allow_single_file = True, ), + "debug": attr.bool( + mandatory = False, + default = False, + ), + "optimization_mode": attr.string( + mandatory = False, + values = [ + _NativeImageOptimization.DEFAULT, + _NativeImageOptimization.FASTBUILD, + _NativeImageOptimization.OPTIMIZED_LEVEL_1, + _NativeImageOptimization.OPTIMIZED_LEVEL_2, + ], + ), + "coverage": attr.bool( + mandatory = False, + default = False, + ), "initialize_at_build_time": attr.string_list( mandatory = False, ), @@ -118,8 +163,15 @@ def _prepare_native_image_rule_context( return binary ## Exports. + +# buildifier: disable=name-conventions +NativeImageOptimization = _NativeImageOptimization + RULES_REPO = _RULES_REPO DEFAULT_GVM_REPO = _DEFAULT_GVM_REPO +DEBUG_CONDITION = _DEBUG_CONDITION +COVERAGE_CONDITION = _COVERAGE_CONDITION +OPTIMIZATION_MODE_CONDITION = _OPTIMIZATION_MODE_CONDITION GVM_TOOLCHAIN_TYPE = _GVM_TOOLCHAIN_TYPE BAZEL_CPP_TOOLCHAIN_TYPE = _BAZEL_CPP_TOOLCHAIN_TYPE BAZEL_CURRENT_CPP_TOOLCHAIN = _BAZEL_CURRENT_CPP_TOOLCHAIN diff --git a/internal/native_image/rules.bzl b/internal/native_image/rules.bzl index 19e23910..f0677689 100644 --- a/internal/native_image/rules.bzl +++ b/internal/native_image/rules.bzl @@ -8,6 +8,8 @@ load( "//internal/native_image:common.bzl", _BAZEL_CPP_TOOLCHAIN_TYPE = "BAZEL_CPP_TOOLCHAIN_TYPE", _BAZEL_CURRENT_CPP_TOOLCHAIN = "BAZEL_CURRENT_CPP_TOOLCHAIN", + _DEBUG_CONDITION = "DEBUG_CONDITION", + _OPTIMIZATION_MODE_CONDITION = "OPTIMIZATION_MODE_CONDITION", _DEFAULT_GVM_REPO = "DEFAULT_GVM_REPO", _GVM_TOOLCHAIN_TYPE = "GVM_TOOLCHAIN_TYPE", _NATIVE_IMAGE_ATTRS = "NATIVE_IMAGE_ATTRS", @@ -19,6 +21,16 @@ load( _resolve_cc_toolchain = "resolve_cc_toolchain", ) +def _build_action_message(ctx): + _mode_label = { + "b": "fastbuild", + "s": "size", + "1": "opt", + "2": "opt", + "default": ctx.attr.debug and "debug" or "default", + } + return (_mode_label[ctx.attr.optimization_mode or "default"]) + def _graal_binary_implementation(ctx): graal_attr = ctx.attr.native_image_tool extra_tool_deps = [] @@ -84,7 +96,6 @@ def _graal_binary_implementation(ctx): direct_inputs, transitive = transitive_inputs, ) - run_params = { "outputs": [binary], "executable": graal, @@ -92,7 +103,7 @@ def _graal_binary_implementation(ctx): "mnemonic": "NativeImage", "env": native_toolchain.env, "execution_requirements": {k: "" for k in native_toolchain.execution_requirements}, - "progress_message": "Compiling native image %{label}", + "progress_message": "Native Image (__mode__) %{label}".replace("__mode__", _build_action_message(ctx)), "toolchain": Label(_GVM_TOOLCHAIN_TYPE), } @@ -166,4 +177,6 @@ BAZEL_CURRENT_CPP_TOOLCHAIN = _BAZEL_CURRENT_CPP_TOOLCHAIN BAZEL_CPP_TOOLCHAIN_TYPE = _BAZEL_CPP_TOOLCHAIN_TYPE NATIVE_IMAGE_ATTRS = _NATIVE_IMAGE_ATTRS GVM_TOOLCHAIN_TYPE = _GVM_TOOLCHAIN_TYPE +DEBUG_CONDITION = _DEBUG_CONDITION +OPTIMIZATION_MODE_CONDITION = _OPTIMIZATION_MODE_CONDITION graal_binary_implementation = _graal_binary_implementation