
Most of the time spent compiling is spent optimizing and linking binary code. Most errors occur at the syntax or semantic (type) layers. Go's compiler is importable as a normal package, so we can do fast syntax and type checking for the 10 platforms we build on. This currently takes ~6 minutes of CPU time (parallelized). This makes presubmit cross builds superfluous, since it should catch most cross-build breaks (generally Unix and 64-bit assumptions). Example output: $ time go run test/typecheck/main.go type-checking: linux/amd64, windows/386, darwin/amd64, linux/arm, linux/386, windows/amd64, linux/arm64, linux/ppc64le, linux/s390x, darwin/386 ERROR(windows/amd64) pkg/proxy/ipvs/proxier.go:1708:27: ENXIO not declared by package unix ERROR(windows/386) pkg/proxy/ipvs/proxier.go:1708:27: ENXIO not declared by package unix real 0m45.083s user 6m15.504s sys 1m14.000s
52 lines
1.0 KiB
Python
52 lines
1.0 KiB
Python
package(default_visibility = ["//visibility:public"])
|
|
|
|
load(
|
|
"@io_bazel_rules_go//go:def.bzl",
|
|
"go_binary",
|
|
"go_library",
|
|
"go_test",
|
|
)
|
|
|
|
go_binary(
|
|
name = "list",
|
|
embed = [":go_default_library"],
|
|
)
|
|
|
|
go_library(
|
|
name = "go_default_library",
|
|
srcs = ["main.go"],
|
|
importpath = "k8s.io/kubernetes/test/typecheck",
|
|
deps = [
|
|
"//test/typecheck/srcimporter:go_default_library",
|
|
"//third_party/forked/golang/go/types:go_default_library",
|
|
"//vendor/golang.org/x/crypto/ssh/terminal:go_default_library",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "package-srcs",
|
|
srcs = glob(["**"]),
|
|
tags = ["automanaged"],
|
|
visibility = ["//visibility:private"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "all-srcs",
|
|
srcs = [
|
|
":package-srcs",
|
|
"//test/typecheck/srcimporter:all-srcs",
|
|
],
|
|
tags = ["automanaged"],
|
|
)
|
|
|
|
go_binary(
|
|
name = "typecheck",
|
|
embed = [":go_default_library"],
|
|
)
|
|
|
|
go_test(
|
|
name = "go_default_test",
|
|
srcs = ["main_test.go"],
|
|
embed = [":go_default_library"],
|
|
)
|