Merge commit '36bca61764984ff5395653cf8377ec5daa71b709' as 'libs/protobuf'
This commit is contained in:
56
libs/protobuf/build_defs/arch_tests.bzl
Normal file
56
libs/protobuf/build_defs/arch_tests.bzl
Normal file
@@ -0,0 +1,56 @@
|
||||
"""Generated unittests to verify that a binary is built for the expected architecture."""
|
||||
|
||||
load("//build_defs:internal_shell.bzl", "inline_sh_test")
|
||||
|
||||
def _arch_test_impl(
|
||||
name,
|
||||
platform,
|
||||
file_platform,
|
||||
bazel_binaries = [],
|
||||
system_binaries = [],
|
||||
**kwargs):
|
||||
"""Bazel rule to verify that a Bazel or system binary is built for the aarch64 architecture.
|
||||
|
||||
Args:
|
||||
name: the name of the test.
|
||||
platform: a diagnostic name for this architecture.
|
||||
file_platform: the expected output of `file`.
|
||||
bazel_binaries: a set of binary targets to inspect.
|
||||
system_binaries: a set of paths to system executables to inspect.
|
||||
**kwargs: other keyword arguments that are passed to the test.
|
||||
"""
|
||||
|
||||
inline_sh_test(
|
||||
name = name,
|
||||
tools = bazel_binaries,
|
||||
cmd = """
|
||||
for binary in "$(rootpaths %s) %s"; do
|
||||
(file -L $$binary | grep -q "%s") \
|
||||
|| (echo "Test binary is not an %s binary: "; file -L $$binary; exit 1)
|
||||
done
|
||||
""" % (
|
||||
" ".join(bazel_binaries),
|
||||
" ".join(system_binaries),
|
||||
file_platform,
|
||||
platform,
|
||||
),
|
||||
target_compatible_with = select({
|
||||
"//build_defs:" + platform: [],
|
||||
"//conditions:default": ["@platforms//:incompatible"],
|
||||
}),
|
||||
**kwargs
|
||||
)
|
||||
|
||||
def aarch64_test(**kwargs):
|
||||
_arch_test_impl(
|
||||
platform = "aarch64",
|
||||
file_platform = "ELF 64-bit LSB executable, ARM aarch64",
|
||||
**kwargs
|
||||
)
|
||||
|
||||
def x86_64_test(**kwargs):
|
||||
_arch_test_impl(
|
||||
platform = "x86_64",
|
||||
file_platform = "ELF 64-bit LSB executable, ARM x86_64",
|
||||
**kwargs
|
||||
)
|
||||
Reference in New Issue
Block a user