projects/guix·blob javascript-team · refs

875 lines · 33.0 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2026 Arthur Rodrigues <[email protected]>
3;;; Copyright © 2026 moksh <[email protected]>
4;;;
5;;; This file is part of GNU Guix.
6;;;
7;;; GNU Guix is free software; you can redistribute it and/or modify it
8;;; under the terms of the GNU General Public License as published by
9;;; the Free Software Foundation; either version 3 of the License, or (at
10;;; your option) any later version.
11;;;
12;;; GNU Guix is distributed in the hope that it will be useful, but
13;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15;;; GNU General Public License for more details.
16;;;
17;;; You should have received a copy of the GNU General Public License
18;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
19
20(define-module (gnu packages kubernetes)
21 #:use-module ((guix licenses) #:prefix license:)
22 #:use-module (guix build-system go)
23 #:use-module (guix gexp)
24 #:use-module (guix git-download)
25 #:use-module (guix packages)
26 #:use-module (guix utils)
27 #:use-module (gnu packages golang-build)
28 #:use-module (gnu packages golang-check)
29 #:use-module (gnu packages golang-crypto)
30 #:use-module (gnu packages golang-web)
31 #:use-module (gnu packages golang-xyz)
32 #:use-module (gnu packages prometheus))
33
34
35;;;
36;;; Libraries:
37;;;
38
39(define-public go-github-com-elastic-crd-ref-docs
40 (package
41 (name "go-github-com-elastic-crd-ref-docs")
42 (version "0.3.0")
43 (source
44 (origin
45 (method git-fetch)
46 (uri (git-reference
47 (url "https://github.com/elastic/crd-ref-docs")
48 (commit (string-append "v" version))))
49 (file-name (git-file-name name version))
50 (sha256
51 (base32 "0vg3zjcgcq04cbqc8sk638q9v5r62w8r8x22yl7g9blbbr13sj7s"))
52 (modules '((guix build utils)))
53 (snippet
54 #~(begin
55 ;; Submodules with their own go.mod files and packaged separately:
56 ;;
57 ;; - github.com/elastic/crd-ref-docs/test
58 (delete-file-recursively "test")))))
59 (build-system go-build-system)
60 (arguments
61 (list
62 #:skip-build? #t
63 #:import-path "github.com/elastic/crd-ref-docs"))
64 (native-inputs
65 (list go-github-com-stretchr-testify))
66 (propagated-inputs
67 (list go-github-com-goccy-go-yaml
68 go-github-com-masterminds-sprig-v3
69 go-github-com-spf13-cobra
70 go-golang-org-x-tools
71 go-go-uber-org-zap
72 go-k8s-io-apimachinery
73 go-sigs-k8s-io-controller-runtime
74 ;; go-sigs-k8s-io-gateway-api
75 go-sigs-k8s-io-controller-tools))
76 (home-page "https://github.com/elastic/crd-ref-docs")
77 (synopsis "Kubernetes CRD reference documentation generator")
78 (description
79 "This package generates API reference documentation by scanning a source
80tree for exported @acronym{CustomResourceDefinition, CRD} types.")
81 (license license:asl2.0)))
82
83(define-public go-go-etcd-io-etcd-client-v3
84 (package
85 (name "go-go-etcd-io-etcd-client-v3")
86 (version "3.6.7")
87 (source
88 (origin
89 (method git-fetch)
90 (uri (git-reference
91 (url "https://github.com/etcd-io/etcd")
92 (commit (go-version->git-ref version #:subdir "client"))))
93 (file-name (git-file-name name version))
94 (sha256
95 (base32 "0d9rjyl5h0xm9isgr8b2fz8528wk3pds71rjl8g08fgsmsa5kicb"))
96 (modules '((guix build utils)))
97 (snippet #~(begin
98 ;; Replace symlinks to tests with file contents
99 (for-each
100 (lambda (f)
101 (delete-file (string-append "client/v3/" f))
102 (copy-file (string-append
103 "tests/integration/clientv3/examples/" f)
104 (string-append "client/v3/" f)))
105 (list "example_auth_test.go"
106 "example_cluster_test.go"
107 "example_kv_test.go"
108 "example_lease_test.go"
109 "example_maintenance_test.go"
110 "example_metrics_test.go"
111 "example_test.go"
112 "example_watch_test.go"))
113 (for-each
114 (lambda (f)
115 (delete-file
116 (string-append "client/v3/concurrency/" f))
117 (copy-file
118 (string-append "tests/integration/clientv3/concurrency/" f)
119 (string-append "client/v3/concurrency/" f)))
120 (list "example_election_test.go"
121 "example_mutex_test.go"
122 "example_stm_test.go"))
123 ;; Copy sertificates for tests.
124 (mkdir-p "client/v3/tests/fixtures")
125 (substitute* "client/v3/yaml/config_test.go"
126 (("\\.\\./\\.\\./\\.\\./") "../"))
127 (for-each
128 (lambda (f)
129 (copy-file
130 (string-append "tests/fixtures/" f)
131 (string-append "client/v3/tests/fixtures/" f)))
132 (list "server.crt"
133 "server.key.insecure"
134 "ca.crt"))
135 ;; Keep source related to expected import-path.
136 (delete-all-but "." "client")
137 (delete-file-recursively "client/pkg")))))
138 (build-system go-build-system)
139 (arguments
140 (list
141 ;; TODO: Tests a shaky and fail a lot, check how run unittests.
142 #:tests? #f
143 #:import-path "go.etcd.io/etcd/client/v3"
144 #:unpack-path "go.etcd.io/etcd"))
145 (native-inputs
146 (list go-github-com-grpc-ecosystem-go-grpc-middleware-providers-prometheus
147 go-github-com-prometheus-client-golang
148 go-github-com-stretchr-testify
149 go-go-etcd-io-etcd-client-pkg-v3
150 go-go-uber-org-zap
151 go-google-golang-org-grpc))
152 (propagated-inputs
153 (list go-github-com-coreos-go-semver
154 go-github-com-dustin-go-humanize
155 go-github-com-grpc-ecosystem-go-grpc-middleware-v2
156 go-go-etcd-io-etcd-api-v3
157 go-sigs-k8s-io-yaml))
158 (home-page "https://github.com/etcd-io/etcd")
159 (synopsis "Golang client for ETCD")
160 (description
161 "This package implements the official Go client for etcd.")
162 (license license:asl2.0)))
163
164(define-public go-go-etcd-io-etcd-server-v3
165 (package
166 (name "go-go-etcd-io-etcd-server-v3")
167 (version "3.6.7")
168 (source
169 (origin
170 (method git-fetch)
171 (uri (git-reference
172 (url "https://github.com/etcd-io/etcd")
173 (commit (go-version->git-ref version
174 #:subdir "server"))))
175 (file-name (git-file-name name version))
176 (sha256
177 (base32 "0d9rjyl5h0xm9isgr8b2fz8528wk3pds71rjl8g08fgsmsa5kicb"))
178 (modules '((guix build utils)))
179 (snippet #~(begin
180 (delete-all-but "." "server")
181 (rename-file "server" "server.tmp")
182 (mkdir-p "server/v3")
183 (rename-file "server.tmp" "server/v3")))))
184 (build-system go-build-system)
185 (arguments
186 (list
187 #:skip-build? #t
188 #:tests? #f ;Setup fails
189 #:import-path "go.etcd.io/etcd/server/v3"
190 #:unpack-path "go.etcd.io/etcd"))
191 (propagated-inputs
192 (list go-github-com-coreos-go-semver
193 go-github-com-coreos-go-systemd-v22
194 go-github-com-dustin-go-humanize
195 go-github-com-gogo-protobuf
196 go-github-com-golang-groupcache
197 go-github-com-golang-jwt-jwt-v5
198 go-github-com-golang-protobuf
199 go-github-com-google-btree
200 go-github-com-google-go-cmp
201 go-github-com-grpc-ecosystem-go-grpc-middleware
202 go-github-com-grpc-ecosystem-go-grpc-middleware-providers-prometheus
203 go-github-com-grpc-ecosystem-grpc-gateway-v2
204 go-github-com-jonboulle-clockwork
205 go-github-com-prometheus-client-golang
206 go-github-com-prometheus-client-model
207 go-github-com-soheilhy-cmux
208 go-github-com-spf13-cobra
209 go-github-com-stretchr-testify
210 go-github-com-tmc-grpc-websocket-proxy
211 go-github-com-xiang90-probing
212 go-go-etcd-io-bbolt
213 go-go-etcd-io-etcd-client-v3
214 go-go-etcd-io-etcd-pkg-v3
215 go-go-etcd-io-raft-v3
216 go-go-opentelemetry-io-contrib-instrumentation-google-golang-org-grpc-otelgrpc
217 go-go-opentelemetry-io-otel
218 go-go-opentelemetry-io-otel-exporters-otlp-otlptrace
219 go-go-opentelemetry-io-otel-exporters-otlp-otlptrace-otlptracegrpc
220 go-go-opentelemetry-io-otel-sdk
221 go-go-uber-org-zap
222 go-golang-org-x-crypto
223 go-golang-org-x-net
224 go-golang-org-x-time
225 go-google-golang-org-genproto-googleapis-api
226 go-google-golang-org-grpc
227 go-google-golang-org-protobuf
228 go-gopkg-in-natefinch-lumberjack-v2
229 go-sigs-k8s-io-json
230 go-sigs-k8s-io-yaml))
231 (home-page "https://go.etcd.io/etcd")
232 (synopsis "Server package for ETCD")
233 (description
234 "This package provides a server for the ETCD distributed key-value storage
235system.")
236 (license license:asl2.0)))
237
238
239(define-public go-go-etcd-io-etcd-pkg-v3
240 (package
241 (name "go-go-etcd-io-etcd-pkg-v3")
242 (version "3.6.7")
243 (source
244 (origin
245 (method git-fetch)
246 (uri (git-reference
247 (url "https://github.com/etcd-io/etcd")
248 (commit (go-version->git-ref version
249 #:subdir "pkg"))))
250 (file-name (git-file-name name version))
251 (sha256
252 (base32 "0d9rjyl5h0xm9isgr8b2fz8528wk3pds71rjl8g08fgsmsa5kicb"))
253 (modules '((guix build utils)))
254 (snippet #~(begin
255 (delete-all-but "." "pkg")
256 (rename-file "pkg" "pkg.tmp")
257 (mkdir-p "pkg/v3")
258 (rename-file "pkg.tmp" "pkg/v3")))))
259 (build-system go-build-system)
260 (arguments
261 (list
262 #:skip-build? #t
263 #:tests? #f ;TODO: Tests hang, select some subset
264 #:import-path "go.etcd.io/etcd/pkg/v3"
265 #:unpack-path "go.etcd.io/etcd"))
266 (native-inputs
267 (list go-github-com-spf13-cobra
268 go-github-com-spf13-pflag
269 go-github-com-stretchr-testify))
270 (propagated-inputs
271 (list go-github-com-creack-pty
272 go-github-com-dustin-go-humanize
273 go-go-etcd-io-etcd-client-pkg-v3
274 go-go-uber-org-zap
275 go-google-golang-org-grpc))
276 (home-page "https://github.com/etcd-io/etcd")
277 (synopsis "Utility packages for etcd")
278 (description
279 "This package is a collection of utility packages used by etcd without
280being specific to etcd itself.")
281 (license license:asl2.0)))
282
283(define-public go-k8s-io-apiextensions-apiserver
284 (package
285 (name "go-k8s-io-apiextensions-apiserver")
286 (version "0.34.2")
287 (source
288 (origin
289 (method git-fetch)
290 (uri (git-reference
291 (url "https://github.com/kubernetes/apiextensions-apiserver")
292 (commit (string-append "v" version))))
293 (file-name (git-file-name name version))
294 (sha256
295 (base32 "0qng3q3n9169vhb99sm1fk4c834kvqhlvb97ivz0m1zn30fk9xqj"))))
296 (build-system go-build-system)
297 (arguments
298 (list
299 #:tests? #f ;FIXME: Tests hang
300 #:skip-build? #t
301 #:import-path "k8s.io/apiextensions-apiserver"
302 #:embed-files #~(list "authoring.tmpl")
303 #:phases
304 #~(modify-phases %standard-phases
305 (add-after 'unpack 'remove-examples
306 (lambda* (#:key import-path #:allow-other-keys)
307 (with-directory-excursion (string-append "src/" import-path)
308 (delete-file-recursively "examples")))))))
309 (native-inputs
310 (list go-github-com-spf13-cobra
311 go-github-com-spf13-pflag))
312 (propagated-inputs
313 (list go-github-com-emicklei-go-restful-v3
314 go-github-com-fxamacker-cbor-v2
315 go-github-com-gogo-protobuf
316 go-github-com-google-cel-go
317 go-github-com-google-gnostic-models
318 go-github-com-google-uuid
319 go-go-etcd-io-etcd-client-pkg-v3
320 go-go-etcd-io-etcd-client-v3
321 go-go-opentelemetry-io-otel
322 go-go-opentelemetry-io-otel-trace
323 go-go-yaml-in-yaml-v2
324 go-golang-org-x-sync
325 go-google-golang-org-grpc
326 go-google-golang-org-protobuf
327 go-gopkg-in-evanphx-json-patch-v4
328 go-k8s-io-api
329 go-k8s-io-apimachinery
330 go-k8s-io-apiserver
331 go-k8s-io-client-go
332 go-k8s-io-code-generator
333 go-k8s-io-component-base
334 go-k8s-io-klog-v2
335 go-k8s-io-kube-openapi
336 go-k8s-io-utils
337 go-sigs-k8s-io-json
338 go-sigs-k8s-io-randfill
339 go-sigs-k8s-io-structured-merge-diff-v6
340 go-sigs-k8s-io-yaml))
341 (home-page "https://k8s.io/apiextensions-apiserver")
342 (synopsis "API server for Kubernetes API extensions")
343 (description
344 "This API server provides the implementation for
345@code{CustomResourceDefinitions} which is included as delegate server inside
346of @code{kube-apiserver}.")
347 (license license:asl2.0)))
348
349(define-public go-k8s-io-apiserver
350 (package
351 (name "go-k8s-io-apiserver")
352 (version "0.34.2")
353 (source
354 (origin
355 (method git-fetch)
356 (uri (git-reference
357 (url "https://github.com/kubernetes/apiserver")
358 (commit (string-append "v" version))))
359 (file-name (git-file-name name version))
360 (sha256
361 (base32 "06bcbdnlhg1mwky6i1519n1nhlh8rxc9qv7jwqjhc03m2ql3bb8q"))))
362 (build-system go-build-system)
363 (arguments
364 (list
365 #:tests? #f ;TODO: Tests require unpackaged dependencies
366 #:embed-files
367 #~(list "authoring\\.tmpl" "api__v1_openapi\\.json")
368 #:import-path "k8s.io/apiserver"))
369 (native-inputs
370 (list go-github-com-stretchr-testify))
371 (propagated-inputs
372 (list go-github-com-blang-semver-v4
373 go-github-com-coreos-go-oidc
374 go-github-com-coreos-go-systemd-v22
375 go-github-com-emicklei-go-restful-v3
376 go-github-com-fsnotify-fsnotify
377 go-github-com-go-logr-logr
378 go-github-com-gogo-protobuf
379 go-github-com-google-btree
380 go-github-com-google-cel-go
381 go-github-com-google-gnostic-models
382 go-github-com-google-go-cmp
383 go-github-com-google-uuid
384 go-github-com-gorilla-websocket
385 go-github-com-grpc-ecosystem-go-grpc-prometheus
386 go-github-com-munnerz-goautoneg
387 go-github-com-mxk-go-flowrate
388 go-github-com-spf13-pflag
389 go-go-etcd-io-etcd-api-v3
390 go-go-etcd-io-etcd-client-pkg-v3
391 go-go-etcd-io-etcd-client-v3
392 go-go-etcd-io-etcd-server-v3
393 go-go-opentelemetry-io-contrib-instrumentation-google-golang-org-grpc-otelgrpc
394 go-go-opentelemetry-io-contrib-instrumentation-net-http-otelhttp
395 go-go-opentelemetry-io-otel
396 go-go-opentelemetry-io-otel-exporters-otlp-otlptrace-otlptracegrpc
397 go-go-opentelemetry-io-otel-metric
398 go-go-opentelemetry-io-otel-sdk
399 go-go-opentelemetry-io-otel-trace
400 go-go-uber-org-zap
401 go-golang-org-x-crypto
402 go-golang-org-x-net
403 go-golang-org-x-sync
404 go-golang-org-x-sys
405 go-golang-org-x-time
406 go-google-golang-org-genproto-googleapis-api
407 go-google-golang-org-grpc
408 go-google-golang-org-protobuf
409 go-gopkg-in-evanphx-json-patch-v4
410 go-gopkg-in-go-jose-go-jose-v2
411 go-gopkg-in-natefinch-lumberjack-v2
412 go-k8s-io-api
413 go-k8s-io-apimachinery
414 go-k8s-io-client-go
415 go-k8s-io-component-base
416 go-k8s-io-klog-v2
417 go-k8s-io-kms
418 go-k8s-io-kube-openapi
419 go-k8s-io-utils
420 go-sigs-k8s-io-apiserver-network-proxy-konnectivity-client
421 go-sigs-k8s-io-json
422 go-sigs-k8s-io-randfill
423 go-sigs-k8s-io-structured-merge-diff-v6
424 go-sigs-k8s-io-yaml))
425 (home-page "https://github.com/kubernetes/apiserver")
426 (synopsis "Library for building a Kubernetes aggregated API server")
427 (description
428 "This package provides a generic library for building a Kubernetes
429aggregated API server.")
430 (license license:asl2.0)))
431
432(define-public go-k8s-io-code-generator
433 (package
434 (name "go-k8s-io-code-generator")
435 (version "0.35.0")
436 (source
437 (origin
438 (method git-fetch)
439 (uri (git-reference
440 (url "https://github.com/kubernetes/code-generator")
441 (commit (string-append "v" version))))
442 (file-name (git-file-name name version))
443 (sha256
444 (base32 "16v8r1l8nm4m3s94ck1r7j0n7m5rkxj8bxb7a9m5zmrkp7s6wldq"))))
445 (build-system go-build-system)
446 (arguments
447 (list
448 #:import-path "k8s.io/code-generator"
449 #:unpack-path "k8s.io/code-generator"
450 #:phases
451 #~(modify-phases %standard-phases
452 (add-after 'unpack 'remove-examples
453 (lambda* (#:key unpack-path #:allow-other-keys)
454 (with-directory-excursion (string-append "src/" unpack-path)
455 (delete-file-recursively "examples")))))))
456 (native-inputs
457 (list go-github-com-google-go-cmp
458 go-github-com-spf13-pflag))
459 (propagated-inputs
460 (list go-github-com-gogo-protobuf
461 go-github-com-google-gnostic-models
462 go-go-yaml-in-yaml-v2
463 go-golang-org-x-text
464 go-k8s-io-apimachinery
465 go-k8s-io-gengo-v2
466 go-k8s-io-klog-v2
467 go-k8s-io-kube-openapi
468 go-k8s-io-utils
469 go-sigs-k8s-io-randfill))
470 (home-page "https://k8s.io/code-generator")
471 (synopsis "Code generator for Kubernetes API types")
472 (description
473 "Golang code-generators used to implement
474@url{https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md,
475Kubernetes-style API types}.")
476 (license license:asl2.0)))
477
478(define-public go-k8s-io-component-base
479 (package
480 (name "go-k8s-io-component-base")
481 (version "0.34.1")
482 (source
483 (origin
484 (method git-fetch)
485 (uri (git-reference
486 (url "https://github.com/kubernetes/component-base")
487 (commit (string-append "v" version))))
488 (file-name (git-file-name name version))
489 (sha256
490 (base32 "090ghb66zh4mln9fvp89vfq0g4pysm5y4lrp5n6801491mngyndm"))))
491 (build-system go-build-system)
492 (arguments
493 (list
494 #:test-flags
495 #~(list "-skip" "Tracing")
496 #:import-path "k8s.io/component-base"))
497 (native-inputs
498 (list go-github-com-stretchr-testify))
499 (propagated-inputs
500 (list go-github-com-blang-semver-v4
501 go-github-com-go-logr-logr
502 go-github-com-go-logr-zapr
503 go-github-com-google-go-cmp
504 go-github-com-moby-term
505 go-github-com-prometheus-client-golang
506 go-github-com-prometheus-client-model
507 go-github-com-prometheus-common
508 go-github-com-prometheus-procfs
509 go-github-com-spf13-cobra
510 go-github-com-spf13-pflag
511 go-go-opentelemetry-io-contrib-instrumentation-net-http-otelhttp
512 go-go-opentelemetry-io-otel
513 go-go-opentelemetry-io-otel-exporters-otlp-otlptrace
514 go-go-opentelemetry-io-otel-exporters-otlp-otlptrace-otlptracegrpc
515 go-go-opentelemetry-io-otel-sdk
516 go-go-opentelemetry-io-otel-trace
517 go-go-uber-org-zap
518 go-go-yaml-in-yaml-v2
519 go-golang-org-x-sys
520 go-golang-org-x-text
521 go-k8s-io-apimachinery
522 go-k8s-io-client-go
523 go-k8s-io-klog-v2
524 go-k8s-io-utils
525 go-sigs-k8s-io-json))
526 (home-page "https://github.com/kubernetes/component-base")
527 (synopsis "Kubernetes core components Golang source code")
528 (description
529 "This package contains shared code for Kubernetes core components.")
530 (license license:asl2.0)))
531
532(define-public go-k8s-io-kubelet
533 (package
534 (name "go-k8s-io-kubelet")
535 (version "0.36.3")
536 (source
537 (origin
538 (method git-fetch)
539 (uri (git-reference
540 (url "https://github.com/kubernetes/kubelet")
541 (commit (string-append "v" version))))
542 (file-name (git-file-name name version))
543 (sha256
544 (base32 "0n9f79yvk1gly15ach4l5wfxy9wwq5zj3qrgr57893zizyqrpn5i"))))
545 (build-system go-build-system)
546 (arguments
547 (list
548 #:import-path "k8s.io/kubelet"))
549 (native-inputs
550 (list go-github-com-stretchr-testify))
551 (propagated-inputs
552 (list go-google-golang-org-grpc
553 go-google-golang-org-protobuf
554 go-k8s-io-api
555 go-k8s-io-apimachinery
556 go-k8s-io-component-base))
557 (home-page "https://k8s.io/kubelet")
558 (synopsis "Kubelet component configs")
559 (description
560 "This package provides external, versioned ComponentConfig API types for
561configuring the kubelet.")
562 (license license:asl2.0)))
563
564(define-public go-sigs-k8s-io-apiserver-network-proxy-konnectivity-client
565 (package
566 (name "go-sigs-k8s-io-apiserver-network-proxy-konnectivity-client")
567 (version "0.34.0")
568 (source
569 (origin
570 (method git-fetch)
571 (uri (git-reference
572 (url "https://github.com/kubernetes-sigs/apiserver-network-proxy")
573 (commit (go-version->git-ref version
574 #:subdir "konnectivity-client"))))
575 (file-name (git-file-name name version))
576 (sha256
577 (base32 "1kh92blfpmrmklxqg5j0p07yz534gjzhm44xj8bh5pad3y5zw5m0"))))
578 (build-system go-build-system)
579 (arguments
580 (list
581 #:skip-build? #t
582 #:import-path "sigs.k8s.io/apiserver-network-proxy/konnectivity-client"
583 #:unpack-path "sigs.k8s.io/apiserver-network-proxy"))
584 (native-inputs
585 (list go-go-uber-org-goleak))
586 (propagated-inputs
587 (list go-github-com-prometheus-client-golang
588 go-google-golang-org-grpc
589 go-google-golang-org-protobuf
590 go-k8s-io-klog-v2))
591 (home-page "https://sigs.k8s.io/apiserver-network-proxy")
592 (synopsis "Network proxy for Kubernetes API server")
593 (description
594 "This package provides a network proxy for the Kubernetes API server.")
595 (license license:asl2.0)))
596
597(define-public go-sigs-k8s-io-controller-runtime
598 (package
599 (name "go-sigs-k8s-io-controller-runtime")
600 (version "0.22.4")
601 (source
602 (origin
603 (method git-fetch)
604 (uri (git-reference
605 (url "https://github.com/kubernetes-sigs/controller-runtime")
606 (commit (string-append "v" version))))
607 (file-name (git-file-name name version))
608 (sha256
609 (base32 "0z5wbcmmcngwxxg9krz3sqp739fv8c73s2v84dibbqc86ag05q8i"))))
610 (build-system go-build-system)
611 (arguments
612 (list
613 #:import-path "sigs.k8s.io/controller-runtime"
614 #:embed-files #~(list "authoring.tmpl")
615 #:test-flags
616 #~(list "-skip" (string-join
617 ;; XXX: Check why these tests fail.
618 (list "TestAdmissionWebhook"
619 "TestApiMachinery"
620 "TestBuilder"
621 "TestClient"
622 "TestControllerutil"
623 "TestEventhandler"
624 "TestIntegration"
625 "TestLazyRestMapperProvider"
626 "TestManager"
627 "TestReconcile"
628 "TestRecorder"
629 "TestSource"
630 "TestVersioning"
631 "TestWorkflows")
632 "|"))))
633 (native-inputs
634 (list go-github-com-google-go-cmp
635 go-github-com-onsi-ginkgo-v2
636 go-github-com-onsi-gomega
637 go-github-com-spf13-afero
638 go-go-uber-org-goleak))
639 (propagated-inputs
640 (list go-github-com-evanphx-json-patch-v5
641 go-github-com-fsnotify-fsnotify
642 go-github-com-go-logr-logr
643 go-github-com-go-logr-zapr
644 go-github-com-google-btree
645 go-github-com-google-gofuzz
646 go-github-com-prometheus-client-golang
647 go-github-com-prometheus-client-model
648 go-go-uber-org-zap
649 go-golang-org-x-mod
650 go-golang-org-x-sync
651 go-golang-org-x-sys
652 go-gomodules-xyz-jsonpatch-v2
653 go-gopkg-in-evanphx-json-patch-v4
654 go-k8s-io-api
655 go-k8s-io-apiextensions-apiserver
656 go-k8s-io-apimachinery
657 go-k8s-io-apiserver
658 go-k8s-io-client-go
659 go-k8s-io-klog-v2
660 go-k8s-io-utils
661 go-sigs-k8s-io-structured-merge-diff-v6
662 go-sigs-k8s-io-yaml))
663 (home-page "https://sigs.k8s.io/controller-runtime")
664 (synopsis "Kubernetes controller-runtime Project")
665 (description
666 "Package controllerruntime provides tools to construct Kubernetes-style
667controllers that manipulate both Kubernetes CRDs and aggregated/built-in
668Kubernetes APIs.")
669 (license license:asl2.0)))
670
671(define-public go-sigs-k8s-io-controller-tools
672 (package
673 (name "go-sigs-k8s-io-controller-tools")
674 (version "0.19.0")
675 (source
676 (origin
677 (method git-fetch)
678 (uri (git-reference
679 (url "https://github.com/kubernetes-sigs/controller-tools")
680 (commit (string-append "v" version))))
681 (file-name (git-file-name name version))
682 (sha256
683 (base32 "1n6vc681bhhk972l1ijg7m01xy3zvi5i17y6fhac1m7bs7rrgz1l"))
684 (modules '((guix build utils)))
685 (snippet
686 #~(begin
687 ;; Submodules with their own go.mod files and packaged separately:
688 ;;
689 ;; - github.com/google/cel-go/codelab
690 (for-each delete-file-recursively
691 (list "pkg/crd/testdata"
692 "pkg/loader/testmod"
693 "pkg/webhook/testdata"
694 "pkg/deepcopy/testdata"
695 "pkg/schemapatcher/testdata"
696 "pkg/applyconfiguration/testdata/cronjob"))))))
697 (build-system go-build-system)
698 (arguments
699 (list
700 #:skip-build? #t
701 #:test-flags
702 #~(list "-skip" (string-join
703 ;; Expected success, but got an error:
704 ;; <*fs.PathError | 0xc000314a20>:
705 ;; chdir ./testdata: no such file or directory
706 ;; {
707 ;; Op: "chdir",
708 ;; Path: "./testdata",
709 ;; Err: <syscall.Errno>0x2,
710 ;; }
711 ;; 0 Passed | 1 Failed
712 (list "TestObjectGeneration"
713 ;; 23 Passed | 19 Failed
714 "TestCRDGeneration"
715 ;; validation_test.go:118:
716 ;; failed to create validator:
717 ;; open ./testdata/testdata.kubebuilder.io_oneofs.yaml:
718 ;; no such file or directory
719 "TestOneOfConstraints"
720 ;; 3 Passed | 8 Failed
721 "TestLoader"
722 ;; 0 Passed | 2 Failed
723 "TestInPlaceCRDSchemaGeneration"
724 ;; 0 Passed | 11 Failed
725 "TestWebhookGeneration"
726 ;; 1 Passed | 1 Failed
727 "TestVersioning")
728 "|"))
729 #:import-path "sigs.k8s.io/controller-tools"
730 #:embed-files
731 #~(list "authoring.tmpl")))
732 (native-inputs
733 (list go-github-com-google-go-cmp
734 go-github-com-onsi-ginkgo
735 go-github-com-onsi-gomega))
736 (propagated-inputs
737 (list go-github-com-fatih-color
738 go-github-com-gobuffalo-flect
739 go-github-com-spf13-cobra
740 go-github-com-spf13-pflag
741 go-golang-org-x-tools
742 go-golang-org-x-tools-go-packages-packagestest
743 go-gopkg-in-yaml-v2
744 go-gopkg-in-yaml-v3
745 go-k8s-io-api
746 go-k8s-io-apiextensions-apiserver
747 go-k8s-io-apimachinery
748 go-k8s-io-apiserver
749 go-k8s-io-code-generator
750 go-k8s-io-gengo-v2
751 go-k8s-io-utils
752 go-sigs-k8s-io-yaml))
753 (home-page "https://sigs.k8s.io/controller-tools")
754 (synopsis "Kubernetes controller-tools Project")
755 (description
756 "The Kubernetes controller-tools Project is a set of go libraries for building
757Controllers.")
758 (license license:asl2.0)))
759
760
761;;;
762;;; Executables:
763;;;
764
765(define-public etcd-server
766 (package/inherit go-go-etcd-io-etcd-server-v3
767 (name "etcd-server")
768 (arguments
769 (substitute-keyword-arguments arguments
770 ((#:tests? #f #t) #f)
771 ((#:install-source? #t #t) #f)
772 ((#:skip-build? #t #t) #f)
773 ((#:phases phases '%standard-phases)
774 #~(modify-phases #$phases
775 (add-after 'install 'fix-bin-name
776 (lambda _
777 (rename-file (string-append #$output "/bin/v3")
778 (string-append #$output "/bin/etcd-server"))))))))
779 (native-inputs (package-propagated-inputs go-go-etcd-io-etcd-server-v3))
780 (propagated-inputs '())
781 (inputs '())))
782
783(define-public kubernetes-apiserver
784 (package/inherit go-k8s-io-apiextensions-apiserver
785 (name "kubernetes-apiserver")
786 (arguments
787 (substitute-keyword-arguments arguments
788 ((#:tests? #f #t) #f)
789 ((#:install-source? #t #t) #f)
790 ((#:skip-build? #t #t) #f)))
791 (native-inputs
792 (append (package-native-inputs go-k8s-io-apiextensions-apiserver)
793 (package-propagated-inputs go-k8s-io-apiextensions-apiserver)))
794 (propagated-inputs '())
795 (inputs '())))
796
797(define-public kubernetes-code-generator
798 (package/inherit go-k8s-io-code-generator
799 (name "kubernetes-code-generator")
800 (arguments
801 (substitute-keyword-arguments arguments
802 ((#:tests? _ #t) #f)
803 ((#:install-source? _ #t) #f)
804 ((#:skip-build? _ #t) #f)
805 ((#:import-path _) "k8s.io/code-generator/cmd/...")))
806 (native-inputs (package-propagated-inputs go-k8s-io-code-generator))
807 (propagated-inputs '())
808 (inputs '())
809 (description
810 "This package provides Kubernetes code generators command line interface
811tools:
812@itemize
813@item @command{applyconfiguration-gen} - is a tool for auto-generating apply
814builder functions
815@item @command{client-gen} - makes the individual typed clients using gengo
816@item @command{conversion-gen} - is a tool for auto-generating functions that
817convert between internal and external types
818@item @command{deepcopy-gen} - is a tool for auto-generating DeepCopy functions
819@item @command{defaulter-gen} - is a tool for auto-generating Defaulter functions
820@item @command{go-to-protobuf} - generates a Protobuf @acronym{Interface
821Definition Language, IDL} from a Go struct, respecting any existing IDL tags
822on the Go struct
823@item @command{informer-gen}
824@item @command{lister-gen}
825@item @command{prerelease-lifecycle-gen} - is a tool for auto-generating
826api-status.csv files
827@item @command{register-gen}
828@item @command{validation-gen} - is a tool for auto-generating Validation
829functions
830@end itemize")))
831
832(define-public kubernetes-controller-tools
833 (package/inherit go-sigs-k8s-io-controller-tools
834 (name "kubernetes-controller-tools")
835 (arguments
836 (substitute-keyword-arguments arguments
837 ((#:import-path _) "sigs.k8s.io/controller-tools/cmd/...")
838 ((#:install-source? #t #t) #f)
839 ((#:skip-build? #t #t) #f)
840 ((#:tests? #t #t) #f)
841 ((#:unpack-path _ "") "sigs.k8s.io/controller-tools")))
842 (native-inputs
843 (package-propagated-inputs go-sigs-k8s-io-controller-tools))
844 (propagated-inputs '())
845 (inputs '())
846 (description
847 "This package provides helper commands to work with Kubernetes (k8s):
848@itemize:
849@item @command{controller-gen} - generates Kubernetes API extension resources
850and code
851@item @command{helpgen} - generates marker help using @command{godoc}, based
852on the presence of a particular marker
853@item @command{type-scaffold} - scaffolds out basic bits of a Kubernetes type
854@end itemize
855
856For the Go library, refer to go-sigs-k8s-io-controller-tools package.")))
857
858(define-public kubernetes-crd-ref-docs
859 (package/inherit go-github-com-elastic-crd-ref-docs
860 (name "kubernetes-crd-ref-docs")
861 (arguments
862 (substitute-keyword-arguments arguments
863 ((#:install-source? #t #t) #f)
864 ((#:skip-build? #t #t) #f)
865 ((#:tests? #t #t) #f)))
866 (native-inputs
867 (package-propagated-inputs go-github-com-elastic-crd-ref-docs))
868 (propagated-inputs '())
869 (inputs '())))
870
871;;;
872;;; Avoid adding new packages to the end of this file. To reduce the chances
873;;; of a merge conflict, place them above in alphabetic order:
874;;; guix import --insert=gnu/packages/python-xyz.scm pypi <package-name>.
875;;;