Use select to disable building static binaries if --cpu=darwin.

This change allows kubectl to be built on MacOS machines using
`bazel build //cmd/kubectl`.

Mac OS X doesn't support static binaries because it does not have a
stable syscall API. Userspace binaries are expected to dynamically
link against libcrt instead.

https://developer.apple.com/library/content/qa/qa1118/_index.html
This commit is contained in:
John Millikin 2017-08-14 09:50:42 -07:00
parent bc1a58ae3a
commit 046a6ce6bb
No known key found for this signature in database
GPG Key ID: 1F7686B8DA217791

View File

@ -7,12 +7,17 @@ load("//pkg/version:def.bzl", "version_x_defs")
go_binary( go_binary(
name = "kubectl", name = "kubectl",
gc_linkopts = [ gc_linkopts = select({
"-linkmode", # Mac OS X doesn't support static binaries:
"external", # https://developer.apple.com/library/content/qa/qa1118/_index.html
"-extldflags", "@io_bazel_rules_go//go/platform:darwin_amd64": [],
"-static", "//conditions:default": [
], "-linkmode",
"external",
"-extldflags",
"-static",
],
}),
library = ":go_default_library", library = ":go_default_library",
visibility = [ visibility = [
"//build/visible_to:COMMON_release", "//build/visible_to:COMMON_release",