From d2e710716a75a4e48ab86333f2c1766b07421c86 Mon Sep 17 00:00:00 2001 From: Colin Arnott Date: Mon, 12 Dec 2022 08:43:44 +0000 Subject: [PATCH] kubernetes-controller-tools: set version controller-gen likes to embed its internal version in generated files. As such, while the generated code is compile time equivalent to official releases, there is some thrashing if some users use nix and others us upstream artefacts. This change patches the version package and runtime value via ldflags. --- .../kubernetes-controller-tools/default.nix | 8 +++++++ .../kubernetes-controller-tools/version.patch | 23 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 pkgs/development/tools/kubernetes-controller-tools/version.patch diff --git a/pkgs/development/tools/kubernetes-controller-tools/default.nix b/pkgs/development/tools/kubernetes-controller-tools/default.nix index 6c1f1b7cfbee..aa3980510ddb 100644 --- a/pkgs/development/tools/kubernetes-controller-tools/default.nix +++ b/pkgs/development/tools/kubernetes-controller-tools/default.nix @@ -11,8 +11,16 @@ buildGoModule rec { sha256 = "sha256-244o+QZ0BGVe8t8AWf1wU6VHgYyzkATpr5ZTbZezk10="; }; + patches = [ ./version.patch ]; + vendorSha256 = "sha256-sVdSKu6TDGIDV2o+kuCvGCItbFe9MwlM2Qjiz8n2rZU="; + ldflags = [ + "-s" + "-w" + "-X sigs.k8s.io/controller-tools/pkg/version.version=v${version}" + ]; + doCheck = false; subPackages = [ diff --git a/pkgs/development/tools/kubernetes-controller-tools/version.patch b/pkgs/development/tools/kubernetes-controller-tools/version.patch new file mode 100644 index 000000000000..b86c3d69c3a9 --- /dev/null +++ b/pkgs/development/tools/kubernetes-controller-tools/version.patch @@ -0,0 +1,23 @@ +diff --git a/pkg/version/version.go b/pkg/version/version.go +index 09c8efcf..b9ec798a 100644 +--- a/pkg/version/version.go ++++ b/pkg/version/version.go +@@ -20,14 +20,12 @@ import ( + "runtime/debug" + ) + ++var version string ++ + // Version returns the version of the main module + func Version() string { +- info, ok := debug.ReadBuildInfo() +- if !ok || info == nil || info.Main.Version == "" { +- // binary has not been built with module support or doesn't contain a version. +- return "(unknown)" +- } +- return info.Main.Version ++ _ = debug.ReadBuildInfo ++ return version + } + + // Print prints the main module version on stdout.