@ -7,44 +7,42 @@ load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
load ( " :protobuf_version.bzl " , " PROTOC_VERSION " )
def _package_naming_impl ( ctx ) :
values = { }
values [ " version " ] = PROTOC_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 "
values = { }
values [ " version " ] = PROTOC_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 " ] = " win32 "
else :
values [ " platform " ] = " unknown "
return PackageVariablesInfo ( values = values )
values [ " platform " ] = " unknown "
return PackageVariablesInfo ( values = values )
package_naming = rule (
implementation = _package_naming_impl ,
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 " ) ) ,
# 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 ,
)