projects/guix·blob java-team · refs

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