Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.7 KiB
49 lines
1.7 KiB
# Protocol Buffers - Google's data interchange format |
|
# Copyright 2024 Google Inc. All rights reserved. |
|
# |
|
# Use of this source code is governed by a BSD-style |
|
# license that can be found in the LICENSE file or at |
|
# https://developers.google.com/open-source/licenses/bsd |
|
# |
|
""" |
|
Toolchain helpers. |
|
|
|
The helpers here should be used for a migration to toolchain in proto rules. |
|
|
|
Anybody that needs them in another repository should copy them, because after |
|
the migration is finished, the helpers can be removed. |
|
""" |
|
|
|
load("//bazel/common:proto_lang_toolchain_info.bzl", "ProtoLangToolchainInfo") |
|
load("//bazel/private:native.bzl", "native_proto_common") |
|
|
|
_incompatible_toolchain_resolution = getattr(native_proto_common, "INCOMPATIBLE_ENABLE_PROTO_TOOLCHAIN_RESOLUTION", False) |
|
|
|
def _find_toolchain(ctx, legacy_attr, toolchain_type): |
|
if _incompatible_toolchain_resolution: |
|
toolchain = ctx.toolchains[toolchain_type] |
|
if not toolchain: |
|
fail("No toolchains registered for '%s'." % toolchain_type) |
|
return toolchain.proto |
|
else: |
|
return getattr(ctx.attr, legacy_attr)[ProtoLangToolchainInfo] |
|
|
|
def _use_toolchain(toolchain_type): |
|
if _incompatible_toolchain_resolution: |
|
return [config_common.toolchain_type(toolchain_type, mandatory = False)] |
|
else: |
|
return [] |
|
|
|
def _if_legacy_toolchain(legacy_attr_dict): |
|
if _incompatible_toolchain_resolution: |
|
return {} |
|
else: |
|
return legacy_attr_dict |
|
|
|
toolchains = struct( |
|
use_toolchain = _use_toolchain, |
|
find_toolchain = _find_toolchain, |
|
if_legacy_toolchain = _if_legacy_toolchain, |
|
INCOMPATIBLE_ENABLE_PROTO_TOOLCHAIN_RESOLUTION = _incompatible_toolchain_resolution, |
|
PROTO_TOOLCHAIN = "//bazel/private:proto_toolchain_type", |
|
)
|
|
|