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.
57 lines
2.1 KiB
57 lines
2.1 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 |
|
# |
|
"""Testing function for proto_common module""" |
|
|
|
load("//bazel/common:proto_common.bzl", "proto_common") |
|
|
|
def _resource_set_callback(_os, inputs_size): |
|
return {"memory": 25 + 0.15 * inputs_size, "cpu": 1} |
|
|
|
def _impl(ctx): |
|
outfile = ctx.actions.declare_file(ctx.attr.name) |
|
kwargs = {} |
|
if ctx.attr.plugin_output == "single": |
|
kwargs["plugin_output"] = outfile.path |
|
elif ctx.attr.plugin_output == "multiple": |
|
kwargs["plugin_output"] = ctx.bin_dir.path |
|
elif ctx.attr.plugin_output == "wrong": |
|
kwargs["plugin_output"] = ctx.bin_dir.path + "///" |
|
if ctx.attr.additional_args: |
|
additional_args = ctx.actions.args() |
|
additional_args.add_all(ctx.attr.additional_args) |
|
kwargs["additional_args"] = additional_args |
|
if ctx.files.additional_tools: |
|
kwargs["additional_tools"] = ctx.files.additional_tools |
|
if ctx.files.additional_inputs: |
|
kwargs["additional_inputs"] = depset(ctx.files.additional_inputs) |
|
if ctx.attr.use_resource_set: |
|
kwargs["resource_set"] = _resource_set_callback |
|
if ctx.attr.progress_message: |
|
kwargs["experimental_progress_message"] = ctx.attr.progress_message |
|
proto_common.compile( |
|
ctx.actions, |
|
ctx.attr.proto_dep[ProtoInfo], |
|
ctx.attr.toolchain[proto_common.ProtoLangToolchainInfo], |
|
[outfile], |
|
**kwargs |
|
) |
|
return [DefaultInfo(files = depset([outfile]))] |
|
|
|
compile_rule = rule( |
|
_impl, |
|
attrs = { |
|
"proto_dep": attr.label(), |
|
"plugin_output": attr.string(), |
|
"toolchain": attr.label(default = ":toolchain"), |
|
"additional_args": attr.string_list(), |
|
"additional_tools": attr.label_list(cfg = "exec"), |
|
"additional_inputs": attr.label_list(allow_files = True), |
|
"use_resource_set": attr.bool(), |
|
"progress_message": attr.string(), |
|
}, |
|
)
|
|
|