blob: 327ae9a0a094e8aae632d5c7aa0217490b205483 [file] [log] [blame]
Derek Perez3a4d9312021-11-04 22:57:29 +00001"""
2Generates package naming variables for use with rules_pkg.
3"""
4
5load("@rules_pkg//:providers.bzl", "PackageVariablesInfo")
6load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
zhangskzb37b6132022-05-03 11:58:31 -04007load(":protobuf_version.bzl", "PROTOC_VERSION")
Derek Perez3a4d9312021-11-04 22:57:29 +00008
9def _package_naming_impl(ctx):
10 values = {}
zhangskzb37b6132022-05-03 11:58:31 -040011 values["version"] = PROTOC_VERSION
Derek Perez3a4d9312021-11-04 22:57:29 +000012
13 # infer from the current cpp toolchain.
14 toolchain = find_cpp_toolchain(ctx)
Deanna Garciae4e26df2021-11-24 21:27:54 +000015 cpu = toolchain.cpu
16 system_name = toolchain.target_gnu_system_name
17
18 # rename cpus to match what we want artifacts to be
19 if cpu == "systemz":
20 cpu = "s390_64"
21 elif cpu == "aarch64":
22 cpu = "aarch_64"
deannagarcia5b3f8532022-02-25 10:45:28 -080023 elif cpu == "ppc64":
24 cpu = "ppcle_64"
Deanna Garciae4e26df2021-11-24 21:27:54 +000025
26 # use the system name to determine the os and then create platform names
27 if "apple" in system_name:
28 values["platform"] = "osx-" + cpu
29 elif "linux" in system_name:
30 values["platform"] = "linux-" + cpu
31 elif "mingw" in system_name:
deannagarciaa5168a62022-02-23 16:45:56 -080032 if cpu == "x86_64":
Deanna Garciae4e26df2021-11-24 21:27:54 +000033 values["platform"] = "win64"
34 else:
35 values["platform"] = "win32"
36 else:
Deanna Garcia667d5e92021-11-29 23:54:09 +000037 values["platform"] = "unknown"
Deanna Garciae4e26df2021-11-24 21:27:54 +000038
Derek Perez3a4d9312021-11-04 22:57:29 +000039 return PackageVariablesInfo(values = values)
40
41
42package_naming = rule(
43 implementation = _package_naming_impl,
44 attrs = {
45 # Necessary data dependency for find_cpp_toolchain.
46 "_cc_toolchain": attr.label(default = Label("@bazel_tools//tools/cpp:current_cc_toolchain")),
47 },
48 toolchains = ["@bazel_tools//tools/cpp:toolchain_type"],
49 incompatible_use_toolchain_transition = True,
50)