-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprotobuf_javascript_release.bzl
52 lines (42 loc) · 1.46 KB
/
protobuf_javascript_release.bzl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
"""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")
_PROTOBUF_JAVASCRIPT_VERSION = "3.21.2"
def _package_naming_impl(ctx):
values = {}
values["version"] = _PROTOBUF_JAVASCRIPT_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,
)