blob: 068ba57cc2b261236c78a3befc6814d788ffc01a [file] [log] [blame]
Tim Windelschmidte5e90a82024-07-17 23:46:22 +02001go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk")
2go_sdk.download(version = "1.22.5")
3go_sdk.nogo(nogo = "//build/analysis:nogo")
4
5go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps")
6go_deps.from_file(go_mod = "//:go.mod")
7
8# All *direct* Go dependencies of the module have to be listed explicitly.
9# This list can be automatically updated by running "bazel mod tidy".
10use_repo(
11 go_deps,
12 "co_honnef_go_tools",
13 "com_4d63_gocheckcompilerdirectives",
14 "com_github_adrg_xdg",
15 "com_github_cavaliergopher_cpio",
16 "com_github_cenkalti_backoff_v4",
17 "com_github_cockroachdb_cockroach_go_v2",
18 "com_github_container_storage_interface_spec",
19 "com_github_containerd_containerd",
20 "com_github_containernetworking_plugins",
Tim Windelschmidte5e90a82024-07-17 23:46:22 +020021 "com_github_coreos_go_semver",
22 "com_github_corverroos_commentwrap",
23 "com_github_diskfs_go_diskfs",
24 "com_github_docker_distribution",
25 "com_github_go_delve_delve",
26 "com_github_golang_migrate_migrate_v4",
27 "com_github_google_cel_go",
28 "com_github_google_certificate_transparency_go",
29 "com_github_google_go_cmp",
30 "com_github_google_go_tpm",
31 "com_github_google_go_tpm_tools",
32 "com_github_google_gopacket",
33 "com_github_google_nftables",
34 "com_github_google_uuid",
35 "com_github_iancoleman_strcase",
36 "com_github_improbable_eng_grpc_web",
37 "com_github_insomniacslk_dhcp",
38 "com_github_joho_godotenv",
39 "com_github_kballard_go_shellquote",
40 "com_github_kevinburke_go_bindata",
41 "com_github_klauspost_compress",
42 "com_github_lib_pq",
43 "com_github_mattn_go_shellwords",
44 "com_github_mdlayher_arp",
45 "com_github_mdlayher_ethernet",
46 "com_github_mdlayher_ethtool",
47 "com_github_mdlayher_genetlink",
48 "com_github_mdlayher_kobject",
49 "com_github_mdlayher_netlink",
50 "com_github_mdlayher_packet",
Jan Schär4a180222024-07-29 16:32:54 +020051 "com_github_miekg_dns",
Tim Windelschmidte5e90a82024-07-17 23:46:22 +020052 "com_github_mitchellh_go_wordwrap",
53 "com_github_opencontainers_go_digest",
54 "com_github_opencontainers_runc",
55 "com_github_packethost_packngo",
56 "com_github_pkg_errors",
57 "com_github_pkg_sftp",
58 "com_github_prometheus_client_golang",
59 "com_github_prometheus_node_exporter",
60 "com_github_pseudomuto_protoc_gen_doc",
61 "com_github_rmohr_bazeldnf",
62 "com_github_sbezverk_nfproxy",
63 "com_github_spf13_cobra",
64 "com_github_spf13_pflag",
65 "com_github_sqlc_dev_sqlc",
66 "com_github_stretchr_testify",
67 "com_github_vishvananda_netlink",
68 "com_github_yalue_native_endian",
69 "com_google_cloud_go_storage",
70 "com_zx2c4_golang_wireguard_wgctrl",
71 "dev_gvisor_gvisor",
72 "io_etcd_go_etcd_api_v3",
73 "io_etcd_go_etcd_client_pkg_v3",
74 "io_etcd_go_etcd_client_v3",
75 "io_etcd_go_etcd_server_v3",
76 "io_etcd_go_etcd_tests_v3",
77 "io_k8s_api",
78 "io_k8s_apimachinery",
79 "io_k8s_apiserver",
80 "io_k8s_cli_runtime",
81 "io_k8s_client_go",
82 "io_k8s_code_generator",
83 "io_k8s_component_base",
84 "io_k8s_klog_v2",
85 "io_k8s_kubectl",
86 "io_k8s_kubelet",
87 "io_k8s_kubernetes",
88 "io_k8s_pod_security_admission",
Jan Schära48bd3c2024-07-29 17:22:18 +020089 "io_k8s_utils",
Tim Windelschmidte5e90a82024-07-17 23:46:22 +020090 "net_starlark_go",
91 "org_golang_google_genproto_googleapis_api",
92 "org_golang_google_grpc",
93 "org_golang_google_protobuf",
94 "org_golang_x_crypto",
95 "org_golang_x_mod",
96 "org_golang_x_net",
97 "org_golang_x_sync",
98 "org_golang_x_sys",
99 "org_golang_x_text",
100 "org_golang_x_time",
101 "org_golang_x_tools",
102 "org_uber_go_multierr",
103 "org_uber_go_zap",
104)
105
106# Instead of defining a gazelle/module override for every dependency, we have a
107# big dict containing all of them.
108OVERRIDES = {
109 "github.com/containerd/cgroups": {
110 "directives": [
111 "gazelle:proto disable",
112 ],
113 },
114 "github.com/containerd/containerd": {
115 "directives": [
116 "gazelle:proto disable",
117 "gazelle:build_tags no_btrfs,no_zfs",
118 ],
119 "pre_patches": [
120 # We build with newer CRI API definitions.
121 "//third_party/go/patches:containerd-grpc-inherit-unimplemented.patch",
122 ],
123 },
124 "github.com/containerd/cgroups/v3": {
125 "directives": [
126 "gazelle:proto disable",
127 ],
128 },
129 "github.com/containerd/nri": {
130 "directives": [
131 "gazelle:proto disable",
132 ],
133 },
134 "github.com/gogo/protobuf": {
135 "directives": [
136 "gazelle:proto disable",
137 ],
138 },
139 "github.com/google/cel-go": {
140 "build_file_generation": "on",
141 "directives": [
142 "gazelle:go_naming_convention go_default_library",
143 ],
144 },
145 "github.com/google/go-tpm-tools": {
146 "directives": [
147 "gazelle:proto file",
148 ],
149 "pre_patches": [
150 "//third_party/go/patches:go-tpm-tools-fix-proto-paths.patch",
151 ],
152 },
153 "github.com/googleapis/gax-go/v2": {
154 "directives": [
155 "gazelle:proto disable",
156 ],
157 },
158 "github.com/Microsoft/hcsshim": {
159 "directives": [
160 "gazelle:proto disable",
161 ],
162 },
163 "github.com/opencontainers/runc": {
164 "directives": [
165 "gazelle:build_tags seccomp",
166 ],
167 "patches": [
168 "//third_party/go/patches:runc-add-cdeps.patch",
169 ],
170 },
171 "github.com/prometheus/node_exporter": {
172 "directives": [
173 "gazelle:build_tags nobtrfs,nozfs,notapestats,norapl",
174 ],
175 },
176 "github.com/pseudomuto/protoc-gen-doc": {
177 "directives": [
178 "gazelle:resolve go github.com/mwitkow/go-proto-validators @com_github_mwitkow_go_proto_validators//:validators_golang",
179 ],
180 "pre_patches": [
181 "//third_party/go/patches:protoc-gen-doc-no-gogo.patch",
182 ],
183 },
184 "github.com/pseudomuto/protokit": {
185 "directives": [
186 "gazelle:proto disable",
187 ],
188 },
189 "github.com/google/cadvisor": {
190 "directives": [
191 "gazelle:proto disable_global",
192 ],
193 },
194 "github.com/sqlc-dev/sqlc": {
195 "build_extra_args": [
196 "-exclude=internal/ext/wasm/wasm.go",
197 ],
198 "directives": [
199 "gazelle:proto disable",
200 ],
201 },
202 "github.com/containerd/ttrpc": {
203 "directives": [
204 "gazelle:proto disable",
205 ],
206 },
207 "go.etcd.io/etcd/api/v3": {
208 "directives": [
209 "gazelle:proto disable",
210 ],
211 },
212 "go.etcd.io/etcd/raft/v3": {
213 "directives": [
214 "gazelle:proto disable",
215 ],
216 },
217 "go.etcd.io/etcd/server/v3": {
218 "directives": [
219 "gazelle:proto disable",
220 ],
221 "patches": [
222 "//third_party/go/patches:etcd-fix-embed-close.patch",
223 ],
224 },
225 "github.com/grpc-ecosystem/grpc-gateway": {
226 # Force generation of new build files for this package, required due to changes in how gazelle handles @go_googleapis.
227 "build_file_generation": "on",
228 "directives": [
229 "gazelle:exclude **/**_test.go",
230 "gazelle:exclude examples",
231 "gazelle:resolve go github.com/grpc-ecosystem/grpc-gateway/internal //internal",
232 "gazelle:resolve go github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options //protoc-gen-swagger/options",
233 "gazelle:proto disable_global",
234 ],
235 },
236 "k8s.io/api": {
237 "directives": [
238 "gazelle:proto disable",
239 ],
240 },
241 "k8s.io/apiextensions-apiserver": {
242 "directives": [
243 "gazelle:proto disable",
244 ],
245 },
246 "k8s.io/apiserver": {
247 "directives": [
248 "gazelle:proto disable",
249 ],
250 },
251 "k8s.io/cri-api": {
252 "directives": [
253 "gazelle:proto disable",
254 ],
255 },
256 "k8s.io/kube-aggregator": {
257 "directives": [
258 "gazelle:proto disable",
259 ],
260 },
261 "k8s.io/kubelet": {
262 "directives": [
263 "gazelle:proto disable",
264 ],
265 "patches": [
266 "//third_party/go/patches:kubelet-fix-path.patch",
267 ],
268 },
269 "k8s.io/kubernetes": {
270 "directives": [
271 "gazelle:proto disable",
272 "gazelle:build_tags providerless,dockerless",
273 ],
274 "patches": [
275 "//third_party/go/patches:k8s-native-metrics.patch",
276 "//third_party/go/patches:k8s-removed-block-device-pseudo-locks.patch",
277 "//third_party/go/patches:k8s-add-pause-build-file.patch",
278 "//third_party/go/patches:k8s-reserve-metropolis-ports-import.patch",
279 ],
280 "pre_patches": [
281 "//third_party/go/patches:k8s-drop-legacy-log-path.patch",
282 "//third_party/go/patches:k8s-reserve-metropolis-ports.patch",
283 ],
284 },
285 "k8s.io/metrics": {
286 "directives": [
287 "gazelle:proto disable",
288 ],
289 },
290 "google.golang.org/genproto/googleapis/api": {
291 "directives": [
292 "gazelle:proto disable_global",
293 ],
294 },
295 "google.golang.org/genproto/googleapis/rpc": {
296 "directives": [
297 "gazelle:proto disable_global",
298 ],
299 },
300 "google.golang.org/grpc": {
301 "directives": [
302 "gazelle:proto disable",
303 ],
304 },
305 "github.com/pingcap/tidb/parser": {
306 "build_file_generation": "on",
307 },
308 "golang.org/x/mod": {
309 "build_extra_args": [
310 "-go_naming_convention=import_alias",
311 "-go_naming_convention_external=import_alias",
312 ],
313 },
314 "golang.org/x/sync": {
315 "build_extra_args": [
316 "-go_naming_convention=import_alias",
317 "-go_naming_convention_external=import_alias",
318 ],
319 },
320 "github.com/containernetworking/cni": {
321 "patches": [
322 "//third_party/go/patches:cni-fix-cachepath.patch",
323 ],
324 },
Tim Windelschmidte5e90a82024-07-17 23:46:22 +0200325 "github.com/corverroos/commentwrap": {
326 "patches": [
327 "//third_party/go/patches:commentwrap-uri.patch",
328 ],
329 },
330 "github.com/go-delve/delve": {
331 "patches": [
332 "//third_party/go/patches:delve-fix-cgo.patch",
333 ],
334 },
335 "github.com/pganalyze/pg_query_go/v4": {
336 "patches": [
337 "//third_party/go/patches:pganalyze-add-cdeps.patch",
338 ],
339 },
340 "github.com/sbezverk/nfproxy": {
341 "pre_patches": [
342 "//third_party/go/patches:nfproxy-adapt-to-k8s-1.28.patch",
343 ],
344 },
345 "k8s.io/kubectl": {
346 "patches": [
347 "//third_party/go/patches:kubectl-fix-embed.patch",
348 ],
349 },
350 "github.com/seccomp/libseccomp-golang": {
351 "patches": [
352 "//third_party/go/patches:libseccomp.patch",
353 ],
354 },
355 "github.com/vishvananda/netlink": {
356 "patches": [
357 "//third_party/go/patches:netlink-permhwaddr.patch",
358 "//third_party/go/patches:netlink-use-rtm_setlink.patch",
359 ],
360 },
361 "gvisor.dev/gvisor": {
362 "patches": [
363 "//third_party/go/patches:gvisor-fix-syslog.patch",
364 # Gazelle doesn't understand conditional build files.
365 # https://github.com/bazelbuild/bazel-gazelle/issues/1262
366 "//third_party/go/patches:gvisor-fix-gazelle-debug-builds.patch",
367 ],
368 "pre_patches": [
369 "//third_party/go/patches:gvisor-containerd-compat.patch",
370 # Modified patch for the go branch.
371 # Upstream issue https://github.com/google/gvisor/issues/9039
372 # Upstream patch https://github.com/google/gvisor/commit/62afa160fe8ad17302d43f7c6016061de57c7f4d
373 "//third_party/go/patches:gvisor-fix-debug-builds.patch",
374 ],
375 },
376 "go.etcd.io/etcd/tests/v3": {
377 "patches": [
378 "//third_party/go/patches:etcd-integration-logging.patch",
379 ],
380 },
381 "k8s.io/mount-utils": {
382 "pre_patches": [
383 "//third_party/go/patches:k8s-native-mounter.patch",
384 ],
385 },
386 "golang.org/x/tools": {
387 "patches": [
388 "//third_party/go/patches:goimports-group-merging.patch",
389 ],
390 },
391}
392
393# MODULE.bazel doesn't support loops, but since we have lots of overrides,
394# this is the more readable approach.
395[
396 [
397 go_deps.gazelle_override(
398 build_extra_args = overrides.get("build_extra_args") or [],
399 build_file_generation = overrides.get("build_file_generation") or "auto",
400 directives = overrides.get("directives") or [],
401 path = path,
402 ),
403 go_deps.module_override(
404 patch_strip = 1,
405 patches = overrides.get("patches") or [],
406 path = path,
407 pre_patches = overrides.get("pre_patches") or [],
408 ),
409 ]
410 for path, overrides in OVERRIDES.items()
411]