mirror of
https://github.com/tweag/gomod2nix.git
synced 2024-11-05 01:59:08 +00:00
Use the highest compatible Go version whenever possible
It should be generally safe to compile any older Go project with a newer compiler and in the few cases where it isn't it could be manually passed.
This commit is contained in:
parent
6c4e4b7f57
commit
36f0c54655
1 changed files with 10 additions and 4 deletions
|
@ -126,16 +126,22 @@ let
|
|||
''
|
||||
);
|
||||
|
||||
# Select Go attribute based on version specified in go.mod
|
||||
# Return a Go attribute and error out if the Go version is older than was specified in go.mod.
|
||||
selectGo = attrs: goMod: attrs.go or (if goMod == null then pkgs.go else
|
||||
(
|
||||
let
|
||||
goVersion = goMod.go;
|
||||
goAttr = "go_" + (replaceStrings [ "." ] [ "_" ] goVersion);
|
||||
goAttrs = lib.reverseList (builtins.filter
|
||||
(
|
||||
attr: lib.hasPrefix "go_" attr && lib.versionAtLeast pkgs.${attr}.version goVersion
|
||||
)
|
||||
(lib.attrNames pkgs));
|
||||
goAttr = elemAt goAttrs 0;
|
||||
in
|
||||
(
|
||||
if hasAttr goAttr pkgs then pkgs.${goAttr}
|
||||
else trace "go.mod specified Go version ${goVersion} but doesn't exist. Falling back to ${pkgs.go.version}." pkgs.go
|
||||
if goAttrs != [ ]
|
||||
then pkgs.${goAttr}
|
||||
else throw "go.mod specified Go version ${goVersion}, but no compatible Go attribute could be found."
|
||||
)
|
||||
));
|
||||
|
||||
|
|
Loading…
Reference in a new issue