xref: /aosp_15_r20/external/bazelbuild-rules_rust/proto/protobuf/repositories.bzl (revision d4726bddaa87cc4778e7472feed243fa4b6c267f)
1# Copyright 2018 The Bazel Authors. All rights reserved.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#    http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15"""Dependencies for Rust proto rules"""
16
17load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
18load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
19load("//proto/protobuf/3rdparty/crates:defs.bzl", "crate_repositories")
20
21def rust_proto_protobuf_dependencies(bzlmod = False):
22    """Sets up dependencies for rules_rust's proto support.
23
24    Args:
25        bzlmod (bool): Whether this function is being called from a bzlmod context rather than a workspace context.
26
27    Returns:
28        A list of structs containing information about root module deps to report to bzlmod's extension_metadata.
29
30    """
31    if not bzlmod:
32        maybe(
33            http_archive,
34            name = "rules_proto",
35            sha256 = "6fb6767d1bef535310547e03247f7518b03487740c11b6c6adb7952033fe1295",
36            strip_prefix = "rules_proto-6.0.2",
37            url = "https://github.com/bazelbuild/rules_proto/releases/download/6.0.2/rules_proto-6.0.2.tar.gz",
38        )
39
40        maybe(
41            http_archive,
42            name = "com_google_protobuf",
43            sha256 = "758249b537abba2f21ebc2d02555bf080917f0f2f88f4cbe2903e0e28c4187ed",
44            strip_prefix = "protobuf-3.10.0",
45            urls = [
46                "https://mirror.bazel.build/github.com/protocolbuffers/protobuf/archive/v3.10.0.tar.gz",
47                "https://github.com/protocolbuffers/protobuf/archive/v3.10.0.tar.gz",
48            ],
49            patch_args = ["-p1"],
50            patches = [
51                Label("//proto/protobuf/3rdparty/patches:com_google_protobuf-v3.10.0-bzl_visibility.patch"),
52            ],
53        )
54
55        maybe(
56            http_archive,
57            name = "bazel_features",
58            sha256 = "5d7e4eb0bb17aee392143cd667b67d9044c270a9345776a5e5a3cccbc44aa4b3",
59            strip_prefix = "bazel_features-1.13.0",
60            url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.13.0/bazel_features-v1.13.0.tar.gz",
61        )
62
63    return crate_repositories()
64
65# buildifier: disable=unnamed-macro
66def rust_proto_protobuf_register_toolchains(register_toolchains = True):
67    """Register toolchains for proto compilation."""
68
69    if register_toolchains:
70        native.register_toolchains(str(Label("//proto/protobuf:default-proto-toolchain")))
71