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.
94 lines
3.1 KiB
94 lines
3.1 KiB
2 years ago
|
"""
|
||
|
Internal tools to migrate shell commands to Bazel as an intermediate step
|
||
|
to wider Bazelification.
|
||
|
"""
|
||
|
|
||
2 years ago
|
def inline_sh_binary(
|
||
|
name,
|
||
|
srcs = [],
|
||
|
tools = [],
|
||
|
deps = [],
|
||
|
cmd = "",
|
||
|
testonly = None,
|
||
|
**kwargs):
|
||
2 years ago
|
"""Bazel rule to wrap up an inline bash script in a binary.
|
||
|
|
||
|
This is most useful as a stop-gap solution for migrating off Autotools.
|
||
|
These binaries are likely to be non-hermetic, with implicit system
|
||
|
dependencies.
|
||
2 years ago
|
|
||
|
NOTE: the rule is only an internal workaround. The interface may change and
|
||
|
the rule may be removed when everything is properly "Bazelified".
|
||
|
|
||
|
Args:
|
||
|
name: the name of the inline_sh_binary.
|
||
|
srcs: the files used directly by the script.
|
||
|
tools: the executable tools used directly by the script. Any target used
|
||
|
with rootpath/execpath/location must be declared here or in `srcs`.
|
||
|
deps: a list of dependency labels that are required to run this binary.
|
||
2 years ago
|
cmd: the inline sh command to run.
|
||
|
**kwargs: other keyword arguments that are passed to sh_binary.
|
||
2 years ago
|
testonly: common rule attribute (see:
|
||
|
https://bazel.build/reference/be/common-definitions#common-attributes)
|
||
|
"""
|
||
|
|
||
|
native.genrule(
|
||
|
name = name + "_genrule",
|
||
|
srcs = srcs,
|
||
|
exec_tools = tools,
|
||
|
outs = [name + ".sh"],
|
||
|
cmd = "cat <<'EOF' >$(OUTS)\n#!/bin/bash -exu\n%s\nEOF\n" % cmd,
|
||
|
testonly = testonly,
|
||
|
visibility = ["//visibility:private"],
|
||
|
)
|
||
|
|
||
|
native.sh_binary(
|
||
|
name = name,
|
||
|
srcs = [name + "_genrule"],
|
||
|
data = srcs + tools + deps,
|
||
|
testonly = testonly,
|
||
|
**kwargs
|
||
|
)
|
||
|
|
||
|
def inline_sh_test(
|
||
|
name,
|
||
|
srcs = [],
|
||
|
tools = [],
|
||
|
deps = [],
|
||
|
cmd = "",
|
||
|
**kwargs):
|
||
2 years ago
|
"""Bazel rule to wrap up an inline bash script in a test.
|
||
|
|
||
|
This is most useful as a stop-gap solution for migrating off Autotools.
|
||
|
These tests are likely to be non-hermetic, with implicit system dependencies.
|
||
2 years ago
|
|
||
|
NOTE: the rule is only an internal workaround. The interface may change and
|
||
|
the rule may be removed when everything is properly "Bazelified".
|
||
|
|
||
|
Args:
|
||
|
name: the name of the inline_sh_binary.
|
||
|
srcs: the files used directly by the script.
|
||
|
tools: the executable tools used directly by the script. Any target used
|
||
|
with rootpath/execpath/location must be declared here or in `srcs`.
|
||
|
deps: a list of dependency labels that are required to run this binary.
|
||
2 years ago
|
cmd: the inline sh command to run.
|
||
|
**kwargs: other keyword arguments that are passed to sh_binary.
|
||
2 years ago
|
https://bazel.build/reference/be/common-definitions#common-attributes)
|
||
|
"""
|
||
|
|
||
|
native.genrule(
|
||
|
name = name + "_genrule",
|
||
|
srcs = srcs,
|
||
|
exec_tools = tools,
|
||
|
outs = [name + ".sh"],
|
||
|
cmd = "cat <<'EOF' >$(OUTS)\n#!/bin/bash -exu\n%s\nEOF\n" % cmd,
|
||
|
visibility = ["//visibility:private"],
|
||
|
)
|
||
|
|
||
|
native.sh_test(
|
||
|
name = name,
|
||
|
srcs = [name + "_genrule"],
|
||
|
data = srcs + tools + deps,
|
||
|
**kwargs
|
||
|
)
|