buildGoModule: add goSum attribute to make goModules rebuild (#399532)

This commit is contained in:
Tristan Ross 2025-04-22 11:11:44 -07:00 committed by GitHub
parent 5b2a429966
commit 902d4f604f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -37,6 +37,9 @@ lib.extendMkDerivation {
"buildGoModule: vendorHash is missing"
),
# The go.sum file to track which can cause rebuilds.
goSum ? null,
# Whether to delete the vendor folder supplied with the source.
deleteVendor ? false,
@ -69,13 +72,24 @@ lib.extendMkDerivation {
vendorHash
deleteVendor
proxyVendor
goSum
;
goModules =
if (finalAttrs.vendorHash == null) then
""
else
(stdenv.mkDerivation {
name = "${finalAttrs.name or "${finalAttrs.pname}-${finalAttrs.version}"}-go-modules";
name =
let
prefix = "${finalAttrs.name or "${finalAttrs.pname}-${finalAttrs.version}"}-";
# If "goSum" is supplied then it can cause "goModules" to rebuild.
# Attach the hash name of the "go.sum" file so we can rebuild when it changes.
suffix = lib.optionalString (
finalAttrs.goSum != null
) "-${(lib.removeSuffix "-go.sum" (lib.removePrefix "${builtins.storeDir}/" finalAttrs.goSum))}";
in
"${prefix}go-modules${suffix}";
nativeBuildInputs = (finalAttrs.nativeBuildInputs or [ ]) ++ [
go
@ -83,7 +97,7 @@ lib.extendMkDerivation {
cacert
];
inherit (finalAttrs) src modRoot;
inherit (finalAttrs) src modRoot goSum;
# The following inheritance behavior is not trivial to expect, and some may
# argue it's not ideal. Changing it may break vendor hashes in Nixpkgs and