202 lines
4.7 KiB
Python
202 lines
4.7 KiB
Python
load("@bazel_skylib//rules:write_file.bzl", "write_file")
|
|
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test")
|
|
load("@platforms//host:constraints.bzl", "HOST_CONSTRAINTS")
|
|
load("//lib:diff_test.bzl", "diff_test")
|
|
load(
|
|
"//lib:transitions.bzl",
|
|
"platform_transition_binary",
|
|
"platform_transition_filegroup",
|
|
"platform_transition_test",
|
|
)
|
|
|
|
platform(
|
|
name = "armv7_linux",
|
|
constraint_values = [
|
|
"@platforms//os:linux",
|
|
"@platforms//cpu:armv7",
|
|
],
|
|
)
|
|
|
|
platform(
|
|
name = "x86_64_linux",
|
|
constraint_values = [
|
|
"@platforms//os:linux",
|
|
"@platforms//cpu:x86_64",
|
|
"@io_bazel_rules_go//go/toolchain:cgo_off", # https://github.com/bazelbuild/rules_go/pull/3390
|
|
],
|
|
)
|
|
|
|
platform(
|
|
name = "arm64_linux",
|
|
constraint_values = [
|
|
"@platforms//os:linux",
|
|
"@platforms//cpu:arm64",
|
|
"@io_bazel_rules_go//go/toolchain:cgo_off", # https://github.com/bazelbuild/rules_go/pull/3390
|
|
],
|
|
)
|
|
|
|
config_setting(
|
|
name = "is_x86",
|
|
constraint_values = [
|
|
"@platforms//cpu:x86_64",
|
|
],
|
|
)
|
|
|
|
# Simple test fixture that produces something different depending on the
|
|
# target platform.
|
|
filegroup(
|
|
name = "platform_description",
|
|
srcs = select({
|
|
":is_x86": ["linux_x86.txt"],
|
|
"//conditions:default": ["linux_arm.txt"],
|
|
}),
|
|
)
|
|
|
|
platform_transition_filegroup(
|
|
name = "for_x86",
|
|
srcs = ["platform_description"],
|
|
target_platform = ":x86_64_linux",
|
|
)
|
|
|
|
platform_transition_filegroup(
|
|
name = "for_arm",
|
|
srcs = ["platform_description"],
|
|
target_platform = ":armv7_linux",
|
|
)
|
|
|
|
genrule(
|
|
name = "for_x86_path",
|
|
srcs = [":for_x86"],
|
|
outs = ["for_x86_path.txt"],
|
|
cmd = "echo $(rootpath :for_x86) > $@",
|
|
)
|
|
|
|
genrule(
|
|
name = "for_arm_path",
|
|
srcs = [":for_arm"],
|
|
outs = ["for_arm_path.txt"],
|
|
cmd = "echo $(rootpath :for_arm) > $@",
|
|
)
|
|
|
|
write_file(
|
|
name = "expected_x86_path",
|
|
out = "expected_x86_path.txt",
|
|
content = [
|
|
"lib/tests/transitions/linux_x86.txt",
|
|
"",
|
|
],
|
|
)
|
|
|
|
write_file(
|
|
name = "expected_arm_path",
|
|
out = "expected_arm_path.txt",
|
|
content = [
|
|
"lib/tests/transitions/linux_arm.txt",
|
|
"",
|
|
],
|
|
)
|
|
|
|
diff_test(
|
|
name = "test_x86",
|
|
file1 = ":for_x86_path",
|
|
file2 = ":expected_x86_path",
|
|
)
|
|
|
|
diff_test(
|
|
name = "test_arm",
|
|
file1 = ":for_arm_path",
|
|
file2 = ":expected_arm_path",
|
|
)
|
|
|
|
go_binary(
|
|
name = "test_transition_binary",
|
|
embed = [":transitions_lib"],
|
|
tags = ["manual"],
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
go_test(
|
|
name = "test_transition_test",
|
|
size = "small",
|
|
srcs = ["simple_test.go"],
|
|
)
|
|
|
|
platform_transition_binary(
|
|
name = "transitioned_go_binary_x86_64",
|
|
binary = ":test_transition_binary",
|
|
target_platform = "x86_64_linux",
|
|
)
|
|
|
|
platform_transition_binary(
|
|
name = "transitioned_go_binary_arm64",
|
|
binary = ":test_transition_binary",
|
|
target_platform = "arm64_linux",
|
|
)
|
|
|
|
platform_transition_test(
|
|
name = "transitioned_go_test_x86_64",
|
|
binary = ":test_transition_test",
|
|
# only run this test on an x86_64 host
|
|
target_compatible_with = [] if sorted(HOST_CONSTRAINTS) == ["@platforms//cpu:x86_64", "@platforms//os:linux"] else ["@platforms//:incompatible"],
|
|
target_platform = "x86_64_linux",
|
|
)
|
|
|
|
platform_transition_test(
|
|
name = "transitioned_go_test_arm64",
|
|
binary = ":test_transition_test",
|
|
# only run this test on an x86_64 host
|
|
target_compatible_with = [] if sorted(HOST_CONSTRAINTS) == ["@platforms//cpu:aarch64", "@platforms//os:linux"] else ["@platforms//:incompatible"],
|
|
target_platform = "arm64_linux",
|
|
)
|
|
|
|
sh_test(
|
|
name = "test_go_binary_is_x86_64",
|
|
size = "small",
|
|
srcs = ["test_file_type_contains.sh"],
|
|
args = [
|
|
"$(rootpath :transitioned_go_binary_x86_64)",
|
|
"x86-64",
|
|
],
|
|
data = [":transitioned_go_binary_x86_64"],
|
|
)
|
|
|
|
sh_test(
|
|
name = "test_go_binary_is_arm64",
|
|
size = "small",
|
|
srcs = ["test_file_type_contains.sh"],
|
|
args = [
|
|
"$(rootpath :transitioned_go_binary_arm64)",
|
|
"aarch64",
|
|
],
|
|
data = [":transitioned_go_binary_arm64"],
|
|
)
|
|
|
|
sh_test(
|
|
name = "test_go_test_is_x86_64",
|
|
size = "small",
|
|
srcs = ["test_file_type_contains.sh"],
|
|
args = [
|
|
"$(rootpath :transitioned_go_test_x86_64)",
|
|
"x86-64",
|
|
],
|
|
data = [":transitioned_go_test_x86_64"],
|
|
)
|
|
|
|
sh_test(
|
|
name = "test_go_test_is_arm64",
|
|
size = "small",
|
|
srcs = ["test_file_type_contains.sh"],
|
|
args = [
|
|
"$(rootpath :transitioned_go_test_arm64)",
|
|
"aarch64",
|
|
],
|
|
data = [":transitioned_go_test_arm64"],
|
|
)
|
|
|
|
go_library(
|
|
name = "transitions_lib",
|
|
srcs = ["main.go"],
|
|
importpath = "github.com/bazel-contrib/bazel-lib/lib/tests/transitions",
|
|
visibility = ["//visibility:private"],
|
|
)
|