From 33cd7d6033c90ff2771b4cab76489f49214ed77a Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Tue, 18 Mar 2025 18:16:57 +0100 Subject: [PATCH] kubectl: add v1.30.0 -> v1.32.3 (#49082) * kubectl: add all versions currently supported upstream * kubectl: build same way as kubernetes * kubectl: revert back to GoPackage * kubectl: fix version command * kubectl: add v1.30.11, v1.31.7, v1.32.3 * kubectl: remove new deprecated versions * kubectl: refactor build deps --- .../repos/builtin/packages/kubectl/package.py | 66 ++++++++++++++++--- 1 file changed, 57 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/kubectl/package.py b/var/spack/repos/builtin/packages/kubectl/package.py index b79e1d02abc..adde886788b 100644 --- a/var/spack/repos/builtin/packages/kubectl/package.py +++ b/var/spack/repos/builtin/packages/kubectl/package.py @@ -11,20 +11,68 @@ class Kubectl(GoPackage): """ homepage = "https://kubernetes.io" - url = "https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.27.0.tar.gz" + url = "https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.32.2.tar.gz" maintainers("alecbcs") license("Apache-2.0") - version("1.32.0", sha256="3793859c53f09ebc92e013ea858b8916cc19d7fe288ec95882dada4e5a075d08") - version("1.31.1", sha256="83094915698a9c24f93d1ffda3f17804a4024d3b65eabf681e77a62b35137208") - version("1.31.0", sha256="6679eb90815cc4c3bef6c1b93f7a8451bf3f40d003f45ab57fdc9f8c4e8d4b4f") - version("1.27.1", sha256="3a3f7c6b8cf1d9f03aa67ba2f04669772b1205b89826859f1636062d5f8bec3f") - version("1.27.0", sha256="536025dba2714ee5e940bb0a6b1df9ca97c244fa5b00236e012776a69121c323") + version("1.32.3", sha256="b1ed5abe78a626804aadc49ecb8ade6fd33b27ab8c23d43cd59dc86f6462ac09") + version("1.31.7", sha256="92005ebd010a8d4fe3a532444c4645840e0af486062611a4d9c8d862414c3f56") + version("1.30.11", sha256="f30e4082b6a554d4a2bfedd8b2308a5e6012287e15bec94f72987f717bab4133") - depends_on("bash", type="build") - depends_on("go@1.22:", type="build", when="@1.30:") - depends_on("go@1.23:", type="build", when="@1.32:") + with default_args(deprecated=True): + version( + "1.32.0", sha256="3793859c53f09ebc92e013ea858b8916cc19d7fe288ec95882dada4e5a075d08" + ) + version( + "1.31.1", sha256="83094915698a9c24f93d1ffda3f17804a4024d3b65eabf681e77a62b35137208" + ) + version( + "1.31.0", sha256="6679eb90815cc4c3bef6c1b93f7a8451bf3f40d003f45ab57fdc9f8c4e8d4b4f" + ) + version( + "1.27.1", sha256="3a3f7c6b8cf1d9f03aa67ba2f04669772b1205b89826859f1636062d5f8bec3f" + ) + version( + "1.27.0", sha256="536025dba2714ee5e940bb0a6b1df9ca97c244fa5b00236e012776a69121c323" + ) + + with default_args(type="build"): + depends_on("bash") + + depends_on("go@1.23:", when="@1.32:") + depends_on("go@1.22:", when="@1.30:") + depends_on("go@1.21:", when="@1.29:") + depends_on("go@1.20:", when="@1.27:") build_directory = "cmd/kubectl" + + # Required to correctly set the version + # Method discovered by following the trail below + # + # 1. https://github.com/kubernetes/kubernetes/blob/v1.32.2/Makefile#L1 + # 2. https://github.com/kubernetes/kubernetes/blob/v1.32.2/build/root/Makefile#L97 + # 3. https://github.com/kubernetes/kubernetes/blob/v1.32.2/hack/make-rules/build.sh#L25 + # 4. https://github.com/kubernetes/kubernetes/blob/v1.32.2/hack/lib/init.sh#L61 + # 5. https://github.com/kubernetes/kubernetes/blob/v1.32.2/hack/lib/version.sh#L151-L183 + @property + def build_args(self): + kube_ldflags = [ + f"-X 'k8s.io/client-go/pkg/version.gitVersion=v{self.version}'", + f"-X 'k8s.io/client-go/pkg/version.gitMajor={self.version.up_to(1)}'", + f"-X 'k8s.io/client-go/pkg/version.gitMinor={str(self.version).split('.')[1]}'", + f"-X 'k8s.io/component-base/version.gitVersion=v{self.version}'", + f"-X 'k8s.io/component-base/version.gitMajor={self.version.up_to(1)}'", + f"-X 'k8s.io/component-base/version.gitMinor={str(self.version).split('.')[1]}'", + ] + + args = super().build_args + + if "-ldflags" in args: + ldflags_index = args.index("-ldflags") + 1 + args[ldflags_index] = args[ldflags_index] + " " + " ".join(kube_ldflags) + else: + args.extend(["-ldflags", " ".join(kube_ldflags)]) + + return args