Skip to content

Commit 686c491

Browse files
authored
Merge pull request kubernetes#73930 from ixdy/bazel-cgo-crossbuild
bazel: initial support for cross-compilation
2 parents b5566c7 + 4485b5c commit 686c491

File tree

23 files changed

+792
-276
lines changed

23 files changed

+792
-276
lines changed

build/BUILD

Lines changed: 47 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package(default_visibility = ["//visibility:public"])
33
load("@io_bazel_rules_docker//container:container.bzl", "container_bundle", "container_image")
44
load("@io_k8s_repo_infra//defs:build.bzl", "release_filegroup")
55
load(":code_generation_test.bzl", "code_generation_test_suite")
6+
load(":platforms.bzl", "for_platforms")
67

78
code_generation_test_suite(
89
name = "code_generation_tests",
@@ -30,23 +31,38 @@ filegroup(
3031
# in build/common.sh.
3132
DOCKERIZED_BINARIES = {
3233
"cloud-controller-manager": {
33-
"base": "@debian-base-amd64//image",
34+
"base": select(for_platforms(
35+
for_node = "@debian-base-{ARCH}//image",
36+
only_os = "linux",
37+
)),
3438
"target": "//cmd/cloud-controller-manager:cloud-controller-manager",
3539
},
3640
"kube-apiserver": {
37-
"base": "@debian-base-amd64//image",
41+
"base": select(for_platforms(
42+
for_node = "@debian-base-{ARCH}//image",
43+
only_os = "linux",
44+
)),
3845
"target": "//cmd/kube-apiserver:kube-apiserver",
3946
},
4047
"kube-controller-manager": {
41-
"base": "@debian-base-amd64//image",
48+
"base": select(for_platforms(
49+
for_node = "@debian-base-{ARCH}//image",
50+
only_os = "linux",
51+
)),
4252
"target": "//cmd/kube-controller-manager:kube-controller-manager",
4353
},
4454
"kube-scheduler": {
45-
"base": "@debian-base-amd64//image",
55+
"base": select(for_platforms(
56+
for_node = "@debian-base-{ARCH}//image",
57+
only_os = "linux",
58+
)),
4659
"target": "//cmd/kube-scheduler:kube-scheduler",
4760
},
4861
"kube-proxy": {
49-
"base": "@debian-iptables-amd64//image",
62+
"base": select(for_platforms(
63+
for_node = "@debian-iptables-{ARCH}//image",
64+
only_os = "linux",
65+
)),
5066
"target": "//cmd/kube-proxy:kube-proxy",
5167
},
5268
}
@@ -55,9 +71,10 @@ DOCKERIZED_BINARIES = {
5571
name = binary + "-internal",
5672
base = meta["base"],
5773
cmd = ["/usr/bin/" + binary],
58-
debs = [
59-
"//build/debs:%s.deb" % binary,
60-
],
74+
debs = select(for_platforms(
75+
for_node = ["//build/debs:%s-{ARCH}.deb" % binary],
76+
only_os = "linux",
77+
)),
6178
stamp = True,
6279
symlinks = {
6380
# Some cluster startup scripts expect to find the binaries in /usr/local/bin,
@@ -102,51 +119,55 @@ release_filegroup(
102119
# KUBE_CLIENT_TARGETS
103120
release_filegroup(
104121
name = "client-targets",
105-
srcs = [
122+
conditioned_srcs = for_platforms(for_client = [
106123
"//cmd/kubectl",
107-
],
124+
]),
108125
)
109126

110127
# KUBE_NODE_TARGETS
111128
release_filegroup(
112129
name = "node-targets",
113-
srcs = [
130+
conditioned_srcs = for_platforms(for_node = [
114131
"//cmd/kube-proxy",
115132
"//cmd/kubeadm",
116133
"//cmd/kubelet",
117-
],
134+
]),
118135
)
119136

120137
# KUBE_SERVER_TARGETS
121138
# No need to duplicate CLIENT_TARGETS or NODE_TARGETS here,
122139
# since we include them in the actual build rule.
123140
release_filegroup(
124141
name = "server-targets",
125-
srcs = [
142+
conditioned_srcs = for_platforms(for_server = [
126143
"//cluster/gce/gci/mounter",
127144
"//cmd/cloud-controller-manager",
128145
"//cmd/hyperkube",
129146
"//cmd/kube-apiserver",
130147
"//cmd/kube-controller-manager",
131148
"//cmd/kube-scheduler",
132-
],
149+
]),
133150
)
134151

135152
# kube::golang::test_targets
136153
filegroup(
137154
name = "test-targets",
138-
srcs = [
139-
"//cmd/gendocs",
140-
"//cmd/genkubedocs",
141-
"//cmd/genman",
142-
"//cmd/genswaggertypedocs",
143-
"//cmd/genyaml",
144-
"//cmd/kubemark", # TODO: server platforms only
145-
"//cmd/linkcheck",
146-
"//test/e2e:e2e.test",
147-
"//test/e2e_node:e2e_node.test", # TODO: server platforms only
148-
"//vendor/github.com/onsi/ginkgo/ginkgo",
149-
],
155+
srcs = select(for_platforms(
156+
for_server = [
157+
"//cmd/kubemark",
158+
"//test/e2e_node:e2e_node.test_binary",
159+
],
160+
for_test = [
161+
"//cmd/gendocs",
162+
"//cmd/genkubedocs",
163+
"//cmd/genman",
164+
"//cmd/genswaggertypedocs",
165+
"//cmd/genyaml",
166+
"//cmd/linkcheck",
167+
"//test/e2e:e2e.test_binary",
168+
"//vendor/github.com/onsi/ginkgo/ginkgo",
169+
],
170+
)),
150171
)
151172

152173
# KUBE_TEST_PORTABLE

0 commit comments

Comments
 (0)