1*6777b538SAndroid Build Coastguard Worker""" 2*6777b538SAndroid Build Coastguard WorkerGenerates package naming variables for use with rules_pkg. 3*6777b538SAndroid Build Coastguard Worker""" 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Workerload("@rules_pkg//:providers.bzl", "PackageVariablesInfo") 6*6777b538SAndroid Build Coastguard Workerload("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain") 7*6777b538SAndroid Build Coastguard Workerload(":protobuf_version.bzl", "PROTOC_VERSION") 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Workerdef _package_naming_impl(ctx): 10*6777b538SAndroid Build Coastguard Worker values = {} 11*6777b538SAndroid Build Coastguard Worker values["version"] = PROTOC_VERSION 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker # infer from the current cpp toolchain. 14*6777b538SAndroid Build Coastguard Worker toolchain = find_cpp_toolchain(ctx) 15*6777b538SAndroid Build Coastguard Worker cpu = toolchain.cpu 16*6777b538SAndroid Build Coastguard Worker system_name = toolchain.target_gnu_system_name 17*6777b538SAndroid Build Coastguard Worker 18*6777b538SAndroid Build Coastguard Worker # rename cpus to match what we want artifacts to be 19*6777b538SAndroid Build Coastguard Worker if cpu == "systemz": 20*6777b538SAndroid Build Coastguard Worker cpu = "s390_64" 21*6777b538SAndroid Build Coastguard Worker elif cpu == "aarch64": 22*6777b538SAndroid Build Coastguard Worker cpu = "aarch_64" 23*6777b538SAndroid Build Coastguard Worker elif cpu == "ppc64": 24*6777b538SAndroid Build Coastguard Worker cpu = "ppcle_64" 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard Worker # use the system name to determine the os and then create platform names 27*6777b538SAndroid Build Coastguard Worker if "apple" in system_name: 28*6777b538SAndroid Build Coastguard Worker values["platform"] = "osx-" + cpu 29*6777b538SAndroid Build Coastguard Worker elif "linux" in system_name: 30*6777b538SAndroid Build Coastguard Worker values["platform"] = "linux-" + cpu 31*6777b538SAndroid Build Coastguard Worker elif "mingw" in system_name: 32*6777b538SAndroid Build Coastguard Worker if cpu == "x86_64": 33*6777b538SAndroid Build Coastguard Worker values["platform"] = "win64" 34*6777b538SAndroid Build Coastguard Worker else: 35*6777b538SAndroid Build Coastguard Worker values["platform"] = "win32" 36*6777b538SAndroid Build Coastguard Worker else: 37*6777b538SAndroid Build Coastguard Worker values["platform"] = "unknown" 38*6777b538SAndroid Build Coastguard Worker 39*6777b538SAndroid Build Coastguard Worker return PackageVariablesInfo(values = values) 40*6777b538SAndroid Build Coastguard Worker 41*6777b538SAndroid Build Coastguard Worker 42*6777b538SAndroid Build Coastguard Workerpackage_naming = rule( 43*6777b538SAndroid Build Coastguard Worker implementation = _package_naming_impl, 44*6777b538SAndroid Build Coastguard Worker attrs = { 45*6777b538SAndroid Build Coastguard Worker # Necessary data dependency for find_cpp_toolchain. 46*6777b538SAndroid Build Coastguard Worker "_cc_toolchain": attr.label(default = Label("@bazel_tools//tools/cpp:current_cc_toolchain")), 47*6777b538SAndroid Build Coastguard Worker }, 48*6777b538SAndroid Build Coastguard Worker toolchains = ["@bazel_tools//tools/cpp:toolchain_type"], 49*6777b538SAndroid Build Coastguard Worker incompatible_use_toolchain_transition = True, 50*6777b538SAndroid Build Coastguard Worker) 51