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.
50 lines
1.4 KiB
50 lines
1.4 KiB
""" |
|
Generates package naming variables for use with rules_pkg. |
|
""" |
|
|
|
load("@rules_pkg//:providers.bzl", "PackageVariablesInfo") |
|
load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain") |
|
load(":protobuf_version.bzl", "PROTOBUF_VERSION") |
|
|
|
def _package_naming_impl(ctx): |
|
values = {} |
|
values["version"] = PROTOBUF_VERSION |
|
|
|
# infer from the current cpp toolchain. |
|
toolchain = find_cpp_toolchain(ctx) |
|
cpu = toolchain.cpu |
|
system_name = toolchain.target_gnu_system_name |
|
|
|
# rename cpus to match what we want artifacts to be |
|
if cpu == "systemz": |
|
cpu = "s390_64" |
|
elif cpu == "aarch64": |
|
cpu = "aarch_64" |
|
elif cpu == "ppc64": |
|
cpu = "ppcle_64" |
|
|
|
# use the system name to determine the os and then create platform names |
|
if "apple" in system_name: |
|
values["platform"] = "osx-" + cpu |
|
elif "linux" in system_name: |
|
values["platform"] = "linux-" + cpu |
|
elif "mingw" in system_name: |
|
if cpu == "x86_64": |
|
values["platform"] = "win64" |
|
else: |
|
values["platform"] = "win32" |
|
else: |
|
values["platform"] = "unknown" |
|
|
|
return PackageVariablesInfo(values = values) |
|
|
|
|
|
package_naming = rule( |
|
implementation = _package_naming_impl, |
|
attrs = { |
|
# Necessary data dependency for find_cpp_toolchain. |
|
"_cc_toolchain": attr.label(default = Label("@bazel_tools//tools/cpp:current_cc_toolchain")), |
|
}, |
|
toolchains = ["@bazel_tools//tools/cpp:toolchain_type"], |
|
incompatible_use_toolchain_transition = True, |
|
)
|
|
|