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.
97 lines
3.4 KiB
97 lines
3.4 KiB
""" |
|
Internal tools to migrate shell commands to Bazel as an intermediate step |
|
to wider Bazelification. |
|
""" |
|
|
|
load("@rules_shell//shell:sh_binary.bzl", "sh_binary") |
|
load("@rules_shell//shell:sh_test.bzl", "sh_test") |
|
|
|
def inline_sh_binary( |
|
name, |
|
srcs = [], |
|
tools = [], |
|
deps = [], |
|
cmd = "", |
|
**kwargs): |
|
"""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. |
|
|
|
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. |
|
cmd: the inline sh command to run. |
|
**kwargs: other keyword arguments that are passed to sh_binary. |
|
""" |
|
|
|
native.genrule( |
|
name = name + "_genrule", |
|
srcs = srcs, |
|
tools = tools, |
|
outs = [name + ".sh"], |
|
cmd = "cat <<'EOF' >$(OUTS)\n#!/bin/bash -exu\n%s\nEOF\n" % cmd, |
|
visibility = ["//visibility:private"], |
|
tags = kwargs["tags"] if "tags" in kwargs else None, |
|
target_compatible_with = kwargs["target_compatible_with"] if "target_compatible_with" in kwargs else None, |
|
testonly = kwargs["testonly"] if "testonly" in kwargs else None, |
|
) |
|
|
|
sh_binary( |
|
name = name, |
|
srcs = [name + "_genrule"], |
|
data = srcs + tools + deps, |
|
**kwargs |
|
) |
|
|
|
def inline_sh_test( |
|
name, |
|
srcs = [], |
|
tools = [], |
|
deps = [], |
|
cmd = "", |
|
**kwargs): |
|
"""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. |
|
|
|
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. |
|
cmd: the inline sh command to run. |
|
**kwargs: other keyword arguments that are passed to sh_binary. |
|
https://bazel.build/reference/be/common-definitions#common-attributes) |
|
""" |
|
|
|
native.genrule( |
|
name = name + "_genrule", |
|
srcs = srcs, |
|
tools = tools, |
|
outs = [name + ".sh"], |
|
cmd = "cat <<'EOF' >$(OUTS)\n#!/bin/bash -exu\n%s\nEOF\n" % cmd, |
|
visibility = ["//visibility:private"], |
|
tags = kwargs["tags"] if "tags" in kwargs else None, |
|
target_compatible_with = kwargs["target_compatible_with"] if "target_compatible_with" in kwargs else None, |
|
testonly = kwargs["testonly"] if "testonly" in kwargs else None, |
|
) |
|
|
|
sh_test( |
|
name = name, |
|
srcs = [name + "_genrule"], |
|
data = srcs + tools + deps, |
|
**kwargs |
|
)
|
|
|